Sveiki, Habra iedzÄ«votÄji!
Å odien vÄlos pastÄstÄ«t, kÄ mÄs vÄlÄjÄmies uzraudzÄ«t Postgres un vÄl dažas entitÄtes iekÅ” OpenShift klastera, un kÄ mÄs to izdarÄ«jÄm.
Mums bija:
- OpenShift
- Helm
- Prometheus
StrÄdÄjot ar Java lietotni, viss bija diezgan vienkÄrÅ”i un caurskatÄmi, precÄ«zÄk sakot:
1) PievienoŔana pie build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"2) Prometheus palaiÅ”ana ar konfigurÄciju
- job_name: 'job-name'
metrics_path: '\/actuator\/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'3) Pievienojot attÄlojumu Grafana
Viss bija diezgan vienkÄrÅ”i un ikdieniŔķi lÄ«dz brÄ«dim, kad nÄcÄs uzraudzÄ«t datu bÄzes, kas atrodas tuvumÄ mÅ«su namespaces (jÄ, tas nav labi, neviens tÄ nedara, bet dažreiz tÄ gadÄs).
KÄ tas strÄdÄ?
Papildus podam ar Postgres un paÅ”u Prometheus mums nepiecieÅ”ama vÄl viena entitÄte ā eksportÄtÄjs.
EksportÄtÄjs ir aÄ£ents, kas vÄc metriku no lietotnes vai pat serveris. Postgres eksportÄtÄjs ir uzrakstÄ«ts Go valodÄ, darbojas pÄc principa, kurÄ tiek izpildÄ«ti SQL skripti datu bÄzÄ, un pÄc tam iegÅ«tie rezultÄti tiek savÄkti Prometheus. Tas arÄ« ļauj paplaÅ”inÄt vÄcamÄs metrikas, pievienojot savas.
MÄs to deployÄjam Å”ÄdÄ veidÄ (piemÄrs deployment.yaml, nav saistoÅ”s):
---
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: metricsTÄpat arÄ« ir nepiecieÅ”ams serviss un image stream
PÄc deployment mÄs ļoti vÄlamies, lai visi viens otram redzÄtu.
Pievienojam Prometheus konfigurÄcijai Å”Ädu fragmentu:
- job_name: 'postgres_exporter'
metrics_path: '\/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187Un Å”eit viss sÄka darboties, palika tikai pievienot visu Å”o LabÄ un izbaudÄ«t rezultÄtu.
Papildus iespÄjai pievienot savus pieprasÄ«jumus, prometheus var mainÄ«t iestatÄ«jumus, savÄcot mÄrÄ·tiecÄ«gÄkas nepiecieÅ”amÄs metriki.
LÄ«dzÄ«gÄ veidÄ tika izdarÄ«ts attiecÄ«bÄ uz:
- Kafka
- Elasticsearch
- Mongo
P.S. Visi dati par nosaukumiem, portiem un pÄrÄjo Åemti no gaisa un nerada nekÄdus faktus.
Noderīgas saites:
Avots: habr.com
