เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชฌเชพเชนเซเชฏ เชธเซ‡เชตเชพเช“เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช…เชจเซ‡ เชฒเซ‹เช—เชฟเช‚เช—

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชฌเชพเชนเซเชฏ เชธเซ‡เชตเชพเช“เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช…เชจเซ‡ เชฒเซ‹เช—เชฟเช‚เช—

เชฆเชฐเซ‡เช•เชจเซ‡ เชถเซเชญเช•เชพเชฎเชจเชพเช“.

เชฎเชพเช‚ เชคเซˆเชจเชพเชค เชธเชฟเชธเซเชŸเชฎเซ‹เชฎเชพเช‚ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชธเซ‡เชตเชพเช“เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‹เช—เซ€เช‚เช— เช…เชจเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชชเชฐ เชฎเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ เช‘เชจเชฒเชพเช‡เชจ เชฎเชณเซ€ เชจเชฅเซ€. เช•เซเชฏเซเชฌเชฐเซเชจเซ‡เชŸเชฟเชธ. เชนเซเช‚ เชฎเชพเชฐเซ‹ เช‰เช•เซ‡เชฒ เชชเซ‹เชธเซเชŸ เช•เชฐเซเช‚ เช›เซเช‚. เช† เชฒเซ‡เช– เชงเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชพเชฎ เช›เซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เช…เชจเซ‡ เช…เชจเซเชฏ เชธเซ‡เชตเชพเช“. เชฌเชพเชนเซเชฏ เชธเซเชŸเซ‡เชŸเชซเซเชฒ เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเชจเชพ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, DBMS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡ เชเชธเช•เซเชฏเซเชเชฒ เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเชพเช‚ Docker. เช•เช‚เชชเชจเซ€ เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชนเซ‡เชฒเซเชฎ, เชŸเซ‡เช•เซเชธเซเชŸเชฎเชพเช‚ เชจเซ€เชšเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชนเชถเซ‡. เชธเชฎเช—เซเชฐ เช‰เช•เซ‡เชฒ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ‹ เชชเซ‹เชคเชพเชจเซ‹ เชšเชพเชฐเซเชŸ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชœเซ‡เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชคเชฎเชพเชฎ เชธเซ‡เชตเชพเช“เชจเชพ เชจเซ‡เชธเซเชŸเซ‡เชก เชšเชพเชฐเซเชŸเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เชฒเซ‹เช—เซ€เช‚เช—

เช˜เชฃเซ€ เช•เช‚เชชเชจเซ€เช“ เชฒเซ‹เช— เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ, เชœเซ‹เชตเชพ เช…เชจเซ‡ เช•เซ‡เชจเซเชฆเซเชฐเซ€เชฏเช•เชฐเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชŸเซ‡เช•เชจเซ‹เชฒเซ‹เชœเซ€เชจเชพ เชธเซเชŸเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชธเซเชฅเชฟเชคเชฟเชธเซเชฅเชพเชชเช• เชถเซ‹เชง + เชฒเซ‹เช—เชธเซเชŸเซ‡เชถ + เช•เชฟเชฌเชพเชจเชพ, 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"

เชฆเชพเช–เชฒเชพ เชชเชฐ เชฒเซ‹เช— เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฒเซ‹เช•เซ€ เชตเชพเชชเชฐเชตเซ เชฒเซ‹เช•เซ€ เชกเซ‹เช•เชฐ เชฒเซ‹เช—เซ€เช‚เช— เชกเซเชฐเชพเชˆเชตเชฐ.

เชคเชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เชชเชฐ เช† เชเชก-เช“เชจ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ Docker เชนเซ‹เชธเซเชŸ เช•เซ‡ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชคเชฎเซ‡ เชฒเซ‹เช— เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹. เชกเชฟเชฎเชจเชจเซ‡ เชชเซ‡เชกเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡ เช•เชนเซ‡เชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡. เชนเซเช‚ yaml เชฎเชพเช‚ เชกเซเชฐเชพเชˆเชตเชฐ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚ เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช, เชœเซ‡ เชญเชพเช— เช›เซ‡ Ansible เชชเซเชฒเซ‡เชฌเซเช•

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 เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ. เช‰เชชเชฐเซ‹เช•เซเชค เชซเชพเช‡เชฒเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เชตเซเช‚ Ansible เชชเซเชฒเซ‡เชฌเซเช•

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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹