Praćenje postgresa unutar Openshifta

Dobar dan, stanovnici Habra!

Danas vam želim reći kako smo stvarno željeli nadzirati postgres i nekoliko drugih entiteta unutar OpenShift klastera i kako smo to učinili.

Na ulazu su imali:

  • Otvoreni pomak
  • Kormilo
  • Prometej


Za rad s java aplikacijom sve je bilo vrlo jednostavno i transparentno, točnije:

1) Dodavanje u build.gradle

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

2) Pokrenite prometheus s konfiguracijom

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

3) Dodavanje displeja u Grafanu

Sve je bilo dosta jednostavno i prozaično dok nije došao trenutak da nadziremo baze koje se nalaze u blizini u našem imenskom prostoru (da, to je loše, to nitko ne radi, ali se razne stvari događaju).

Kako radi?

Osim mahune s postgresom i samog prometeja, potreban nam je još jedan subjekt - izvoznik.

Izvoznik u apstraktnom konceptu je agent koji prikuplja metriku iz aplikacije ili čak poslužitelja. Za postgres exporter je napisan u Go-u, radi na principu pokretanja SQL skripti unutar baze i onda dobivene rezultate uzima prometheus. To vam također omogućuje da proširite prikupljene metrike dodavanjem vlastitih.

Implementirajmo ga ovako (primjer deployment.yaml, neobvezujući):


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

Također je zahtijevao uslugu i tok slika

Nakon postavljanja, stvarno želimo da se svi vide.

Dodajte sljedeći dio Prometheus konfiguraciji:

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

I onda je sve uspjelo, preostaje samo dodati sve ovo u grafanu i uživati ​​u rezultatu.

Osim mogućnosti dodavanja vlastitih upita, možete promijeniti postavke u prometheusu, prikupljajući više ciljanih metrika.

To je učinjeno na sličan način za:

  • Kafka
  • Elasticsearch
  • Mongo

PS Svi podaci o imenima, lukama i ostalom su preuzeti iz zraka i ne sadrže nikakve informacije.

Korisni linkovi:
Popis raznih izvoznika

Izvor: www.habr.com

Dodajte komentar