Monitro a logio gwasanaethau allanol i glwstwr Kubernetes

Monitro a logio gwasanaethau allanol i glwstwr Kubernetes

Pob hwyl i bawb.

Nid wyf wedi dod o hyd i ganllaw cyffredinol ar-lein ar logio a chasglu metrigau o wasanaethau trydydd parti i systemau a ddefnyddir yn Kubernetes. Rwy'n postio fy ateb. Mae'r erthygl hon yn cymryd yn ganiataol bod gennych chi waith yn barod Prometheus a gwasanaethau eraill. Fel enghraifft o ffynhonnell ddata ar gyfer gwasanaeth gwladwriaethol allanol, bydd DBMS yn cael ei ddefnyddio PostgreSQL mewn cynhwysydd Docker. Mae'r cwmni'n defnyddio rheolwr pecyn Helm, isod yn y testun bydd enghreifftiau arno. Ar gyfer yr ateb cyfan, rydym yn paratoi ein siart ein hunain, sy'n cynnwys siartiau nythu o'r holl wasanaethau a ddefnyddir.

Logio

Mae llawer o gwmnΓ―au'n defnyddio pentwr o dechnolegau i gasglu, gweld a chanoli logiau Elastig + Logstash + cibana, wedi'i dalfyrru fel ELK. Yn ein hachos ni, nid oes angen mynegeio'r cynnwys a defnyddiais un mwy ysgafn Loki. Mae ar gael fel pecyn Helm, fe wnaethom ei ychwanegu fel is-siart trwy newid y gwerthoedd ar gyfer ingress a pv i weddu i'n system.

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

I anfon logiau i enghraifft Loki defnyddio Gyrrwr Logio Loki Docker.

Rhaid i chi osod yr ychwanegyn hwn ar bopeth Docker gwesteiwyr yr ydych am dderbyn logiau ohonynt. Mae yna sawl ffordd i ddweud wrth yr ellyll sut i ddefnyddio'r padin. Rwy'n dewis y gyrrwr yn yaml Cyfansoddwr Dociwr, sydd yn rhan Ateb llyfr chwarae.

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

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

Metrigau

Cesglir metrigau o PostgreSQL gan ddefnyddio postgres_allforiwr gyfer Prometheus. Parhad o'r ffeil uchod Ateb llyfr chwarae.

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

Er mwyn sicrhau mwy o eglurder, byddwn yn ysgrifennu enwau gwasanaethau gwladwriaethol allanol gan ddefnyddio Endpoints.

postgres-gwasanaeth.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 }}

Mae ffurfweddu Prometheus i dderbyn data postgres_exporter yn cael ei wneud trwy olygu gwerthoedd yn yr is-siart.

gwerthoedd.yaml

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

I ddelweddu'r data a dderbyniwyd, gosodwch y Dangosfwrdd priodol i mewn
Grafana a ffurfweddu ffynonellau data. Gellir gwneud hyn hefyd trwy werthoedd yn is-siart Grafana.

Beth mae'n edrych fel
Monitro a logio gwasanaethau allanol i glwstwr Kubernetes

Rwy'n gobeithio bod yr erthygl fer hon wedi eich helpu i ddeall y prif syniadau y tu Γ΄l i'r datrysiad hwn ac wedi arbed amser i chi wrth sefydlu monitro a logio gwasanaethau allanol ar gyfer Loki / Prometheus mewn clwstwr Kubernetes.

Ffynhonnell: hab.com

Ychwanegu sylw