Jó napot, Habr lakói!
Ma szeretném elmondani, hogyan akartuk a postgres-t és néhány más entitást figyelni az OpenShift-fürtön belül, és hogyan tettük ezt.
A bejáratnál ezek voltak:
- openshift
- Sisak
- Prométheusz
Ahhoz, hogy egy java alkalmazással dolgozzunk, minden meglehetősen egyszerű és átlátható volt, pontosabban:
1) Hozzáadás a build.gradle-hez
implementation "io.micrometer:micrometer-registry-prometheus"
2) Futtassa a prometheust konfigurációval
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Képernyő hozzáadása a Grafanához
Minden egészen egyszerű és prózai volt, amíg el nem jött a pillanat, hogy figyeljük a névterünkben a közelben található bázisokat (igen, ez rossz, senki nem csinál ilyet, de más dolgok történnek).
Hogyan működik?
A postgres-szel és magával a prométheusszal rendelkező pod mellett még egy entitásra van szükségünk - exportőrre.
Az exportőr egy absztrakt fogalomban olyan ügynök, amely egy alkalmazásból vagy akár egy szerverből gyűjti össze a mutatókat. Postgres exporternél ez Go-ban van írva, azon az elven működik, hogy SQL scripteket futtat az adatbázison belül, majd a prometheus veszi a kapott eredményeket. Ez lehetővé teszi az összegyűjtött mutatók bővítését is saját hozzáadásával.
Telepítsük így (például deployment.yaml, nem kötelező):
---
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
Ehhez szolgáltatásra és képfolyamra is szükség volt
A telepítés után nagyon szeretnénk, hogy mindenki lássa egymást.
Adja hozzá a következő részt a Prometheus konfigurációjához:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Aztán minden működött, csak annyi van hátra, hogy mindezt hozzáadjuk a grafanához, és élvezzük az eredményt.
Amellett, hogy saját lekérdezéseket adhat hozzá, módosíthatja a beállításokat a Prometheusban, így célzottabb mérőszámokat gyűjthet össze.
Ez hasonló módon történt:
- Kafka
- Elasticsearch
- Mongo
PS A nevekre, portokra és a többire vonatkozó összes adat a levegőből származik, és nem tartalmaz semmilyen információt.
Hasznos linkek:
Forrás: will.com