Ka nānā ʻana a me ka hoʻopaʻa ʻana i nā lawelawe waho i ka hui Kubernetes

Ka nānā ʻana a me ka hoʻopaʻa ʻana i nā lawelawe waho i ka hui Kubernetes

Laki maikaʻi i nā mea a pau.

ʻAʻole i loaʻa iaʻu kahi alakaʻi ākea ma ka pūnaewele e pili ana i ka hoʻopaʻa inoa ʻana a me ka hōʻiliʻili ʻana i nā metric mai nā lawelawe ʻaoʻao ʻekolu i loko o nā ʻōnaehana i kau ʻia ma Kubernetes. Ke kau nei au i kaʻu hoʻonā. Ke manaʻo nei kēia ʻatikala ua loaʻa iā ʻoe kahi hana IHILA a me nā lawelawe ʻē aʻe. Ma keʻano he laʻana o kahi kumu ʻikepili no kahi lawelawe kūlana kūwaho, e hoʻohana ʻia kahi DBMS PostgreSQL i loko o kahi pahu Docker. Hoʻohana ka ʻoihana i kahi mea hoʻokele pūʻolo Helm, ma lalo o ka kikokikona e loaʻa nā laʻana ma luna. No ka hoʻonā holoʻokoʻa, ke hoʻomākaukau nei mākou i kā mākou pakuhi ponoʻī, kahi i loaʻa i nā pakuhi nested o nā lawelawe āpau i hoʻohana ʻia.

Ke kālai lāʻau

Nui nā hui e hoʻohana i ka ʻenehana e hōʻiliʻili, nānā a hoʻonohonoho i nā lāʻau Elasticsearch + ʻO Logstash + kibana, i hoopokoleia me ELK. I kā mākou hihia, ʻaʻohe pono e kuhikuhi i ka ʻike a ua hoʻohana au i kahi māmā Loki. Loaʻa ia ma ke ʻano he pūʻulu Helm, ua hoʻohui mākou iā ia ma ke ʻano he subchart ma ka hoʻololi ʻana i nā waiwai no ka komo ʻana a me ka pv e kūpono i kā mākou ʻōnaehana.

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

No ka hoʻouna ʻana i nā lāʻau i kahi laʻana Loki hoʻohana Loki Docker Logging Driver.

Pono ʻoe e hoʻokomo i kēia add-on ma nā mea āpau Docker nā pūʻali āu e makemake ai e loaʻa nā moʻolelo. Nui nā ala e haʻi ai i ka daemon pehea e hoʻohana ai i ka padding. Koho au i ke kalaiwa ma yaml Docker papa inoa, he hapa ia ʻO ke kūpono puke pāʻani.

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

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

Nā ana

ʻOhi ʻia nā metric mai PostgreSQL me ka hoʻohana ʻana mea hoʻopuka no ka mea, IHILA. Ka hoʻomau ʻana o ka faila ma luna ʻO ke kūpono puke pāʻani.

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

No ka akaka ʻoi aku, e kākau mākou i nā inoa o nā lawelawe mokuʻāina waho me ka hoʻohana ʻana i 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 }}

ʻO ka hoʻonohonoho ʻana iā Prometheus e loaʻa i ka ʻikepili postgres_exporter e hana ʻia e ka hoʻoponopono ʻana i nā waiwai i ka subchart.

waiwai.yaml

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

No ka nānā ʻana i ka ʻikepili i loaʻa, e hoʻokomo i ka Dashboard kūpono i loko
grafana a hoʻonohonoho i nā kumu ʻikepili. Hiki ke hana ʻia kēia ma o nā waiwai i ka subchart Grafana.

Pehea kona ano
Ka nānā ʻana a me ka hoʻopaʻa ʻana i nā lawelawe waho i ka hui Kubernetes

Manaʻo wau ua kōkua kēia ʻatikala pōkole iā ʻoe e hoʻomaopopo i nā manaʻo nui ma hope o kēia hoʻonā a mālama iā ʻoe i ka manawa i ka wā e hoʻonohonoho ai i ka nānā ʻana a me ka hoʻopaʻa inoa ʻana i nā lawelawe waho no Loki/Prometheus i kahi hui Kubernetes.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka