Mirëmbrëma, banorë të Habrës!
Sot dëshiroj t'ju tregoj se si na ishte shumë dëshirë që të monitoronim postgres dhe disa entitete të tjera brenda klasterit OpenShift dhe si e bëmë këtë.
Kemi pasur:
- Openshift
- Helm
- Prometheus
Për të punuar me aplikacionin java, gjithçka ishte mjaft e thjeshtë dhe e qartë, dhe nëse të jemi më konkret, atëherë:
1) Shtimi në build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"2) Nisja e prometheus me konfigurimin
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'3) Shtimi i shfaqjes në Grafana
Gjithçka ishte mjaft e thjeshtë dhe prozaike deri sa erdhi momenti i monitorimit të bazave që ndodhen pranë në namespaces (po, kjo është keq, askush nuk e bën këtë, por ndodhin gjëra të ndryshme).
Si funksionon kjo?
PĂ«rveç pod-it me postgres dhe vetĂ« prometheus, na nevojitet edhe njĂ« entitet tjetĂ«r â exporter.
Exporter në një kuptim të përgjithshëm është një agjent që mbledh metrika nga aplikacioni ose madje serverit. Për postgres exporter është shkruar në Go, punon sipas parimit të ekzekutimit të skripteve sql në bazë dhe më pas rezultatet e marra i merr prometheus. Kjo gjithashtu lejon zgjerimin e metrikeve të mbledhura, duke shtuar të tuat.
Ne e shpërndajmë kështu (shembull deployment.yaml, asgjë e detyrueshme):
---
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: metricsPo ashtu, na duhej shërbimi dhe imazhi i rrjedhës.
Pas shpërndarjes, na do shumë që të gjithë të shikojnë njëri-tjetrin.
Shtojmë këtë pjesë në konfigurimin e Prometeus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187Dhe këtu gjithçka funksionoi, mbetet të shtojmë gjithçka në Grafana dhe të shijojmë rezultatet.
Përveç mundësisë për të shtuar kërkesat tuaja, në prometheus mund të ndryshoni konfigurimin, duke grumbulluar metrika më të targetuara që janë të nevojshme.
Në mënyrë të ngjashme është bërë për:
- Kafka
- Elasticsearch
- Mongo
P.S. Të dhënat mbi emrat, portet dhe gjithçka tjetër janë marrë nga ajri dhe nuk kanë asnjë informacion.
Linke të dobishme:
Burimi: habr.com
