Magandang araw, mga residente ng Habr!
Ngayon gusto kong sabihin sa iyo kung paano namin gustong subaybayan ang mga postgres at ilang iba pang entity sa loob ng OpenShift cluster at kung paano namin ito ginawa.
Sa pasukan ay mayroon silang:
- Nagbukas
- timon
- Promiteyus
Upang gumana sa isang java application, ang lahat ay medyo simple at transparent, o upang maging mas tumpak:
1) Pagdaragdag sa build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Patakbuhin ang prometheus na may configuration
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Pagdaragdag ng isang display sa Grafana
Ang lahat ay medyo simple at prosaic hanggang sa dumating ang sandali upang subaybayan ang mga base na matatagpuan malapit sa aming namespace (oo, ito ay masama, walang gumagawa nito, ngunit iba't ibang mga bagay ang nangyayari).
Paano ito gumagana?
Bilang karagdagan sa pod na may mga postgres at prometheus mismo, kailangan namin ng isa pang entity - exporter.
Ang isang exporter sa abstract na konsepto ay isang ahente na nangongolekta ng mga sukatan mula sa isang application o kahit isang server. Para sa postgres exporter, ito ay nakasulat sa Go, ito ay gumagana sa prinsipyo ng pagpapatakbo ng mga SQL script sa loob ng database at pagkatapos ay kinukuha ng prometheus ang mga resultang nakuha. Nagbibigay-daan din ito sa iyo na palawakin ang mga nakolektang sukatan sa pamamagitan ng pagdaragdag ng iyong sarili.
I-deploy natin ito nang ganito (halimbawa deployment.yaml, non-binding):
---
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
Nangangailangan din ito ng serbisyo at imagestream
Pagkatapos ng deployment, gusto talaga naming makita ng lahat ang isa't isa.
Idagdag ang sumusunod na piraso sa Prometheus config:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
At pagkatapos ay gumana ang lahat, ang natitira ay idagdag ang lahat ng bagay na ito sa grafana at tamasahin ang resulta.
Bilang karagdagan sa kakayahang magdagdag ng sarili mong mga query, maaari mong baguhin ang mga setting sa prometheus, nangongolekta ng mas naka-target na sukatan.
Ginawa ito sa katulad na paraan para sa:
- Kafka
- Elasticsearch
- Mongo
PS Lahat ng data sa mga pangalan, port at iba pa ay kinuha mula sa himpapawid at hindi naglalaman ng anumang impormasyon.
Mga kapaki-pakinabang na link:
Pinagmulan: www.habr.com