Monitering van postgres binne Openshift

Goeie dag, inwoners van Habr!

Vandag wil ek jou vertel hoe ons regtig postgres en 'n paar ander entiteite binne die OpenShift-groep wou monitor en hoe ons dit gedoen het.

By die ingang het hulle:

  • Openshift
  • Helm
  • Prometheus


Om met 'n Java-toepassing te werk, was alles redelik eenvoudig en deursigtig, of om meer presies te wees:

1) Voeg by build.gradle

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

2) Begin prometheus met konfigurasie

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

3) Voeg 'n vertoning by Grafana

Alles was redelik eenvoudig en prosaïes totdat die oomblik aangebreek het om die basisse wat naby geleë is in ons naamruimte te monitor (ja, dit is sleg, niemand doen dit nie, maar verskillende dinge gebeur).

Hoe werk dit?

Benewens die peul met postgres en prometheus self, het ons nog een entiteit nodig - uitvoerder.

'n Uitvoerder in 'n abstrakte konsep is 'n agent wat statistieke van 'n toepassing of selfs 'n bediener versamel. Vir postgres uitvoerder is dit in Go geskryf, dit werk volgens die beginsel om SQL-skrifte binne die databasis uit te voer en dan neem prometheus die resultate wat verkry is. Dit laat jou ook toe om die versamelde maatstawwe uit te brei deur jou eie by te voeg.

Kom ons ontplooi dit so (voorbeeld deployment.yaml, nie-bindend):


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

Dit het ook 'n diens en beeldstroom vereis

Na ontplooiing wil ons regtig hê dat almal mekaar moet sien.

Voeg die volgende stuk by die Prometheus-konfigurasie:

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

En toe werk alles, al wat oorbly is om al hierdie goed by die grafana te voeg en die resultaat te geniet.

Benewens die vermoë om jou eie navrae by te voeg, kan jy die instellings in prometheus verander en meer geteikende statistieke insamel.

Dit is op soortgelyke wyse gedoen vir:

  • Kafka
  • Elasticsearch
  • Mongo

NS Alle data oor name, poorte en die res is uit die lug geneem en bevat geen inligting nie.

Nuttige skakels:
Lys van verskeie uitvoerders

Bron: will.com

Voeg 'n opmerking