Kubernetes အစုအဝေးသို့ ပြင်ပဝန်ဆောင်မှုများကို စောင့်ကြည့်ခြင်းနှင့် မှတ်တမ်းရယူခြင်း။

Kubernetes အစုအဝေးသို့ ပြင်ပဝန်ဆောင်မှုများကို စောင့်ကြည့်ခြင်းနှင့် မှတ်တမ်းရယူခြင်း။

လူတိုင်း ကံကောင်းပါစေ။

ပြင်ပဝန်ဆောင်မှုများမှ ဖြန့်ကျက်ထားသော စနစ်များသို့ မှတ်တမ်းရယူခြင်းနှင့် မက်ထရစ်များ စုဆောင်းခြင်းအတွက် ယေဘူယျလမ်းညွှန်ချက်ကို ကျွန်ုပ်မတွေ့ပါ Kubernetes. ငါ့အဖြေကို ငါတင်မယ်။ ဤဆောင်းပါးသည် သင့်တွင် အလုပ်ရှိနေပြီဟု ယူဆသည်။ Prometheus နှင့် အခြားဝန်ဆောင်မှုများ။ ပြင်ပနိုင်ငံပိုင်ဝန်ဆောင်မှုအတွက် ဒေတာရင်းမြစ်တစ်ခု၏ ဥပမာတစ်ခုအနေဖြင့် DBMS ကို အသုံးပြုပါမည်။ PostgreSQL ကွန်တိန်နာတစ်ခုထဲမှာ Docker. ကုမ္ပဏီသည် ပက်ကေ့ဂျ်မန်နေဂျာကို အသုံးပြုသည်။ သံခမောက်အောက်တွင် စာသားတွင် ဥပမာများ ပါရှိပါမည်။ ဖြေရှင်းချက်တစ်ခုလုံးအတွက်၊ ကျွန်ုပ်တို့သည် အသုံးပြုသည့်ဝန်ဆောင်မှုအားလုံး၏ အသိုက်ဇယားများပါ၀င်သည့် ကျွန်ုပ်တို့၏ကိုယ်ပိုင်ဇယားကို ပြင်ဆင်နေပါသည်။

သစ်ခုတ်ခြင်း။

ကုမ္ပဏီအများအပြားသည် မှတ်တမ်းများကို စုဆောင်း၊ ကြည့်ရှုရန်နှင့် ဗဟိုချုပ်ကိုင်ရန် နည်းပညာအစုအဝေးကို အသုံးပြုကြသည်။ Elasticsearch + logstash + kibanaELK အဖြစ် အတိုကောက်။ ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ အကြောင်းအရာကို အညွှန်းဖော်ပြရန်မလိုအပ်ဘဲ ပိုမိုပေါ့ပါးသောကို အသုံးပြုခဲ့သည်။ Loki. ၎င်းကို Helm ပက်ကေ့ဂျ်အဖြစ် ရနိုင်သည်၊ ကျွန်ုပ်တို့၏ စနစ်နှင့် ကိုက်ညီစေရန် ingress နှင့် pv အတွက် တန်ဖိုးများကို ပြောင်းလဲခြင်းဖြင့် ၎င်းကို ဇယားခွဲတစ်ခုအဖြစ် ထည့်သွင်းထားပါသည်။

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"

သာဓကတစ်ခုသို့ မှတ်တမ်းများပေးပို့ရန် Loki အသုံး Loki Docker Logging Driver.

အရာအားလုံးတွင် ဤ add-on ကို သင်ထည့်သွင်းရပါမည်။ Docker မှတ်တမ်းများ လက်ခံရယူလိုသော အိမ်ရှင်များ။ padding ကိုအသုံးပြုပုံကို daemon ကိုပြောပြရန်နည်းလမ်းများစွာရှိသည်။ yaml မှာ driver ကို ရွေးလိုက်တယ်။ Docker Composeအပိုင်း၊ မြင်မရဘူး ကစားစာအုပ်။

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

loki_url: ဘယ်မှာလဲ kube-loki.example.domain/loki/api/v1/push

မက်ထရစ်များ

မက်ထရစ်များကို PostgreSQL ကို အသုံးပြု၍ စုဆောင်းသည်။ postgres_exporter အတွက် Prometheus. အထက်ပါဖိုင်ကိုဆက်လက်ဖော်ပြပါ။ မြင်မရဘူး ကစားစာအုပ်။

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

ပိုမိုရှင်းလင်းစေရန်၊ ကျွန်ုပ်တို့သည် 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 }}

Postgres_exporter ဒေတာကို လက်ခံရရှိရန် Prometheus ကို ပြင်ဆင်သတ်မှတ်ခြင်းသည် ဇယားခွဲခွဲရှိ တန်ဖိုးများကို တည်းဖြတ်ခြင်းဖြင့် လုပ်ဆောင်သည်။

values.yaml

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

လက်ခံရရှိသောဒေတာကို မြင်ယောင်ရန် သင့်လျော်သော Dashboard တွင် ထည့်သွင်းပါ။
Grafana ဒေတာရင်းမြစ်များကို စီစဉ်သတ်မှတ်ပါ။ ၎င်းကို Grafana ဇယားခွဲရှိ တန်ဖိုးများမှတစ်ဆင့်လည်း လုပ်ဆောင်နိုင်သည်။

ဘယ်လိုပုံစံလဲ။
Kubernetes အစုအဝေးသို့ ပြင်ပဝန်ဆောင်မှုများကို စောင့်ကြည့်ခြင်းနှင့် မှတ်တမ်းရယူခြင်း။

ဤဆောင်းပါးတိုသည် ဤဖြေရှင်းချက်၏နောက်ကွယ်ရှိ အဓိက အယူအဆများကို နားလည်ရန် ကူညီပေးပြီး Kubernetes အစုအဝေးတွင် Loki/Prometheus အတွက် ပြင်ပဝန်ဆောင်မှုများကို စောင့်ကြည့်ခြင်းနှင့် မှတ်တမ်းသွင်းခြင်းတို့ကို စတင်ရာတွင် အချိန်ကုန်သက်သာစေမည်ဟု မျှော်လင့်ပါသည်။

source: www.habr.com

မှတ်ချက် Add