Nadgledanje postgresa unutar Openshift-a

Dobar dan, stanovnici Habra!

Danas želim da vam kažem kako smo zaista želeli da nadgledamo postgres i nekoliko drugih entiteta unutar OpenShift klastera i kako smo to uradili.

Na ulazu su imali:

  • Openshift
  • kormilo
  • Prometej


Za rad sa java aplikacijom sve je bilo prilično jednostavno i transparentno, tačnije:

1) Dodavanje u build.gradle

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

2) Pokrenite prometheus sa 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 prilično jednostavno i prozaično dok nije došao trenutak da pratimo baze koje se nalaze u blizini u našem imenskom prostoru (da, ovo je loše, to niko ne radi, ali se dešavaju različite stvari).

Kako to radi?

Pored pod sa samim postgresom i prometheusom, potreban nam je još jedan entitet - izvoznik.

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

Hajde da ga implementiramo ovako (primjer deployment.yaml, neobavezujuć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 imagestream

Nakon raspoređivanja, zaista želimo da se svi vide.

Dodajte sljedeći dio u Prometheus konfiguraciju:

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

I onda je sve upalilo, ostaje samo dodati sve ove stvari 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.

Ovo je urađeno na sličan način za:

  • Kafka
  • Elasticsearch
  • Mongo

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

Korisni linkovi:
Spisak raznih izvoznika

izvor: www.habr.com

Dodajte komentar