Siku njema, wakazi wa Habr!
Leo nataka kukuambia jinsi tulivyotaka kufuatilia postgres na vyombo vingine kadhaa ndani ya nguzo ya OpenShift na jinsi tulivyoifanya.
Kwenye mlango walikuwa na:
- Fursa
- Helm
- Prometheus
Kufanya kazi na programu ya java, kila kitu kilikuwa rahisi na wazi, au kuwa sahihi zaidi:
1) Kuongeza kujenga.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Endesha prometheus na usanidi
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Kuongeza onyesho kwa Grafana
Kila kitu kilikuwa rahisi na cha kushangaza hadi wakati ulipofika wa kufuatilia besi ambazo ziko karibu katika nafasi yetu ya majina (ndio, hii ni mbaya, hakuna mtu anayefanya hivi, lakini mambo tofauti hufanyika).
Inafanyaje kazi?
Mbali na pod na postgres na prometheus yenyewe, tunahitaji chombo kimoja zaidi - nje.
Msafirishaji katika dhana dhahania ni wakala anayekusanya vipimo kutoka kwa programu au hata seva. Kwa msafirishaji wa postgres, imeandikwa katika Go, inafanya kazi kwa kanuni ya kuendesha hati za SQL ndani ya hifadhidata na kisha prometheus huchukua matokeo yaliyopatikana. Hii pia hukuruhusu kupanua vipimo vilivyokusanywa kwa kuongeza chako.
Wacha tuiweke kama hii (mfano deployment.yaml, isiyofunga):
---
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
Pia ilihitaji huduma na mkondo wa picha
Baada ya kupelekwa, tunataka sana kila mtu aonane.
Ongeza kipande kifuatacho kwenye usanidi wa Prometheus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Na kisha kila kitu kilifanya kazi, kilichobaki ni kuongeza vitu hivi vyote kwenye grafana na kufurahiya matokeo.
Mbali na uwezo wa kuongeza hoja zako mwenyewe, unaweza kubadilisha mipangilio katika prometheus, kukusanya vipimo vinavyolengwa zaidi.
Hii ilifanywa kwa njia sawa kwa:
- Kafka
- Elasticsearch
- Mongo
PS Data zote kwenye majina, bandari na nyinginezo huchukuliwa kutoka hewani na haina taarifa yoyote.
Viungo muhimu:
Chanzo: mapenzi.com