Iwwerwachung postgres bannent Openshift

Gudden Dag, Awunner vun Habr!

Haut wëll ech Iech soen wéi mir wierklech Postgres an e puer aner Entitéiten am OpenShift Cluster wollten iwwerwaachen a wéi mir et gemaach hunn.

Bei der Entrée hate si:

  • Openshift
  • Helm
  • Prometheus


Fir mat enger Java Applikatioun ze schaffen, war alles relativ einfach an transparent, oder méi präzis:

1) Dobäizemaachen ze build.gradle

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

2) Laf prometheus mat Configuratioun

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

3) Füügt en Affichage zu Grafana

Alles war ganz einfach a prosaesch bis de Moment komm ass fir d'Basen ze iwwerwaachen déi an eisem Nummraum an der Géigend sinn (jo, dat ass schlecht, keen mécht dat, awer verschidde Saache geschéien).

Wéi funktionnéiert et?

Zousätzlech zu der Pod mat Postgres a Prometheus selwer, brauche mir nach eng Entitéit - Exportateur.

En Exportateur an engem abstrakte Konzept ass en Agent deen Metriken vun enger Applikatioun oder souguer engem Server sammelt. Fir Postgres Exporter ass et a Go geschriwwen, et funktionnéiert um Prinzip fir SQL Scripten an der Datebank ze lafen an dann hëlt de Prometheus d'Resultater. Dëst erlaabt Iech och déi gesammelt Metriken auszebauen andeems Dir Är eege bäidréit.

Loosst eis et esou ofsetzen (Beispill deployment.yaml, net 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

Et erfuerdert och e Service an Imagestream

Nom Asaz wëlle mir wierklech jidderee sech gesinn.

Füügt de folgende Stéck un d'Prometheus Configuratioun:

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

An dunn huet alles geschafft, et bleift just all dës Saachen op d'Grafana ze addéieren an d'Resultat ze genéissen.

Zousätzlech zu der Fäegkeet fir Är eege Ufroen ze addéieren, kënnt Dir d'Astellungen am Prometheus änneren, méi geziilt Metriken sammelen.

Dëst gouf op eng ähnlech Manéier gemaach fir:

  • Kafka
  • Elastikerzuch
  • Mongo

PS All Daten iwwer Nimm, Häfen an de Rescht sinn aus der Loft geholl an enthält keng Informatioun.

Nëtzlech Adressen:
Lëscht vun verschiddenen Exporter

Source: will.com

Setzt e Commentaire