Kufuatilia na kuweka huduma za nje kwa nguzo ya Kubernetes

Kufuatilia na kuweka huduma za nje kwa nguzo ya Kubernetes

Bahati nzuri kwa kila mtu.

Sijapata mwongozo wa jumla mtandaoni kuhusu ukataji miti na kukusanya vipimo kutoka kwa huduma za wahusika wengine hadi kwenye mifumo iliyotumwa Mabernet. Ninatuma suluhisho langu. Nakala hii inadhani kuwa tayari unayo kazi Prometheus na huduma zingine. Kama mfano wa chanzo cha data kwa huduma bora ya nje, DBMS itatumika PostgreSQL kwenye chombo Docker. Kampuni hutumia meneja wa kifurushi Helm, hapa chini katika maandishi kutakuwa na mifano juu yake. Kwa suluhisho zima, tunatayarisha chati yetu wenyewe, ambayo inajumuisha chati zilizowekwa za huduma zote zinazotumiwa.

Kuweka magogo

Kampuni nyingi hutumia rundo la teknolojia kukusanya, kutazama na kuweka kumbukumbu kati Elasticsearch + Logstash + kibana, iliyofupishwa kama ELK. Kwa upande wetu, hakuna haja ya kuorodhesha yaliyomo na nilitumia nyepesi zaidi Loki. Inapatikana kama kifurushi cha Helm, tuliiongeza kama chati ndogo kwa kubadilisha maadili ya ingress na pv ili kuendana na mfumo wetu.

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

Kutuma kumbukumbu kwa mfano Loki tumia Dereva wa Kuweka Magogo wa Loki Docker.

Lazima usakinishe programu jalizi hii kwenye kila kitu Docker wapangishi ambao ungependa kupokea kumbukumbu kutoka kwao. Kuna njia kadhaa za kumwambia daemon jinsi ya kutumia pedi. Ninachagua dereva katika yaml Docker Kuandika, ambayo ni sehemu Inawezekana kitabu cha kucheza.

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

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

Vipimo

Vipimo hukusanywa kutoka kwa PostgreSQL kwa kutumia postgres_nje kwa Prometheus. Muendelezo wa faili hapo juu Inawezekana kitabu cha kucheza.

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

Kwa uwazi zaidi, tutaandika majina ya huduma bora za nje kwa kutumia 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 }}

Kusanidi Prometheus ili kupokea data ya postgres_exporter hufanywa kwa kuhariri maadili katika chati ndogo.

maadili.yaml

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

Ili kuona data iliyopokelewa, sakinisha Dashibodi inayofaa ndani
grafana na usanidi vyanzo vya data. Hii pia inaweza kufanywa kupitia maadili kwenye chati ndogo ya Grafana.

Inaonekanaje
Kufuatilia na kuweka huduma za nje kwa nguzo ya Kubernetes

Natumai nakala hii fupi ilikusaidia kuelewa mawazo kuu nyuma ya suluhisho hili na kukuokoa wakati wa kuweka ufuatiliaji na ukataji wa huduma za nje za Loki/Prometheus katika nguzo ya Kubernetes.

Chanzo: mapenzi.com

Kuongeza maoni