Saib xyuas thiab nkag mus rau cov kev pabcuam sab nraud rau Kubernetes pawg

Saib xyuas thiab nkag mus rau cov kev pabcuam sab nraud rau Kubernetes pawg

Hmoov zoo rau sawv daws.

Kuv tsis tau pom ib daim ntawv qhia dav dav hauv online ntawm kev nkag thiab sau cov kev ntsuas los ntawm cov kev pabcuam thib peb rau hauv cov tshuab siv hauv Kubernetes. Kuv tso kuv qhov kev daws teeb meem. Kab lus no xav tias koj twb tau ua haujlwm lawm Prometheus thiab lwm yam kev pabcuam. Raws li piv txwv ntawm cov ntaub ntawv qhov chaw rau ib qho kev pabcuam sab nraud, DBMS yuav raug siv PostgreSQL hauv ib lub thawv docker. Lub tuam txhab siv tus thawj tswj pob Helm, hauv qab no hauv cov ntawv nyeem yuav muaj cov piv txwv ntawm nws. Rau tag nrho cov kev daws teeb meem, peb tab tom npaj peb tus kheej daim ntawv qhia, uas suav nrog cov kab kos nested ntawm tag nrho cov kev pabcuam siv.

Kev sau npe

Ntau lub tuam txhab siv ib pawg ntawm cov thev naus laus zis los sau, saib thiab nruab nrab ntawm cov cav Elasticsearch + Logstash + kibana, abbreviated li ELK. Hauv peb cov ntaub ntawv, tsis tas yuav ntsuas cov ntsiab lus thiab kuv siv lub teeb hnyav dua Loki. Nws yog muaj nyob rau hauv Helm pob, peb ntxiv nws raws li ib tug subchart los ntawm kev hloov cov nqi rau ingress thiab pv kom haum peb lub cev.

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

Xa cov cav mus rau ib qho piv txwv Loki siv Loki Docker Logging Driver.

Koj yuav tsum nruab qhov no add-on rau txhua yam docker hosts uas koj xav tau txais cov cav. Muaj ntau txoj hauv kev los qhia rau daemon siv lub padding. Kuv xaiv tus tsav tsheb hauv yaml Docker Compose, uas yog ib feem ntawm Ua tau zoo phau ntawv ua si.

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

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

Kev ntsuas

Metrics yog sau los ntawm PostgreSQL siv postgres_exporter rau Prometheus. Kev txuas ntxiv ntawm cov ntaub ntawv saum toj no Ua tau zoo phau ntawv ua si.

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

Txhawm rau kom pom tseeb dua, peb yuav sau cov npe ntawm cov kev pabcuam sab nraud uas siv cov 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 }}

Configuring Prometheus kom tau txais cov ntaub ntawv postgres_exporter yog ua los ntawm kev kho qhov tseem ceeb hauv daim duab subchart.

values. yaml

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

Txhawm rau pom cov ntaub ntawv tau txais, nruab qhov tsim nyog Dashboard hauv
ua grafana thiab configure cov ntaub ntawv qhov chaw. Qhov no kuj tuaj yeem ua tiav los ntawm cov txiaj ntsig hauv Grafana subchart.

Nws zoo li cas
Saib xyuas thiab nkag mus rau cov kev pabcuam sab nraud rau Kubernetes pawg

Kuv vam tias tsab xov xwm luv luv no tau pab koj nkag siab txog cov tswv yim tseem ceeb tom qab qhov kev daws teeb meem no thiab txuag koj lub sijhawm thaum teeb tsa kev saib xyuas thiab txiav tawm cov kev pabcuam sab nraud rau Loki / Prometheus hauv pawg Kubernetes.

Tau qhov twg los: www.hab.com

Ntxiv ib saib