Tere, Habra elanikud!
TÀna tahan rÀÀkida teile, kuidas me soovisime monitoorida Postgres'i ja veel paar objekti OpenShift'i klastris ning kuidas me seda tegime.
Sisendiks oli meil:
- OpenShift
- Helm
- Prometheus
Java rakenduse kasutamine oli ĂŒsna lihtne ja lĂ€bipaistev, tĂ€psemalt öeldes:
1) Lisamine failile build.gradle
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 arusaadav, kuni saabus hetk, mil pidime monitoorima andmebaase, mis asuvad meie lĂ€hedal nimiruumis (jah, see on halb, keegi ei tee nii, aga miski ei ole tĂ€iuslik).
Kuidas see toimib?
Lisaks Postgres'i pod'ile ja Prometheusele on meil vajalik veel ĂŒks objekt â eksporter.
Eksporter on abstraktses mÔttes agent, mis kogub metrikat rakenduselt vÔi isegi serverilt. Postgres'i ekspoorter on kirjutatud Go-s, see töötab pÔhimÔttel, et kÀivitab SQL skripte andmebaasis ja kogub seejÀrel saadaolevad tulemused Prometheusele. See vÔimaldab ka kogutavaid meetrikaid laiendada, lisades oma.
Deployime selle jÀrgmise viisi jÀrgi (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 on vaja teenust ja imidĆŸivoogu
PĂ€rast deploymist tahame, et kĂ”ik ĂŒksteist nĂ€eksid.
Lisame Prometheuse konfiguraatorisse jÀrgmise lÔigu:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187Ja siin hakkas kÔik tööle, jÀi vaid kÔik see Grafanasse lisada ja nautida tulemust.
Lisaks oma pÀringute lisamise vÔimalusele saab Prometheuses muuta seadistusi, et koguda vajalikud mÔÔdikud veelgi sihipÀrasemalt.
Analoge meetodit kasutati jÀrgnevate jaoks:
- Kafka
- Elasticsearch
- Mongo
P.S. KÔik andmed nimede, portide ja muu osas on vÀlja mÔeldud ja ei kanna mingit teavet.
Kasulikud lingid:
Allikas: habr.com
