Kubernetes klastera ārējo pakalpojumu uzraudzība un reģistrēšana

Kubernetes klastera ārējo pakalpojumu uzraudzība un reģistrēšana

Veiksmi visiem.

Es tiešsaistē neesmu atradis vispārinātu rokasgrāmatu par trešo pušu pakalpojumu metriku reģistrēšanu un apkopošanu sistēmās, kas izvietotas Kubernetes. Es publicēju savu risinājumu. Šajā rakstā tiek pieņemts, ka jums jau ir darbs Prometejs un citi pakalpojumi. Kā datu avota piemērs ārējam stāvoklim atbilstoša pakalpojumam tiks izmantota DBVS PostgreSQL konteinerā dokers. Uzņēmums izmanto pakotņu pārvaldnieku Stūre, zemāk tekstā būs piemēri par to. Visam risinājumam mēs gatavojam savu diagrammu, kurā ir iekļautas visu izmantoto pakalpojumu ligzdotas diagrammas.

Mežizstrāde

Daudzi uzņēmumi izmanto virkni tehnoloģiju, lai apkopotu, skatītu un centralizētu žurnālus Elastikas meklēšana + Logstash + kibana, saīsināti kā ELK. Mūsu gadījumā nav nepieciešams indeksēt saturu, un es izmantoju vieglāku Loki. Tas ir pieejams kā Helm pakotne, mēs to pievienojām kā apakšdiagrammu, mainot ingress un pv vērtības, lai tās atbilstu mūsu sistēmai.

vērtības.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"

Lai nosūtītu žurnālus uz gadījumu Loki izmantot Loki Docker mežizstrādes draiveris.

Šis papildinājums ir jāinstalē visā dokers resursdatori, no kuriem vēlaties saņemt žurnālus. Ir vairāki veidi, kā norādīt dēmonam, kā izmantot polsterējumu. Es izvēlos draiveri yaml valodā Docker sastopas, kas ir daļa no Iespējams rokasgrāmata.

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

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

Metrika

Metrikas tiek apkopotas no PostgreSQL, izmantojot postgres_eksportētājs par Prometejs. Iepriekš minētā faila turpinājums Iespējams rokasgrāmata.

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

Lielākas skaidrības labad mēs rakstīsim ārējo statusu pakalpojumu nosaukumus, izmantojot galapunktus.

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

Prometheus konfigurēšana postgres_exporter datu saņemšanai tiek veikta, rediģējot vērtības apakšdiagrammā.

vērtības.yaml

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

Lai vizualizētu saņemtos datus, instalējiet atbilstošo informācijas paneli
grafana un konfigurēt datu avotus. To var izdarīt arī, izmantojot vērtības Grafana apakšdiagrammā.

Kas tas izskatās
Kubernetes klastera ārējo pakalpojumu uzraudzība un reģistrēšana

Es ceru, ka šis īsais raksts palīdzēja jums izprast šī risinājuma galvenās idejas un ietaupīja jūsu laiku, iestatot Loki/Prometheus ārējo pakalpojumu uzraudzību un reģistrēšanu Kubernetes klasterī.

Avots: www.habr.com

Pievieno komentāru