Laba diena, Habro gyventojai!
Šiandien noriu jums pasakyti, kaip mes iš tikrųjų norėjome stebėti „postgres“ ir keletą kitų „OpenShift“ klasterio objektų ir kaip tai padarėme.
Prie įėjimo jie turėjo:
- Atviras poslinkis
- Šalmas
- Prometėjas
Norint dirbti su java programa, viskas buvo gana paprasta ir skaidra, o tiksliau:
1) Pridėti į build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Paleiskite „Prometheus“ su konfigūracija
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Ekrano pridėjimas prie Grafana
Viskas buvo gana paprasta ir proziška, kol atėjo momentas stebėti netoliese esančias bazes mūsų vardų erdvėje (taip, tai yra blogai, niekas to nedaro, bet nutinka įvairių dalykų).
Kaip tai veikia?
Be ankšties su postgres ir paties Prometėjo, mums reikia dar vieno subjekto - eksportuotojo.
Eksportuotojas abstrakčioje sąvokoje yra agentas, kuris renka metrikas iš programos ar net serverio. Postgres eksportuotojui tai parašyta Go, veikia SQL skriptų paleidimo principu duomenų bazės viduje ir tada prometheus paima gautus rezultatus. Tai taip pat leidžia išplėsti surinktą metriką įtraukiant savo.
Diegkime taip (pavyzdys deployment.yaml, neįpareigojantis):
---
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
Tam taip pat reikėjo paslaugos ir vaizdo srauto
Po dislokavimo mes tikrai norime, kad visi matytų vieni kitus.
Pridėkite šią dalį prie „Prometheus“ konfigūracijos:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Ir tada viskas pavyko, belieka pridėti visą šitą medžiagą į grafaną ir mėgautis rezultatu.
Be galimybės pridėti savo užklausų, galite keisti „Prometheus“ nustatymus, rinkdami tikslingesnę metriką.
Tai buvo padaryta panašiu būdu:
- Kafka
- Elasticearch
- mongo
PS Visi duomenys apie pavadinimus, prievadus ir visa kita yra paimti iš oro ir juose nėra jokios informacijos.
Naudingos nuorodos:
Šaltinis: www.habr.com