Selamat hari, penduduk Habr!
Hari ini saya ingin memberitahu anda bagaimana kami benar-benar mahu memantau postgres dan beberapa entiti lain dalam kelompok OpenShift dan bagaimana kami melakukannya.
Di pintu masuk mereka mempunyai:
- Membuka pintu
- Helm
- Prometheus
Untuk bekerja dengan aplikasi java, semuanya agak mudah dan telus, atau lebih tepatnya:
1) Menambah pada build.gradle
implementation "io.micrometer:micrometer-registry-prometheus"
2) Jalankan prometheus dengan konfigurasi
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Menambah paparan pada Grafana
Segala-galanya agak mudah dan prosaik sehingga tiba saatnya untuk memantau pangkalan yang terletak berdekatan dalam ruang nama kami (ya, ini buruk, tiada siapa yang melakukan ini, tetapi perkara yang berbeza berlaku).
Bagaimanakah ia berfungsi?
Sebagai tambahan kepada pod dengan postgres dan prometheus itu sendiri, kami memerlukan satu lagi entiti - pengeksport.
Pengeksport dalam konsep abstrak ialah ejen yang mengumpul metrik daripada aplikasi atau malah pelayan. Untuk pengeksport postgres, ia ditulis dalam Go, ia berfungsi berdasarkan prinsip menjalankan skrip SQL di dalam pangkalan data dan kemudian prometheus mengambil keputusan yang diperolehi. Ini juga membolehkan anda mengembangkan metrik yang dikumpul dengan menambahkan metrik anda sendiri.
Mari gunakannya seperti ini (contoh deployment.yaml, tidak mengikat):
---
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
Ia juga memerlukan perkhidmatan dan aliran imej
Selepas penempatan, kami benar-benar mahu semua orang melihat satu sama lain.
Tambahkan bahagian berikut pada konfigurasi Prometheus:
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
Dan kemudian semuanya berfungsi, yang tinggal hanyalah menambah semua bahan ini pada grafana dan nikmati hasilnya.
Selain keupayaan untuk menambah pertanyaan anda sendiri, anda boleh menukar tetapan dalam prometheus, mengumpul lebih banyak metrik disasarkan.
Ini dilakukan dengan cara yang sama untuk:
- Kafka
- Elasticsearch
- Mongo
PS Semua data mengenai nama, port dan selebihnya diambil dari udara dan tidak mengandungi sebarang maklumat.
Pautan yang berguna:
Sumber: www.habr.com