Vöktun og skráning ytri þjónustu við Kubernetes klasann

Vöktun og skráning ytri þjónustu við Kubernetes klasann

Gangi ykkur öllum vel.

Ég hef ekki fundið almenna leiðbeiningar á netinu um skráningu og söfnun mæligilda frá þjónustu þriðja aðila í kerfi sem eru notuð í Kubernetes. Ég birti lausnina mína. Þessi grein gerir ráð fyrir að þú hafir nú þegar vinnu Prometheus og aðra þjónustu. Sem dæmi um gagnagjafa fyrir utanaðkomandi ástandsþjónustu verður DBMS notað PostgreSQL í gámi Docker. Fyrirtækið notar pakkastjóra Helm, neðan í textanum verða dæmi um það. Fyrir alla lausnina erum við að útbúa okkar eigið töflu, sem inniheldur hreiður töflur yfir allar þjónusturnar sem notaðar eru.

Skógarhögg

Mörg fyrirtæki nota stafla af tækni til að safna, skoða og miðstýra annálum Elasticsearch + Logstash + kibana, skammstafað sem ELK. Í okkar tilviki er engin þörf á að skrá innihaldið og ég notaði léttari Loki. Það er fáanlegt sem Helm pakki, við bættum því við sem undirrit með því að breyta gildunum fyrir ingress og pv til að henta kerfinu okkar.

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

Til að senda logs til tilviks Loki nota Loki Docker skógarhöggsbílstjóri.

Þú verður að setja þessa viðbót á allt Docker vélar sem þú vilt fá logs frá. Það eru nokkrar leiðir til að segja púknum hvernig á að nota bólstrun. Ég velur bílstjórinn í yaml Docker Compose, sem er hluti Ansible leikbók.

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

þar sem loki_url: kube-loki.example.domain/loki/api/v1/push

Mælingar

Mælingum er safnað frá PostgreSQL með því að nota postgres_exporter í Prometheus. Framhald af ofangreindri skrá Ansible leikbók.

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

Fyrir meiri skýrleika munum við skrifa nöfn utanaðkomandi ríkisþjónustu með endapunktum.

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

Að stilla Prometheus til að taka á móti postgres_exporter gögnum er gert með því að breyta gildum í undirtöflunni.

gildi.yaml

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

Til að sjá móttekið gögn skaltu setja upp viðeigandi mælaborð í
grafana og stilla gagnagjafa. Þetta er einnig hægt að gera með gildum í Grafana undirtöflunni.

Hvernig það lítur út
Vöktun og skráning ytri þjónustu við Kubernetes klasann

Ég vona að þessi stutta grein hafi hjálpað þér að skilja helstu hugmyndirnar á bak við þessa lausn og spara þér tíma þegar þú setur upp eftirlit og skráningu á ytri þjónustu fyrir Loki/Prometheus í Kubernetes klasa.

Heimild: www.habr.com

Bæta við athugasemd