Tere, Habra elanikud!
Täna tahan rääkida, kuidas me tahtsime postgres'e ja veel paar elementi OpenShift'i klastris jälgida ning kuidas me seda tegime.
Sisendiks oli:
- Openshift
- Helm
- Prometheus
Java rakenduse jaoks oli kõik üsna lihtne ja selge, täpsemalt öeldes:
1) Lisamine build.gradle faili
implementation "io.micrometer:micrometer-registry-prometheus"2) Prometheuse käivitamine konfigureerimisega
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'3) Kuvamise lisamine Grafanas
Kõik oli üsna lihtne ja igapäevane kuni hetkeni, mil pidime jälgima andmebaase, mis asuvad meie kõrval nimede ruumis (jah, see on halb, keegi nii ei tee, aga elu on erinev).
Kuidas see töötab?
Lisaks postgres'e pod'ile ja tegelikult prometheus'ele on meil vajalik veel üks element — eksportija.
Eksportija laiemas mõttes on agent, mis kogub rakenduse metrikaid või isegi serverile. Postgres'e eksportija on kirjutatud Go-s, töötab põhimõttel, et käivitab SQL skripte andmebaasis ja seejärel toob saadud tulemused Prometheusele. See võimaldab ka laiendada kogutavaid metrikaid, lisades oma.
Meie deployime seda sellisel viisil (näidis deployment.yaml, mitte millegagi siduv):
---
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: metricsSamuti vajasime selle jaoks teenust ja image streami.
Pärast deployimist tahame, et kõik üksteist näeksid.
Lisame Prometheuse konfiguratsiooni sellise osa:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187Ja siin kõik töötas, jääb vaid see kõik Grafanasse lisada ja tulemust nautida.
Lisaks võimalusele lisada oma päringuid, võimaldab Prometheus muuta seadistusi, kogudes vajalikud mõõdikud sihipäraselt.
Samasugune lähenemine kehtib järgnevate jaoks:
- Kafka
- Elasticsearch
- Mongo
P.S. Kõik andmed nimede, portide jne kohta on välja mõeldud ja ei kanna mingit informatiivset sisu.
Kasulikud lingid:
Allikas: habr.com
