Labdien, Habras iedzīvotāji!
Šodien es vēlos jums pastāstīt, kā mēs patiešām vēlējāmies pārraudzīt Postgres un dažas citas entītijas OpenShift klasterī un kā mēs to paveicām.
Pie ieejas viņiem bija:
- Openshift
- Stūre
- Prometejs
Lai strādātu ar java lietojumprogrammu, viss bija diezgan vienkāršs un caurspīdīgs, vai precīzāk:
1) Pievienošana failam build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Palaidiet Prometheus ar konfigurāciju
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafana displeja pievienošana
Viss bija diezgan vienkārši un prozaiski, līdz pienāca brīdis uzraudzīt bāzes, kas atrodas netālu no mūsu vārdu telpā (jā, tas ir slikti, neviens to nedara, bet notiek dažādas lietas).
Kā tas darbojas?
Papildus podam ar postgresu un pašu Prometeju mums ir vajadzīga vēl viena vienība - eksportētājs.
Eksportētājs abstraktā jēdzienā ir aģents, kas apkopo metriku no lietojumprogrammas vai pat servera. Postgres eksportētājam tas ir rakstīts Go, tas darbojas pēc principa palaist SQL skriptus datu bāzē un tad prometheus paņem iegūtos rezultātus. Tas arī ļauj paplašināt apkopoto metriku, pievienojot savu.
Izvietosim to šādi (piemērs deployment.yaml, nesaistoš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: metrics
Tam bija vajadzīgs arī pakalpojums un attēlu plūsma
Pēc izvietošanas mēs patiešām vēlamies, lai visi redzētu viens otru.
Pievienojiet šo daļu Prometheus konfigurācijai:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Un tad viss izdevās, atliek tikai pievienot visu šo lietu grafānai un baudīt rezultātu.
Papildus iespējai pievienot savus vaicājumus varat mainīt Prometheus iestatījumus, apkopojot mērķtiecīgākus rādītājus.
Tas tika darīts līdzīgā veidā:
- Kafka
- Elastikas meklēšana
- Mongo
PS Visi dati par nosaukumiem, ostām un pārējo ir ņemti no gaisa un nesatur nekādu informāciju.
Noderīgas saites:
Avots: www.habr.com