Abojuto ati wíwọlé awọn iṣẹ ita si iṣupọ Kubernetes

Abojuto ati wíwọlé awọn iṣẹ ita si iṣupọ Kubernetes

Orire fun gbogbo eniyan.

Emi ko rii itọsọna gbogbogbo lori ayelujara lori gedu ati gbigba awọn metiriki lati awọn iṣẹ ẹnikẹta sinu awọn eto ti a gbe lọ si Kubernetes. Mo n firanṣẹ ojutu mi. Nkan yii dawọle pe o ti ni iṣẹ tẹlẹ Ipolowo ati awọn iṣẹ miiran. Gẹgẹbi apẹẹrẹ orisun data kan fun iṣẹ ipinlẹ ita, DBMS yoo ṣee lo PostgreSQL ni a eiyan Docker. Ile-iṣẹ naa nlo oluṣakoso package Iranlọwọ, ni isalẹ ninu ọrọ yoo jẹ awọn apẹẹrẹ lori rẹ. Fun gbogbo ojutu, a ngbaradi apẹrẹ tiwa, eyiti o pẹlu awọn shatti itẹ-ẹiyẹ ti gbogbo awọn iṣẹ ti a lo.

Wọle

Ọpọlọpọ awọn ile-iṣẹ lo akopọ ti awọn imọ-ẹrọ lati gba, wo ati ṣe aarin awọn akọọlẹ Elasticsearch + Logstash + agbana, ti a kuru bi ELK. Ninu ọran wa, ko si iwulo lati ṣe atọka akoonu ati pe Mo lo iwuwo diẹ sii Loki. O wa bi package Helm kan, a ṣafikun rẹ bi iwe-ikawe nipasẹ yiyipada awọn iye fun ingress ati pv lati baamu eto wa.

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

Lati fi awọn akọọlẹ ranṣẹ si apẹẹrẹ Loki lilo Loki Docker wíwọlé Driver.

O gbọdọ fi sori ẹrọ yi afikun lori ohun gbogbo Docker ogun lati eyi ti o fẹ lati gba awọn àkọọlẹ. Awọn ọna pupọ lo wa lati sọ fun daemon bi o ṣe le lo padding naa. Mo yan awakọ ni yaml Docker Ṣawewe, eyi ti o jẹ apakan O ṣee iwe ere.

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

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

Awọn iwọn

Awọn wiwọn jẹ gbigba lati PostgreSQL ni lilo postgres_exporter fun Ipolowo. Ilọsiwaju faili ti o wa loke O ṣee iwe ere.

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

Fun alaye diẹ sii, a yoo kọ awọn orukọ ti awọn iṣẹ ipinlẹ ita ni lilo Awọn aaye ipari.

postgres-iṣẹ.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 }}

Tito leto Prometheus lati gba data postgres_exporter jẹ ṣiṣe nipasẹ awọn iye ṣiṣatunṣe ninu iwe kekere.

iye.yaml

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

Lati wo data ti o gba, fi Dasibodu ti o yẹ sinu
Grafana ati tunto awọn orisun data. Eyi tun le ṣee ṣe nipasẹ awọn iye ninu iwe kekere Grafana.

Kini o dabi
Abojuto ati wíwọlé awọn iṣẹ ita si iṣupọ Kubernetes

Mo nireti pe nkan kukuru yii ṣe iranlọwọ fun ọ lati loye awọn imọran akọkọ lẹhin ojutu yii ati ṣafipamọ akoko rẹ nigbati o ba ṣeto ibojuwo ati gedu awọn iṣẹ ita fun Loki/Prometheus ninu iṣupọ Kubernetes kan.

orisun: www.habr.com

Fi ọrọìwòye kun