Dobar dan, stanovnici Habra!
Danas želim da vam kažem kako smo zaista želeli da nadgledamo postgres i nekoliko drugih entiteta unutar OpenShift klastera i kako smo to uradili.
Na ulazu su imali:
- Openshift
- kormilo
- Prometej
Za rad sa java aplikacijom sve je bilo prilično jednostavno i transparentno, tačnije:
1) Dodavanje u build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Pokrenite prometheus sa konfiguracijom
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Dodavanje displeja u Grafanu
Sve je bilo prilično jednostavno i prozaično dok nije došao trenutak da pratimo baze koje se nalaze u blizini u našem imenskom prostoru (da, ovo je loše, to niko ne radi, ali se dešavaju različite stvari).
Kako to radi?
Pored pod sa samim postgresom i prometheusom, potreban nam je još jedan entitet - izvoznik.
Izvoznik u apstraktnom konceptu je agent koji prikuplja metriku iz aplikacije ili čak servera. Za postgres exporter je napisan u Go, radi na principu pokretanja SQL skripti unutar baze podataka i onda prometheus uzima dobijene rezultate. Ovo vam također omogućava da proširite prikupljene metrike dodavanjem vlastitih.
Hajde da ga implementiramo ovako (primjer deployment.yaml, neobavezujući):
---
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
Također je zahtijevao uslugu i imagestream
Nakon raspoređivanja, zaista želimo da se svi vide.
Dodajte sljedeći dio u Prometheus konfiguraciju:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
I onda je sve upalilo, ostaje samo dodati sve ove stvari u grafanu i uživati u rezultatu.
Osim mogućnosti dodavanja vlastitih upita, možete promijeniti postavke u prometheusu, prikupljajući više ciljanih metrika.
Ovo je urađeno na sličan način za:
- Kafka
- Elasticsearch
- Mongo
PS Svi podaci o imenima, lukama i ostalom preuzeti su iz zraka i ne sadrže nikakve informacije.
Korisni linkovi:
izvor: www.habr.com