Monitorimi i postgres brenda Openshift

Mirëdita, banorë të Habrit!

Sot dua t'ju tregoj se si vërtet donim të monitoronim postgres dhe disa entitete të tjera brenda grupit OpenShift dhe si e bëmë atë.

Në hyrje kishin:

  • Openshift
  • kaskë
  • Prometeu


Për të punuar me një aplikacion java, gjithçka ishte mjaft e thjeshtë dhe transparente, ose për të qenë më të saktë:

1) Shtimi në build.gradle

 implementation "io.micrometer:micrometer-registry-prometheus"

2) Drejtoni prometheus me konfigurim

 - job_name: 'job-name'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    kubernetes_sd_configs:
    - role: pod
      namespaces:
        names: 
          - 'name'

3) Shtimi i një ekrani në Grafana

Gjithçka ishte mjaft e thjeshtë dhe prozaike derisa erdhi momenti për të monitoruar bazat që ndodhen afër në hapësirën tonë të emrave (po, kjo është e keqe, askush nuk e bën këtë, por ndodhin gjëra të ndryshme).

Si punon?

Përveç podit me postgres dhe vetë Prometheus, na duhet edhe një subjekt - eksportues.

Një eksportues në një koncept abstrakt është një agjent që mbledh metrikë nga një aplikacion apo edhe një server. Për eksportuesin e postgres, ai shkruhet në Go, funksionon në parimin e ekzekutimit të skripteve SQL brenda bazës së të dhënave dhe më pas Prometheus merr rezultatet e marra. Kjo gjithashtu ju lejon të zgjeroni metrikat e mbledhura duke shtuar tuajat.

Le ta vendosim kështu (shembull deployment.yaml, jo-detyrues):


---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: postgres-exporter
  labels:
    app: {{ .Values.name }}
    monitoring: prometheus
spec:
  serviceName: {{ .Values.name }}
  replicas: 1
  revisionHistoryLimit: 5
  template:
    metadata:
      labels:
        app: postgres-exporter
        monitoring: prometheus
    spec:
      containers:
      - env:
        - name: DATA_SOURCE_URI
          value: postgresdb:5432/pstgr?sslmode=disable
        - name: DATA_SOURCE_USER
          value: postgres
        - name: DATA_SOURCE_PASS
          value: postgres
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi
        livenessProbe:
          tcpSocket:
            port: metrics
          initialDelaySeconds: 30
          periodSeconds: 30
        readinessProbe:
          tcpSocket:
            port: metrics
          initialDelaySeconds: 10
          periodSeconds: 30
        image: exporter
        name: postgres-exporter
        ports:
        - containerPort: 9187
          name: metrics

Kërkonte gjithashtu një shërbim dhe transmetim imazhi

Pas vendosjes, ne vërtet dëshirojmë që të gjithë të shihen.

Shtoni pjesën e mëposhtme në konfigurimin e Prometheus:

  - job_name: 'postgres_exporter'
    metrics_path: '/metrics'
    scrape_interval: 5s
    dns_sd_configs:
    - names:
      - 'postgres-exporter'
      type: 'A'
      port: 9187

Dhe pastaj gjithçka funksionoi, gjithçka që mbetet është të shtoni të gjitha këto gjëra në grafana dhe të shijoni rezultatin.

Përveç aftësisë për të shtuar pyetjet tuaja, ju mund të ndryshoni cilësimet në Prometheus, duke mbledhur metrika më të synuara.

Kjo është bërë në mënyrë të ngjashme për:

  • Kafka
  • Elasticsearch
  • Mongo

PS Të gjitha të dhënat për emrat, portet dhe të tjerat janë marrë nga ajri dhe nuk përmbajnë asnjë informacion.

Lidhje të dobishme:
Lista e eksportuesve të ndryshëm

Burimi: www.habr.com

Shto një koment