рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдЖрдгрд┐ рд▓реЙрдЧрд┐рдВрдЧ

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдЖрдгрд┐ рд▓реЙрдЧрд┐рдВрдЧ

рд╕рд░реНрд╡рд╛рдВрдирд╛ рд╢реБрднреЗрдЪреНрдЫрд╛.

рдордзреНрдпреЗ рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдВрдордзреВрди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд▓реЙрдЧ рдЗрди рдХрд░рдгреЗ рдЖрдгрд┐ рдЧреЛрд│рд╛ рдХрд░рдгреЗ рдпрд╛рд╡рд░ рдорд▓рд╛ рдСрдирд▓рд╛рдЗрди рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╕рд╛рдкрдбрд▓рд╛ рдирд╛рд╣реА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕. рдореА рдорд╛рдЭрд╛ рдЙрдкрд╛рдп рдкреЛрд╕реНрдЯ рдХрд░рдд рдЖрд╣реЗ. рд╣рд╛ рд▓реЗрдЦ рдЧреГрд╣реАрдд рдзрд░рддреЛ рдХреА рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдХрд╛рдо рдЖрд╣реЗ Prometheus рдЖрдгрд┐ рдЗрддрд░ рд╕реЗрд╡рд╛. рдмрд╛рд╣реНрдп рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реЗрд╡реЗрд╕рд╛рдареА рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, DBMS рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдИрд▓ рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрдВрдЯреЗрдирд░ рдордзреНрдпреЗ рдЧреЛрджреА рдХрд╛рдордЧрд╛рд░. рдХрдВрдкрдиреА рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ рд╡рд╛рдкрд░рддреЗ рдкреНрд░рдореБрдЦрдкрджреА, рдЦрд╛рд▓реА рдордЬрдХреБрд░рд╛рдд рддреНрдпрд╛рд╡рд░ рдЙрджрд╛рд╣рд░рдгреЗ рдЕрд╕рддреАрд▓. рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рдирд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЖрдордЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ рддрдХреНрддрд╛ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЛрдд, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд╕реЗрд╡рд╛рдВрдЪреЗ рдиреЗрд╕реНрдЯреЗрдб рдЪрд╛рд░реНрдЯ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

рд▓реЙрдЧрд┐рдВрдЧ

рдЕрдиреЗрдХ рдХрдВрдкрдиреНрдпрд╛ рд▓реЙрдЧ рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рд╕реНрдЯреЕрдХ рд╡рд╛рдкрд░рддрд╛рдд Elasticsearch + рд▓реЙрдЧрд╕реНрдЯреЕрд╢ + рдХрд┐рдмрд╛рдирд╛, ELK рдореНрд╣рдгреВрди рд╕рдВрдХреНрд╖рд┐рдкреНрдд. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА рдЖрдгрд┐ рдореА рдЕрдзрд┐рдХ рд╣рд▓рдХреЗ рд╡рд╛рдкрд░рд▓реЗ рд▓реЛрдХреА. рд╣реЗ рд╣реЗрд▓реНрдо рдкреЕрдХреЗрдЬ рдореНтАНрд╣рдгреВрди рдЙрдкрд▓рдмреНтАНрдз рдЖрд╣реЗ, рдЖрдореНтАНрд╣реА рдЖрдордЪреНтАНрдпрд╛ рд╕рд┐рд╕реНтАНрдЯрдорд▓рд╛ рдЕрдиреБрдХреВрд▓ рд╣реЛрдгреНтАНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╡реЗрд╢ рдЖрдгрд┐ pv рдЪреА рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рдмрджрд▓реВрди рд╕рдмрдЪрд╛рд░реНрдЯ рдореНтАНрд╣рдгреВрди рдЬреЛрдбрд▓реЗ.

values.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"

рдПрдЦрд╛рджреНрдпрд╛ рдкреНрд░рд╕рдВрдЧрд╛рд╡рд░ рд▓реЙрдЧ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рд▓реЛрдХреА рд╡рд╛рдкрд░рд╛ рд▓реЛрдХреА рдбреЙрдХрд░ рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдпрд╡реНрд╣рд░.

рддреБрдореНрд╣реА рд╣реЗ рдЕреЕрдб-рдСрди рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрд╡рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЧреЛрджреА рдХрд╛рдордЧрд╛рд░ рд╣реЛрд╕реНрдЯ рдЬреНрдпрд╛рд╡рд░реВрди рддреБрдореНрд╣рд╛рд▓рд╛ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗрдд. рдкреЕрдбрд┐рдВрдЧ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ рд╣реЗ рдбрд┐рдордирд▓рд╛ рд╕рд╛рдВрдЧрдгреНрдпрд╛рдЪреЗ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рдореА рдпрд╛рдорд▓рдордзреНрдпреЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдирд┐рд╡рдбрддреЛ рдбреЙрдХрд░ рд▓рд┐рд╣рд┐рдгреЗ, рдЬреЛ рднрд╛рдЧ рдЖрд╣реЗ рдЙрддреНрддрд░ рджреНрдпрд╛ рдкреНрд▓реЗрдмреБрдХ

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_exporter рддреЗ Prometheus. рдЙрдкрд░реЛрдХреНрдд рдлрд╛рдИрд▓ рдЪрд╛рд▓реВ рдареЗрд╡рдгреЗ рдЙрддреНрддрд░ рджреНрдпрд╛ рдкреНрд▓реЗрдмреБрдХ

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 }}

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕_рдПрдХреНрд╕рдкреЛрд░реНрдЯрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рд╕рдмрдЪрд╛рд░реНрдЯрдордзреАрд▓ рдореВрд▓реНрдпреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

values.yaml

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

рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдпреЛрдЧреНрдп рдбреЕрд╢рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛
рдЧреНрд░рд╛рдлрд╛рдирд╛ рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛. рд╣реЗ рдЧреНрд░рд╛рдлрдирд╛ рд╕рдмрдЪрд╛рд░реНрдЯрдордзреАрд▓ рдореВрд▓реНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рддреЗ рдХрд╢рд╛рд╕рд╛рд░рдЦреЗ рджрд┐рд╕рддреЗ
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдЖрдгрд┐ рд▓реЙрдЧрд┐рдВрдЧ

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдпрд╛ рдЫреЛрдЯреНрдпрд╛ рд▓реЗрдЦрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рдЙрдкрд╛рдпрд╛рдорд╛рдЧреАрд▓ рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдд рдорджрдд рдХреЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд▓реЛрдХреА/рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рд╕рд╛рдареА рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдЖрдгрд┐ рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рддрд╛рдирд╛ рддреБрдордЪрд╛ рд╡реЗрд│ рд╡рд╛рдЪрд▓рд╛ рдЖрд╣реЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛