Ho beha leihlo le ho rema litšebeletso tsa kantle ho sehlopha sa Kubernetes

Ho beha leihlo le ho rema litšebeletso tsa kantle ho sehlopha sa Kubernetes

Mahlohonolo ho bohle.

Ha ke so fumane tataiso e akaretsang marang-rang mabapi le ho rema lifate le ho bokella metrics ho tsoa lits'ebeletso tsa mokha oa boraro ho ea ho litsamaiso tse kentsoeng Kubernetes. Ke romella tharollo eaka. Sehlooho sena se nka hore u se u ntse u e-na le mosebetsi Prometheus le litšebeletso tse ling. E le mohlala oa mohloli oa boitsebiso bakeng sa tšebeletso e ntle ea kantle, DBMS e tla sebelisoa PostgreSQL ka setshelong Docker. Khampani e sebelisa mookameli oa sephutheloana helmete, ka tlase ho mongolo ho tla ba le mehlala ho eona. Bakeng sa tharollo eohle, re lokisetsa chate ea rona, e kenyelletsang lichate tse behiloeng tsa litšebeletso tsohle tse sebelisoang.

Ho rema lifate

Likhamphani tse ngata li sebelisa letoto la mahlale ho bokella, ho sheba le ho beha lits'oants'o tse bohareng Elasticsearch + Logstash + kibana, e khutsufalitsoeng e le ELK. Tabeng ea rona, ha ho na tlhoko ea ho supa litaba mme ke sebelisitse e bobebe haholoanyane Loki. E fumaneha joalo ka sephutheloana sa Helm, re e kentse joalo ka subchart ka ho fetola boleng ba ingress le pv hore e lumellane le sistimi ea rona.

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

Ho romela lintlha ho mohlala Loki sebedisa Mokhanni oa ho rema lifate oa Loki Docker.

U tlameha ho kenya kenyelletso ena ho tsohle Docker mabotho ao u batlang ho amohela li-log ho ona. Ho na le mekhoa e mengata ea ho bolella daemon mokhoa oa ho sebelisa padding. Ke khetha mokhanni ka yaml Docker Compose, e leng karolo Ea nahanang buka ea ho bapala.

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

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

Melemo

Metrics e bokelloa ho tsoa ho PostgreSQL ho sebelisoa postgres_exporter etsoe Prometheus. Ho tsoela pele ka faele e ka holimo Ea nahanang buka ea ho bapala.

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

Bakeng sa ho hlaka haholoanyane, re tla ngola mabitso a litšebeletso tsa kantle ho naha re sebelisa 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 }}

Ho hlophisa Prometheus ho amohela data ea postgres_exporter ho etsoa ka ho hlophisa boleng ho chate e nyane.

boleng.yaml

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

Ho bona ka mahlo a kelello data e amohetsweng, kenya Dashboard e loketseng ho
grafana le ho lokisa mehloli ea data. Sena se ka etsoa hape ka litekanyetso tse ho chate e nyane ea Grafana.

E shebahala joang
Ho beha leihlo le ho rema litšebeletso tsa kantle ho sehlopha sa Kubernetes

Ke tšepa hore sengoloa sena se sekhutšoane se u thusitse ho utloisisa mehopolo ea mantlha ka mor'a tharollo ena mme sa u bolokela nako ha u theha tlhahlobo le ho rengoa ha lits'ebeletso tsa kantle bakeng sa Loki/Prometheus sehlopheng sa Kubernetes.

Source: www.habr.com

Eketsa ka tlhaloso