Kubernetes кластерт гадаад үйлчилгээг хянах, бүртгэх

Kubernetes кластерт гадаад үйлчилгээг хянах, бүртгэх

Бүгдэд нь амжилт хүсье.

Гуравдагч талын үйлчилгээнүүдээс хэмжигдэхүүнүүдийг бүртгэх, цуглуулах талаар ерөнхий гарын авлагыг би онлайнаар олсонгүй. Kubernetes. Би шийдлээ нийтэлж байна. Энэ нийтлэлд та аль хэдийн ажилтай болсон гэж үздэг Prometheus болон бусад үйлчилгээ. Гадаад төлөв байдлын үйлчилгээний мэдээллийн эх сурвалжийн жишээ болгон DBMS-ийг ашиглана PostgreSQL саванд Docker. Компани нь багц менежерийг ашигладаг Helm, текстийн доор үүн дээр жишээнүүд байх болно. Бүхэл бүтэн шийдлийн хувьд бид ашигласан бүх үйлчилгээний үүрлэсэн диаграмыг багтаасан өөрсдийн диаграммыг бэлтгэж байна.

Мод бэлтгэх

Олон компаниуд лог цуглуулах, үзэх, төвлөрүүлэхийн тулд олон төрлийн технологи ашигладаг Elasticsearch + Logstash + кибана, 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 бүртгэлийн драйвер.

Та энэ нэмэлтийг бүх зүйл дээр суулгах ёстой Docker лог хүлээн авахыг хүссэн хостууд. Демонд дэвсгэрийг хэрхэн ашиглахыг хэлэх хэд хэдэн арга байдаг. Би драйверийг 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"
...

Илүү тодорхой болгохын тулд бид Endpoints ашиглан гадаад төлөв байдлын үйлчилгээний нэрийг бичих болно.

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 өгөгдлийг хүлээн авахын тулд Prometheus-ийг тохируулах нь дэд диаграм дахь утгыг засах замаар хийгддэг.

утгууд.yaml

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

Хүлээн авсан өгөгдлийг дүрслэхийн тулд тохирох хяналтын самбарыг суулгана уу
Графана өгөгдлийн эх сурвалжийг тохируулах. Үүнийг Grafana дэд диаграмм дахь утгуудаар дамжуулан хийж болно.

Энэ нь ямар харагдаж байна
Kubernetes кластерт гадаад үйлчилгээг хянах, бүртгэх

Энэхүү богино өгүүлэл нь энэхүү шийдлийн цаад санааг ойлгоход тань тусалж, Кубернетес кластерт Loki/Prometheus-д зориулсан гадаад үйлчилгээг хянах, бүртгэх цагийг хэмнэсэн гэж найдаж байна.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх