แƒ’แƒแƒ แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜ แƒ“แƒ แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜

แƒ’แƒแƒ แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜ แƒ“แƒ แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜

แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒก.

แƒ›แƒ” แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒ’แƒแƒœแƒ–แƒแƒ’แƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒ‘แƒ˜. แƒ›แƒ” แƒ•แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘ แƒฉแƒ”แƒ›แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒแƒก. แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒฅแƒ•แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒ›แƒ”แƒ—แƒ” แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜. แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒ แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ›แƒฌแƒ˜แƒคแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฌแƒงแƒแƒ แƒแƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ DBMS PostgreSQL แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ docker. แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒก แƒกแƒแƒญแƒ”แƒกแƒ—แƒแƒœ, แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ แƒ›แƒแƒกแƒ–แƒ”. แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒกแƒฅแƒ”แƒ›แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒš แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒก.

แƒฎแƒ”-แƒขแƒงแƒ”

แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒขแƒแƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ˜แƒก, แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“ แƒ“แƒ แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒšแƒแƒกแƒขแƒ˜แƒฃแƒ แƒ˜ แƒซแƒ”แƒ‘แƒœแƒ + แƒšแƒแƒ’แƒกแƒขแƒแƒจแƒ˜ + แƒ™แƒ˜แƒ‘แƒแƒœแƒ, แƒจแƒ”แƒ›แƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ— ELK. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ” แƒฃแƒคแƒ แƒ แƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒ˜ แƒฌแƒแƒœแƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” แƒšแƒแƒ™แƒ˜. แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ Helm-แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒฅแƒ•แƒ”แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒ— แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฆแƒฌแƒ”แƒ•แƒ˜แƒกแƒ แƒ“แƒ pv-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ—แƒ แƒ›แƒแƒ”แƒ แƒ’แƒแƒก แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก.

แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.yaml

ingress:
  enabled: true
  annotations:
     kubernetes.io/ingress.class: nginx
  hosts:
    - host: kube-loki.example.domain
      paths: 
        - /
  tls: []

....

persistence:
  type: pvc
  enabled: true
  accessModes:
    - ReadWriteOnce
  size: 100Gi
  finalizers:
    - kubernetes.io/pvc-protection
  existingClaim: "pv-loki"

แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ–แƒ” แƒšแƒแƒ™แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ Loki Docker Logging Driver.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ”แƒก แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ–แƒ” docker แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ”แƒ‘แƒ˜, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒ’แƒกแƒฃแƒ แƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒ–แƒ, แƒ แƒแƒ› แƒฃแƒ—แƒฎแƒ แƒแƒ— แƒ“แƒ”แƒ›แƒแƒœแƒก แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ‘แƒแƒšแƒ˜แƒจแƒ”แƒ‘แƒ˜. แƒ“แƒ แƒแƒ˜แƒ•แƒ”แƒ แƒก แƒ•แƒ˜แƒ แƒฉแƒ”แƒ• แƒ˜แƒแƒ›แƒšแƒจแƒ˜ Docker แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒ แƒฌแƒ˜แƒ’แƒœแƒ˜.

postgres.yaml

    - name: Run containers
      docker_compose:
        project_name: main-postgres
        definition:
          version: '3.7'
          services:
            p:
              image: "{{ postgres_version }}"
              container_name: postgresql
              restart: always
              volumes:
                - "{{ postgres_dir }}/data:/var/lib/postgresql/data"
                - "{{ postgres_dir }}/postgres_init_scripts:/docker-entrypoint-initdb.d"
              environment:
                POSTGRES_PASSWORD: {{ postgres_pass }}
                POSTGRES_USER: {{ postgres_user }}
              ports:
                - "{{ postgres_ip }}:{{ postgres_port }}:5432"
              logging:
                driver: "loki"
                options:
                  loki-url: "{{ loki_url }}"
                  loki-batch-size: "{{ loki_batch_size }}"
                  loki-retries: "{{ loki_retries }}"
...

แƒกแƒแƒ“แƒแƒช loki_url: kube-loki.example.domain/loki/api/v1/push

แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ

แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ PostgreSQL-แƒ“แƒแƒœ, แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒžแƒแƒกแƒขแƒ’แƒ แƒ”แƒกแƒ˜_แƒ”แƒฅแƒกแƒžแƒแƒ แƒขแƒ˜แƒแƒ แƒ˜ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒžแƒ แƒแƒ›แƒ”แƒ—แƒ”. แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒ แƒฌแƒ˜แƒ’แƒœแƒ˜.

postgres.yaml

...
            pexp:
              image: "wrouesnel/postgres_exporter"
              container_name: pexporter
              restart: unless-stopped
              environment:
                DATA_SOURCE_NAME: "postgresql://{{ postgres_user }}:{{ postgres_pass }}@p:5432/postgres?sslmode=disable"
              ports:
                - "{{ postgres_ip }}:{{ postgres_exporter_port }}:9187"
              logging:
                driver: "json-file"
                options:
                  max-size: "5m"
...

แƒ›แƒ”แƒขแƒ˜ แƒกแƒ˜แƒชแƒฎแƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ— แƒ’แƒแƒ แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ›แƒฌแƒ˜แƒคแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒก แƒ‘แƒแƒšแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

postgres-service.yaml

apiVersion: v1
kind: Endpoints
metadata:
  name: postgres-exporter
subsets:
  - addresses:
      - ip: {{ .Values.service.postgres.ip }}
    ports:
      - port: {{ .Values.service.postgres.port }}
        protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-exporter
  labels:
    chart:  "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
  ports:
    - protocol: TCP
      port: {{ .Values.service.postgres.port }}
      targetPort: {{ .Values.service.postgres.port }}

Prometheus-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ postgres_exporter-แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฅแƒ•แƒ”แƒกแƒฅแƒ”แƒ›แƒแƒจแƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—.

แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.yaml

scrape_configs:
...
  - job_name: postgres-exporter
    static_configs:
      - targets: 
         - postgres-exporter.applicationnamespace.svc.cluster.local:9187
        labels:
          alias: postgres
...

แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒคแƒ
แƒ’แƒ แƒแƒคแƒแƒœแƒ แƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜. แƒ”แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก Grafana แƒฅแƒ•แƒ”แƒกแƒฅแƒ”แƒ›แƒจแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ
แƒ’แƒแƒ แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜ แƒ“แƒ แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜

แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘, แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒ™แƒšแƒ” แƒกแƒขแƒแƒขแƒ˜แƒ แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ แƒแƒ› แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒ–แƒแƒ’แƒ” แƒ“แƒ แƒ Loki/Prometheus-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ แƒ“แƒ แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ