Ulkoisten palveluiden seuranta ja kirjaaminen Kubernetes-klusteriin

Ulkoisten palveluiden seuranta ja kirjaaminen Kubernetes-klusteriin

Onnea kaikille.

En ole löytänyt verkosta yleistettyä opasta kolmannen osapuolen palveluiden tietojen kirjaamisesta ja keräämisestä järjestelmiin, jotka on otettu käyttöön Kubernetes. Julkaisen ratkaisuni. Tässä artikkelissa oletetaan, että sinulla on jo työ Prometheus ja muut palvelut. Esimerkkinä ulkoisen tilallisen palvelun tietolähteestä käytetään DBMS:ää PostgreSQL säiliössä Satamatyöläinen. Yritys käyttää pakettihallintaa Ruori, alla tekstissä on esimerkkejä siitä. Koko ratkaisua varten laadimme oman kaavion, joka sisältää sisäkkäiset kaaviot kaikista käytetyistä palveluista.

Kirjaaminen

Monet yritykset käyttävät pinoa tekniikoita lokien keräämiseen, tarkastelemiseen ja keskittämiseen Elasticsearch + Logstash + kibana, lyhennettynä ELK. Meidän tapauksessamme sisältöä ei tarvitse indeksoida ja käytin kevyempää Loki. Se on saatavana Helm-pakettina, lisäsimme sen alakaavioksi muuttamalla ingressin ja pv:n arvoja järjestelmäämme sopivaksi.

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

Lokien lähettäminen esiintymään Loki käyttää Loki Dockerin kirjausohjain.

Sinun on asennettava tämä lisäosa kaikkeen Satamatyöläinen isännät, joilta haluat vastaanottaa lokeja. On olemassa useita tapoja kertoa demonille, kuinka pehmustetta käytetään. Valitsen ohjaimen yamlissa Docker Compose, joka on osa Ansible pelikirja.

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

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

Mittarit

Mittarit kerätään PostgreSQL:stä käyttämällä postgres_exporter varten Prometheus. Jatkoa yllä olevalle tiedostolle Ansible pelikirja.

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

Selvyyden vuoksi kirjoitamme ulkoisten tilallisten palveluiden nimet käyttämällä päätepisteitä.

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

Prometheusin määrittäminen vastaanottamaan postgres_exporter-tietoja tehdään muokkaamalla alakaavion arvoja.

arvot.yaml

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

Jos haluat visualisoida vastaanotetut tiedot, asenna sopiva hallintapaneeli
grafana ja määritä tietolähteet. Tämä voidaan tehdä myös Grafana-alikaavion arvojen avulla.

Mitä se näyttää
Ulkoisten palveluiden seuranta ja kirjaaminen Kubernetes-klusteriin

Toivon, että tämä lyhyt artikkeli auttoi sinua ymmärtämään tämän ratkaisun tärkeimmät ideat ja säästät aikaasi, kun määrität Loki/Prometheuksen ulkoisten palvelujen valvontaa ja kirjaamista Kubernetes-klusteriin.

Lähde: will.com

Lisää kommentti