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:
Source: will.com