Iwwerwaachung a Logbicher vun externe Servicer zum Kubernetes Cluster

Iwwerwaachung a Logbicher vun externe Servicer zum Kubernetes Cluster

Vill Gléck fir jiddereen.

Ech hunn keen generaliséierte Guide online fonnt fir d'Protokolléieren an d'Sammelen vun Metriken vun Drëtt-Partei Servicer a Systemer ze sammelen Kubernetes. Ech posten meng Léisung. Dësen Artikel gëtt ugeholl datt Dir schonn eng Aarbecht hutt Prometheus an aner Servicer. Als e Beispill vun enger Datequell fir en externe staatleche Service gëtt e DBMS benotzt PostgreSQL an engem Container Docker. D'Firma benotzt e Package Manager Helm, ënnen am Text ginn et Beispiller op et. Fir déi ganz Léisung preparéiere mir eis eegen Diagramm, déi nestéiert Charts vun all de benotzte Servicer enthält.

Logged

Vill Firmen benotzen e Stack vun Technologien fir Logbicher ze sammelen, ze gesinn an ze zentraliséieren Elastikerzuch + logstash + kibana, verkierzt als ELK. An eisem Fall ass et net néideg den Inhalt ze indexéieren an ech hunn e méi liicht benotzt Loki. Et ass verfügbar als Helm Package, mir hunn et als Ënnerdiagramm bäigefüügt andeems d'Wäerter fir Ingress a pv geännert ginn fir eise System ze passen.

Wäerter.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"

Fir Logbicher op eng Instanz ze schécken Loki benotzen Loki Docker Logging Driver.

Dir musst dësen Add-on op alles installéieren Docker Hosten aus deenen Dir Logbicher wëllt kréien. Et gi verschidde Weeër fir dem Daemon ze soen wéi de Padding benotzt gëtt. Ech wielt de Chauffer an yaml Docker Compose, deen Deel ass Sicht Spillbuch.

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

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

Metriken

Metriken gi vu PostgreSQL gesammelt benotzt postgres_exporter fir Prometheus. Weiderféieren vun der uewen Fichier Sicht Spillbuch.

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

Fir méi Kloerheet, schreiwen mir d'Nimm vun externen stateful Servicer mat 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 }}

De Prometheus konfiguréieren fir postgres_exporter Daten ze kréien gëtt gemaach andeems Dir Wäerter am Ënnerdiagramm ännert.

Wäerter.yaml

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

Fir déi kritt Donnéeën ze visualiséieren, installéiert de passenden Dashboard an
grafana a konfiguréieren Datequellen. Dëst kann och duerch Wäerter am Grafana Subchart gemaach ginn.

Wéi et ausgesäit
Iwwerwaachung a Logbicher vun externe Servicer zum Kubernetes Cluster

Ech hoffen, datt dëse kuerzen Artikel Iech gehollef huet d'Haaptideeën hannert dëser Léisung ze verstoen an Iech Zäit gespuert huet wann Dir d'Iwwerwaachung an d'Logéierung vun externe Servicer fir Loki / Prometheus an engem Kubernetes Cluster opstellt.

Source: will.com

Setzt e Commentaire