Tere päevast, Habri elanikud!
Täna tahan teile rääkida, kuidas me tegelikult tahtsime jälgida Postgresi ja mõnda muud OpenShifti klastri olemit ning kuidas me seda tegime.
Sissepääsu juures oli neil:
- Avab vahetuse
- Rooliratas
- Prometheus
Java-rakendusega töötamiseks oli kõik üsna lihtne ja läbipaistev või täpsemalt:
1) Lisamine faili build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Käivitage konfiguratsiooniga prometheus
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafanale kuva lisamine
Kõik oli üsna lihtne ja proosaline, kuni saabus hetk meie nimeruumis lähedal asuvate baaside jälgimiseks (jah, see on halb, keegi ei tee seda, kuid juhtub erinevaid asju).
Kuidas see töötab?
Lisaks postgresi ja prometheuse kaunale on meil vaja veel ühte üksust - eksportijat.
Eksportija abstraktses kontseptsioonis on agent, mis kogub mõõdikuid rakendusest või isegi serverist. Postgres eksportija jaoks on see kirjutatud Go keeles, see töötab põhimõttel, et käivitatakse andmebaasis SQL skriptid ja seejärel võtab prometheus saadud tulemused. See võimaldab teil ka kogutud mõõdikuid laiendada, lisades oma mõõdikuid.
Juurutame selle järgmiselt (näide deployment.yaml, mittesiduv):
---
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
See nõudis ka teenust ja pildivoogu
Pärast kasutuselevõttu tahame tõesti, et kõik üksteist näeksid.
Lisage Prometheuse konfiguratsiooni järgmine osa:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Ja siis kõik toimis, jääb üle vaid kogu see kraam grafanale lisada ja tulemust nautida.
Lisaks oma päringute lisamise võimalusele saate prometheuse seadeid muuta, kogudes sihipärasemaid mõõdikuid.
Seda tehti sarnasel viisil:
- Kafka
- Elasticsearch
- Mongo
PS Kõik andmed nimede, sadamate ja muu kohta on võetud õhust ega sisalda mingit infot.
Kasulikud lingid:
Allikas: www.habr.com