Ngawaskeun sareng logging jasa éksternal kana klaster Kubernetes

Ngawaskeun sareng logging jasa éksternal kana klaster Kubernetes

Wilujeng sumping ka sadayana.

Kuring teu acan mendakan pituduh umum online ngeunaan logging sareng ngumpulkeun métrik tina jasa pihak katilu kana sistem anu dipasang di Kubernetes. Kuring ngeposkeun solusi kuring. Artikel ieu nganggap yén anjeun geus boga gawe Prometheus sarta jasa lianna. Salaku conto sumber data pikeun layanan stateful éksternal, DBMS bakal dipaké PostgreSQL dina hiji wadah Docker. Perusahaan ngagunakeun manajer pakét helem, di handap dina téks bakal aya conto di dinya. Pikeun sakabéh solusi, urang nyiapkeun bagan urang sorangan, nu ngawengku grafik nested sadaya jasa dipaké.

logging

Seueur perusahaan nganggo tumpukan téknologi pikeun ngumpulkeun, ningali sareng sentralisasi log Elasticsearch + logstash + kibana, disingget ELK. Dina kasus urang, teu kudu indéks eusi na I dipaké hiji leuwih lightweight Loki. Éta sayogi salaku pakét Helm, kami nambihanana salaku subchart ku ngarobih nilai-nilai kanggo ingress sareng pv pikeun cocog sareng sistem kami.

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

Pikeun ngirim log ka hiji conto Loki pamakean Loki Docker Logging Supir.

Anjeun kedah masang tambihan ieu dina sadayana Docker host ti mana Anjeun hoyong nampa log. Aya sababaraha cara pikeun ngawartosan daemon kumaha ngagunakeun padding. Kuring milih supir di yaml Docker Tulis, anu mangrupa bagian Ansible buku kaulinan.

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

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

Métrik

Métrik dikumpulkeun tina PostgreSQL ngagunakeun postgres_exporter keur Prometheus. Neruskeun file di luhur Ansible buku kaulinan.

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

Pikeun kajelasan langkung ageung, kami bakal nyerat nami jasa stateful éksternal nganggo 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 }}

Ngonpigurasikeun Prometheus pikeun nampa data postgres_exporter dilakukeun ku cara ngédit nilai dina subchart.

nilai.yaml

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

Pikeun ngabayangkeun data anu ditampi, pasang Dashboard anu pas dina
grafana jeung ngonpigurasikeun sumber data. Ieu ogé tiasa dilakukeun ngaliwatan nilai-nilai dina subchart Grafana.

Kumaha Sigana mah
Ngawaskeun sareng logging jasa éksternal kana klaster Kubernetes

Abdi ngarepkeun tulisan pondok ieu ngabantosan anjeun ngartos ideu utama anu aya di balik solusi ieu sareng ngahémat waktos anjeun nalika nyetél monitoring sareng logging jasa éksternal pikeun Loki / Prometheus dina klaster Kubernetes.

sumber: www.habr.com

Tambahkeun komentar