Mirëdita, banorë të Habrit!
Sot dua t'ju tregoj se si vërtet donim të monitoronim postgres dhe disa entitete të tjera brenda grupit OpenShift dhe si e bëmë atë.
Në hyrje kishin:
- Openshift
- kaskë
- Prometeu
Për të punuar me një aplikacion java, gjithçka ishte mjaft e thjeshtë dhe transparente, ose për të qenë më të saktë:
1) Shtimi në build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Drejtoni prometheus me konfigurim
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Shtimi i një ekrani në Grafana
Gjithçka ishte mjaft e thjeshtë dhe prozaike derisa erdhi momenti për të monitoruar bazat që ndodhen afër në hapësirën tonë të emrave (po, kjo është e keqe, askush nuk e bën këtë, por ndodhin gjëra të ndryshme).
Si punon?
Përveç podit me postgres dhe vetë Prometheus, na duhet edhe një subjekt - eksportues.
Një eksportues në një koncept abstrakt është një agjent që mbledh metrikë nga një aplikacion apo edhe një server. Për eksportuesin e postgres, ai shkruhet në Go, funksionon në parimin e ekzekutimit të skripteve SQL brenda bazës së të dhënave dhe më pas Prometheus merr rezultatet e marra. Kjo gjithashtu ju lejon të zgjeroni metrikat e mbledhura duke shtuar tuajat.
Le ta vendosim kështu (shembull deployment.yaml, jo-detyrues):
---
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
Kërkonte gjithashtu një shërbim dhe transmetim imazhi
Pas vendosjes, ne vërtet dëshirojmë që të gjithë të shihen.
Shtoni pjesën e mëposhtme në konfigurimin e Prometheus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Dhe pastaj gjithçka funksionoi, gjithçka që mbetet është të shtoni të gjitha këto gjëra në grafana dhe të shijoni rezultatin.
Përveç aftësisë për të shtuar pyetjet tuaja, ju mund të ndryshoni cilësimet në Prometheus, duke mbledhur metrika më të synuara.
Kjo është bërë në mënyrë të ngjashme për:
- Kafka
- Elasticsearch
- Mongo
PS Të gjitha të dhënat për emrat, portet dhe të tjerat janë marrë nga ajri dhe nuk përmbajnë asnjë informacion.
Lidhje të dobishme:
Burimi: www.habr.com