Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдирд┐рдЧрд░рд╛рдиреА рд░ рд▓рдЧрд┐рдЩ

Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдирд┐рдЧрд░рд╛рдиреА рд░ рд▓рдЧрд┐рдЩ

рд╕рдмреИрд▓рд╛рдИ рд╢реБрднрдХрд╛рдордирд╛ред

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

рд▓рдЧрд┐рдЩ

рдзреЗрд░реИ рдХрдореНрдкрдиреАрд╣рд░реВрд▓реЗ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди, рд╣реЗрд░реНрди рд░ рдХреЗрдиреНрджреНрд░реАрдХреГрдд рдЧрд░реНрди рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рд╕реНрдЯреНрдпрд╛рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН 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"

рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рд▓рдЧрд╣рд░реВ рдкрдард╛рдЙрди рд▓реЛрдХреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд▓реЛрдХреА рдбрдХрд░ рд▓рдЧрд┐рдЩ рдЪрд╛рд▓рдХ.

рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИ рдХреБрд░рд╛рдорд╛ рдпреЛ рдПрдб-рдЕрди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫ рдбрдХрд░ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдЬрд╕рдмрд╛рдЯ рддрдкрд╛рдИрдБ рд▓рдЧрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫред рдкреНрдпрд╛рдбрд┐рдЩ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдбреЗрдордирд▓рд╛рдИ рдмрддрд╛рдЙрди рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреНред рдо yaml рдорд╛ рдЪрд╛рд▓рдХ рдЪрдпрди рдЧрд░реНрдЫреБ рдбрдХрд░ рд░рдЪрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рднрд╛рдЧ рд╣реЛ рдЕрдЬреНрдЮрд╛рдд рдкреНрд▓реЗрдмреБрдХред

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

postgres_exporter рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдп рд╕рдмрдЪрд╛рд░реНрдЯрдорд╛ рдорд╛рдирд╣рд░реВ рд╕рдореНрдкрд╛рджрди рдЧрд░реЗрд░ рдЧрд░рд┐рдиреНрдЫред

values.yaml

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

рдкреНрд░рд╛рдкреНрдд рдбрд╛рдЯрд╛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди, рдЙрдкрдпреБрдХреНрдд рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдЧреНрд░рд╛рдлрд╛рдирд╛ рд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ Grafana рд╕рдмрдЪрд╛рд░реНрдЯрдорд╛ рдорд╛рдирд╣рд░реВ рдорд╛рд░реНрдлрдд рдкрдирд┐ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдпреЛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ?
Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдирд┐рдЧрд░рд╛рдиреА рд░ рд▓рдЧрд┐рдЩ

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рдЫреЛрдЯреЛ рд▓реЗрдЦрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕ рд╕рдорд╛рдзрд╛рдирдХреЛ рдкрдЫрд╛рдбрд┐ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реЗрдХреЛ рдЫ рд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд▓реЛрдХреА/рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдЕрдиреБрдЧрдорди рд░ рд▓рдЧрд┐рдЩ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрджрд╛ рддрдкрд╛рдИрдВрдХреЛ рд╕рдордп рдмрдЪрдд рдЧрд░реЗрдХреЛ рдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди