Spremljanje postgresa znotraj Openshift

Dober dan, prebivalci Habra!

Danes vam želim povedati, kako smo resnično želeli spremljati postgres in nekaj drugih entitet znotraj gruče OpenShift in kako smo to storili.

Na vhodu so imeli:

  • Prestavljanje
  • Helm
  • Prometej


Za delo z java aplikacijo je bilo vse precej preprosto in pregledno, ali če smo natančnejši:

1) Dodajanje v build.gradle

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

2) Zaženite prometheus s konfiguracijo

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

3) Dodajanje zaslona v Grafano

Vse je bilo precej preprosto in prozaično, dokler ni prišel trenutek za nadzor baz, ki se nahajajo v bližini v našem imenskem prostoru (ja, to je slabo, tega nihče ne počne, ampak dogajajo se različne stvari).

Kako deluje?

Poleg samega poda s postgresom in prometeja potrebujemo še en subjekt - izvoznika.

Izvoznik v abstraktnem konceptu je agent, ki zbira metrike iz aplikacije ali celo strežnika. Za postgres exporter je napisan v Go, deluje na principu poganjanja SQL skript znotraj baze in potem prometheus vzame dobljene rezultate. To vam omogoča tudi razširitev zbranih meritev z dodajanjem lastnih.

Razmestimo ga takole (primer deployment.yaml, neobvezujoče):


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

Potreboval je tudi storitev in slikovni tok

Po uvedbi resnično želimo, da se vsi vidijo.

V konfiguracijo Prometheusa dodajte naslednji del:

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

In potem je vse delovalo, ostalo je le dodati vse te stvari v grafano in uživati ​​v rezultatu.

Poleg možnosti dodajanja lastnih poizvedb lahko spremenite nastavitve v prometheusu in tako zbirate bolj ciljno usmerjene meritve.

To je bilo storjeno na podoben način za:

  • Kafka
  • Elastično iskanje
  • Mongo

PS Vsi podatki o imenih, pristaniščih in ostalem so vzeti iz zraka in ne vsebujejo nobenih informacij.

Koristne povezave:
Seznam različnih izvoznikov

Vir: www.habr.com

Dodaj komentar