Kuyang'anira ndikudula ntchito zakunja ku gulu la Kubernetes

Kuyang'anira ndikudula ntchito zakunja ku gulu la Kubernetes

Zabwino zonse kwa aliyense.

Sindinapeze chiwongolero chanthawi zonse pa intaneti pakudula mitengo ndikutolera ma metric kuchokera kuzinthu zamagulu ena kupita kumakina omwe atumizidwa Kubernetes. Ndikutumiza yankho langa. Nkhaniyi ikuganiza kuti muli ndi ntchito kale Prometheus ndi mautumiki ena. Monga chitsanzo cha gwero la deta la ntchito yakunja, DBMS idzagwiritsidwa ntchito PostgreSQL mu chidebe Docker. Kampaniyo imagwiritsa ntchito phukusi loyang'anira Helm, pansipa m'malembawo padzakhala zitsanzo pa izo. Kuti tipeze yankho lonse, tikukonzekera tchati chathu, chomwe chili ndi ma chart omwe ali pazigawo zonse zomwe zimagwiritsidwa ntchito.

Kudula mitengo

Makampani ambiri amagwiritsa ntchito matekinoloje angapo kuti atolere, kuwona ndikuyika zipika pakati Elasticsearch + Logstash + chibana, yofupikitsidwa ngati ELK. Kwa ife, palibe chifukwa cholozera zomwe zili ndipo ndidagwiritsa ntchito zopepuka kwambiri Loki. Imapezeka ngati phukusi la Helm, tidawonjezerapo ngati tchatichi posintha ma ingress ndi pv kuti zigwirizane ndi dongosolo lathu.

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

Kutumiza zipika ku chitsanzo Loki gwiritsani ntchito Loki Docker Logging Driver.

Muyenera kukhazikitsa chowonjezera ichi pa chilichonse Docker makamu omwe mukufuna kulandira zipika. Pali njira zingapo zouzira daemon momwe mungagwiritsire ntchito padding. Ndimasankha driver mu yaml Docker Kulemba, yomwe ili gawo Amatha buku lamasewera.

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

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

Metrics

Ma metric amasonkhanitsidwa kuchokera ku PostgreSQL pogwiritsa ntchito postgres_exporter chifukwa Prometheus. Kupitiliza wapamwamba wapamwamba Amatha buku lamasewera.

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

Kuti timveke bwino, tilemba mayina a ntchito zakunja zakunja pogwiritsa ntchito 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 }}

Kukonza Prometheus kuti alandire postgres_exporter data kumachitika ndikusintha ma chart mu subchart.

makhalidwe.yaml

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

Kuti muwonetsetse zomwe mwalandira, yikani Dashboard yoyenera mkati
grafana ndi kukonza magwero a deta. Izi zitha kuchitikanso kudzera pamakhalidwe a Grafana subchart.

Kodi zikuwoneka bwanji
Kuyang'anira ndikudula ntchito zakunja ku gulu la Kubernetes

Ndikukhulupirira kuti nkhaniyi yayifupi yakuthandizani kumvetsetsa malingaliro akulu kumbuyo kwa yankho ili ndikukupulumutsirani nthawi pokhazikitsa kuwunika ndikudula mitengo yantchito zakunja za Loki/Prometheus mgulu la Kubernetes.

Source: www.habr.com

Kuwonjezera ndemanga