Bon dia, veïns d'Habr!
Avui vull explicar-vos com volíem controlar postgres i un parell d'entitats més dins del clúster OpenShift i com ho vam fer.
A l'entrada tenien:
- Torn obert
- Timó
- Prometeu
Per treballar amb una aplicació java, tot era bastant senzill i transparent, o per ser més precisos:
1) Afegint a build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Executeu prometheus amb la configuració
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Afegir una pantalla a Grafana
Tot va ser bastant senzill i prosaic fins que va arribar el moment de fer un seguiment de les bases que es troben a prop del nostre espai de noms (sí, això és dolent, això no ho fa ningú, però passen coses diferents).
Com funciona?
A més del pod amb postgres i el propi prometheus, necessitem una entitat més: exportador.
Un exportador en un concepte abstracte és un agent que recopila mètriques d'una aplicació o fins i tot d'un servidor. Per a l'exportador de postgres, està escrit a Go, funciona amb el principi d'executar scripts SQL dins de la base de dades i després prometheus agafa els resultats obtinguts. Això també us permet ampliar les mètriques recopilades afegint les vostres pròpies.
Despleguem-lo així (exemple deployment.yaml, no vinculant):
---
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
També requeria un servei i un flux d'imatges
Després del desplegament, volem que tothom es vegi.
Afegiu la peça següent a la configuració de Prometheus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
I després tot va funcionar, només queda afegir tot això a la grafana i gaudir del resultat.
A més de la possibilitat d'afegir les vostres pròpies consultes, podeu canviar la configuració a prometheus, recopilant mètriques més orientades.
Això es va fer de manera similar per a:
- Kafka
- Elasticsearch
- mongo
PS Totes les dades de noms, ports i la resta es prenen des de l'aire i no contenen cap informació.
Enllaços útils:
Font: www.habr.com