Надгледање и евидентирање спољних услуга у Кубернетес кластер

Надгледање и евидентирање спољних услуга у Кубернетес кластер

Срећно свима.

Нисам пронашао генерализовани водич на мрежи о евидентирању и прикупљању показатеља од услуга трећих страна у системе који су распоређени у Кубернетес. Објављујем своје решење. Овај чланак претпоставља да већ имате радни Прометеј и друге услуге. Као пример извора података за екстерну услугу са статусом, користиће се ДБМС ПостгреСКЛ у контејнеру лучки радник. Компанија користи менаџер пакета кормило, доле у ​​тексту биће примери о томе. За целокупно решење припремамо сопствени графикон који укључује угнежђене графиконе свих коришћених сервиса.

Логгинг

Многе компаније користе низ технологија за прикупљање, преглед и централизацију евиденције Еластицсеарцх + Логстасх + кибана, скраћено ЕЛК. У нашем случају, нема потребе за индексирањем садржаја и користио сам лакши локи. Доступан је као Хелм пакет, додали смо га као подграфикон тако што смо променили вредности за улаз и пв како би одговарали нашем систему.

вредности.иамл

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"

За слање евиденције инстанци локи коришћење Локи Доцкер драјвер за евидентирање.

Морате инсталирати овај додатак на све лучки радник хостове са којих желите да примате евиденције. Постоји неколико начина да кажете демону како да користи паддинг. Одаберем драјвер у иамл-у Доцкер Цомпосе, што је део Могуће плаибоок.

постгрес.иамл

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

где локи_урл: кубе-локи.екампле.домаин/локи/апи/в1/пусх

метрике

Метрике се прикупљају из ПостгреСКЛ-а помоћу постгрес_екпортер за Прометеј. Наставак горње датотеке Могуће плаибоок.

постгрес.иамл

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

Ради веће јасноће, писаћемо имена екстерних услуга са стањем помоћу крајњих тачака.

постгрес-сервице.иамл

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

Конфигурисање Прометхеуса да прима податке из постгрес_екпортер-а се врши изменом вредности у подграфу.

вредности.иамл

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

Да бисте визуелно приказали примљене податке, инсталирајте одговарајућу Дасхбоард
Графана и конфигурисати изворе података. Ово се такође може урадити преко вредности у подграфу Графана.

Како изгледа
Надгледање и евидентирање спољних услуга у Кубернетес кластер

Надам се да вам је овај кратак чланак помогао да разумете главне идеје иза овог решења и уштедио вам време при постављању надгледања и евидентирања спољних услуга за Локи/Прометхеус у Кубернетес кластеру.

Извор: ввв.хабр.цом

Додај коментар