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