Egun on, Habr-eko bizilagunak!
Gaur kontatu nahi dizut nola benetan nahi genuen monitorizatu postgres eta beste pare bat entitate OpenShift kluster barruan eta nola egin genuen.
Sarreran:
- Openshift
- Helm
- Prometeo
Java aplikazio batekin lan egiteko, dena nahiko sinplea eta gardena zen, edo zehatzago izateko:
1) Eraikitzeari gehitzea.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Exekutatu prometheus konfigurazioarekin
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafanari pantaila bat gehitzea
Dena nahiko sinplea eta prosaikoa izan zen gure izen-eremuan gertu dauden oinarrien jarraipena egiteko momentua iritsi zen arte (bai, hori txarra da, inork ez du hau egiten, baina gauza desberdinak gertatzen dira).
Nola dabil?
Postgres eta prometheus bera duen podaz gain, entitate bat gehiago behar dugu - esportatzailea.
Kontzeptu abstraktu batean esportatzailea aplikazio batetik edo zerbitzari batetik neurketak biltzen dituen agente bat da. Postgres esportatzailearentzat, Go-n idatzita dago, datu-basearen barruan SQL script-ak exekutatzeko printzipioan funtzionatzen du eta, ondoren, prometheus-ek lortutako emaitzak hartzen ditu. Horri esker, bildutako neurketak zabal ditzakezu zurea gehituz.
Inplementa dezagun honela (adibidea deployment.yaml, loteslea ez dena):
---
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
Zerbitzua eta irudi-fluxua ere eskatzen zuen
Inplementatu ondoren, benetan nahi dugu denek elkar ikustea.
Gehitu hurrengo pieza Prometheus konfigurazioan:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Eta gero dena funtzionatu zuen, geratzen dena da grafanari gauza guzti hauek gehitzea eta emaitzaz gozatzea.
Zure kontsultak gehitzeko aukeraz gain, ezarpenak alda ditzakezu prometheus-en, neurri zehatzagoak bilduz.
Hau antzeko modu batean egin zen:
- Kafka
- Elasticsearch
- Mongo
PS Izenei, portuei eta gainerakoei buruzko datu guztiak airetik hartzen dira eta ez dute informaziorik.
Esteka erabilgarriak:
Iturria: www.habr.com