Postgres stebėjimas Openshift viduje

Laba diena, Habro gyventojai!

Šiandien noriu jums pasakyti, kaip mes iš tikrųjų norėjome stebėti „postgres“ ir keletą kitų „OpenShift“ klasterio objektų ir kaip tai padarėme.

Prie įėjimo jie turėjo:

  • Atviras poslinkis
  • Šalmas
  • Prometėjas


Norint dirbti su java programa, viskas buvo gana paprasta ir skaidra, o tiksliau:

1) Pridėti į build.gradle

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

2) Paleiskite „Prometheus“ su konfigūracija

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

3) Ekrano pridėjimas prie Grafana

Viskas buvo gana paprasta ir proziška, kol atėjo momentas stebėti netoliese esančias bazes mūsų vardų erdvėje (taip, tai yra blogai, niekas to nedaro, bet nutinka įvairių dalykų).

Kaip tai veikia?

Be ankšties su postgres ir paties Prometėjo, mums reikia dar vieno subjekto - eksportuotojo.

Eksportuotojas abstrakčioje sąvokoje yra agentas, kuris renka metrikas iš programos ar net serverio. Postgres eksportuotojui tai parašyta Go, veikia SQL skriptų paleidimo principu duomenų bazės viduje ir tada prometheus paima gautus rezultatus. Tai taip pat leidžia išplėsti surinktą metriką įtraukiant savo.

Diegkime taip (pavyzdys deployment.yaml, neįpareigojantis):


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

Tam taip pat reikėjo paslaugos ir vaizdo srauto

Po dislokavimo mes tikrai norime, kad visi matytų vieni kitus.

Pridėkite šią dalį prie „Prometheus“ konfigūracijos:

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

Ir tada viskas pavyko, belieka pridėti visą šitą medžiagą į grafaną ir mėgautis rezultatu.

Be galimybės pridėti savo užklausų, galite keisti „Prometheus“ nustatymus, rinkdami tikslingesnę metriką.

Tai buvo padaryta panašiu būdu:

  • Kafka
  • Elasticearch
  • mongo

PS Visi duomenys apie pavadinimus, prievadus ir visa kita yra paimti iš oro ir juose nėra jokios informacijos.

Naudingos nuorodos:
Įvairių eksportuotojų sąrašas

Šaltinis: www.habr.com

Добавить комментарий