Siveyans ak antre sèvis ekstèn nan gwoup Kubernetes la

Siveyans ak antre sèvis ekstèn nan gwoup Kubernetes la

Bon chans pou tout moun.

Mwen pa jwenn yon gid jeneralize sou entènèt sou anrejistreman ak kolekte paramèt ki soti nan sèvis twazyèm pati nan sistèm deplwaye nan Kubernetes. Mwen poste solisyon mwen an. Atik sa a sipoze ke ou deja gen yon travay Prometheus ak lòt sèvis. Kòm yon egzanp yon sous done pou yon sèvis ekstèn eta, yo pral itilize yon DBMS Postgrèskl nan yon veso Koupre. Konpayi an sèvi ak yon manadjè pake Helm, anba a nan tèks la pral gen egzanp sou li. Pou solisyon an antye, nou ap prepare pwòp tablo pa nou an, ki gen ladan tablo enbrike nan tout sèvis yo itilize yo.

Logging

Anpil konpayi itilize yon pil teknoloji pou kolekte, wè ak santralize mòso bwa Elasticsearch + logstash + kibana, abreje kòm ELK. Nan ka nou an, pa gen okenn nesesite pou endèks kontni an epi mwen te itilize yon pi lejè Loki. Li disponib kòm yon pake Helm, nou te ajoute li kòm yon subchart pa chanje valè yo pou antre ak pv adapte sistèm nou an.

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

Pou voye mòso bwa nan yon egzanp Loki itilize Loki Docker Logging Driver.

Ou dwe enstale sipleman sa a sou tout bagay Koupre gen tout pouvwa a kote ou vle resevwa mòso bwa. Gen plizyè fason pou di demon an kijan pou itilize padding la. Mwen chwazi chofè a nan yaml Docker Konpoze, ki fè pati Ansible liv jwèt.

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

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

Metrik

Paramèt yo kolekte nan PostgreSQL lè l sèvi avèk postgres_exporter pou Prometheus. Kontinyasyon dosye ki anwo a Ansible liv jwèt.

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

Pou pi klè, nou pral ekri non sèvis ekstèn ak eta yo lè l sèvi avèk 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 }}

Konfigirasyon Prometheus pou resevwa done postgres_exporter fèt pa koreksyon valè nan subchart la.

valè.yaml

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

Pou vizyalize done yo resevwa, enstale Dashboard ki apwopriye a nan
grafana ak konfigirasyon sous done yo. Sa a ka fè tou atravè valè nan subchart Grafana la.

Ki jan li sanble
Siveyans ak antre sèvis ekstèn nan gwoup Kubernetes la

Mwen espere ke atik kout sa a te ede w konprann lide prensipal yo dèyè solisyon sa a ak sove ou tan lè w ap mete siveyans ak antre nan sèvis ekstèn pou Loki/Prometheus nan yon gwoup Kubernetes.

Sous: www.habr.com

Add nouvo kòmantè