Il-monitoraġġ u l-illoggjar tas-servizzi esterni għall-cluster Kubernetes

Il-monitoraġġ u l-illoggjar tas-servizzi esterni għall-cluster Kubernetes

Xorti tajba lil kulħadd.

Ma sibtx gwida ġeneralizzata onlajn dwar il-qtugħ u l-ġbir ta' metriċi minn servizzi ta' partijiet terzi f'sistemi skjerati f' Kubernetes. Qed nipposta s-soluzzjoni tiegħi. Dan l-artikolu jassumi li diġà għandek xogħol Prometheus u servizzi oħra. Bħala eżempju ta' sors ta' dejta għal servizz estern b'stateful, se jintuża DBMS PostgreSQL f'kontenitur Docker. Il-kumpanija tuża maniġer tal-pakketti Helm, hawn taħt fit-test se jkun hemm eżempji fuqha. Għas-soluzzjoni kollha, qed inħejju ċ-ċart tagħna stess, li tinkludi ċ-ċarts nested tas-servizzi kollha użati.

Logging

Ħafna kumpaniji jużaw munzell ta 'teknoloġiji biex jiġbru, jaraw u jiċċentralizzaw zkuk Elasticsearch + logstash + kibana, imqassar bħala ELK. Fil-każ tagħna, m'hemmx bżonn li indiċi tal-kontenut u jien użajt aktar ħafif loki. Huwa disponibbli bħala pakkett Helm, żidna bħala subchart billi nbiddlu l-valuri għad-dħul u l-pv biex ikunu adattati għas-sistema tagħna.

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

Biex tibgħat zkuk lil istanza loki użu Loki Docker Logging Driver.

Trid tinstalla dan is-add-on fuq kollox Docker hosts li minnhom trid tirċievi zkuk. Hemm diversi modi kif tgħid lid-daemon kif juża l-ikkuttunar. Nagħżel is-sewwieq f'yaml Docker Ikteb, li hija parti Ansible playbook.

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

fejn loki_url: kube-loki.example.domain/loki/api/v1/push

Metriċi

Il-metriċi jinġabru minn PostgreSQL bl-użu postgres_exporter għall- Prometheus. Kontinwazzjoni tal-fajl ta' hawn fuq Ansible playbook.

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

Għal aktar ċarezza, aħna se niktbu l-ismijiet ta 'servizzi stateful esterni bl-użu ta' 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 }}

Il-konfigurazzjoni ta' Prometheus biex tirċievi data ta' postgres_exporter issir billi teditja l-valuri fis-subchart.

valuri.yaml

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

Biex tara d-dejta riċevuta, installa d-Dashboard xieraq ġewwa
grafana u kkonfigura s-sorsi tad-dejta. Dan jista 'jsir ukoll permezz ta' valuri fis-subchart Grafana.

Kif tidher
Il-monitoraġġ u l-illoggjar tas-servizzi esterni għall-cluster Kubernetes

Nittama li dan l-artikolu qasir għenek tifhem l-ideat ewlenin wara din is-soluzzjoni u ffrankalk il-ħin meta twaqqaf il-monitoraġġ u l-illoggjar ta 'servizzi esterni għal Loki/Prometheus fi cluster Kubernetes.

Sors: www.habr.com

Żid kumment