Мониторинг ва сабти хидматҳои беруна ба кластери Kubernetes

Мониторинг ва сабти хидматҳои беруна ба кластери Kubernetes

Муваффақият ба ҳама.

Ман дар интернет дастури умумӣ оид ба сабт ва ҷамъоварии ченакҳо аз хидматҳои тарафи сеюм ба системаҳои ҷойгиршуда пайдо накардаам. Кубернитель. Ман ҳалли худро интишор мекунам. Ин мақола тахмин мекунад, ки шумо аллакай коре доред Prometheus ва дигар хизматрасониҳо. Ҳамчун намунаи манбаи додаҳо барои хидмати берунии давлатӣ, DBMS истифода мешавад PostgreSQL дар як контейнер Доктор. Ширкат мудири бастаро истифода мебарад Helm, дар зер дар матни он мисолхо оварда мешаванд. Барои тамоми ҳалли он, мо диаграммаи шахсии худро омода карда истодаем, ки он диаграммаҳои дохилии ҳамаи хидматҳои истифодашударо дар бар мегирад.

Бақайдгирӣ

Бисёр ширкатҳо барои ҷамъоварӣ, дидан ва мутамарказ кардани гузоришҳо як қатор технологияҳоро истифода мебаранд Ҷустуҷӯи Elastics + Logstash + кибана, мухтасар ҳамчун ELK. Дар ҳолати мо, индексатсия кардани мундариҷа лозим нест ва ман вазни сабуктарро истифода кардам Локӣ. Он ҳамчун бастаи Helm дастрас аст, мо онро ҳамчун зерчарт бо тағир додани арзишҳо барои воридшавӣ ва pv барои мувофиқ кардани системаи мо илова кардем.

арзишхо.ямл

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"

Барои фиристодани гузоришҳо ба як мисол Локӣ истифода бурдан Ронандаи Logging Loki Docker.

Шумо бояд ин иловаро дар ҳама чиз насб кунед Доктор ҳостҳое, ки шумо мехоҳед аз онҳо гузоришҳо қабул кунед. Якчанд роҳҳо вуҷуд доранд, ки ба демон чӣ гуна истифода бурдани padding гӯянд. Ман драйверро дар 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 }}

Танзими Prometheus барои гирифтани маълумоти postgres_exporter тавассути таҳрири арзишҳо дар зерчарт анҷом дода мешавад.

арзишхо.ямл

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

Барои тасаввур кардани маълумоти гирифташуда, панели мувофиқро насб кунед
Графана ва манбаъҳои маълумотро танзим кунед. Инро инчунин тавассути арзишҳо дар зерчартияи Grafana анҷом додан мумкин аст.

Чӣ гуна аст
Мониторинг ва сабти хидматҳои беруна ба кластери Kubernetes

Умедворам, ки ин мақолаи кӯтоҳ ба шумо дар фаҳмидани ғояҳои асосии ин ҳалли масъала кӯмак кард ва ҳангоми ташкили мониторинг ва сабти хидматҳои беруна барои Loki/Prometheus дар кластери Kubernetes вақти шуморо сарфа кард.

Манбаъ: will.com

Илова Эзоҳ