Memantau postgres di dalam OpenShift

Penduduk Habr!

Hari ini saya ingin memberi tahu Anda bagaimana kami benar-benar ingin memonitor postgres dan beberapa entitas di dalam cluster OpenShift dan bagaimana kami melakukannya.

Di pintu masuk, mereka memiliki:

  • Bukahift
  • Helm
  • Prometheus


Untuk bekerja dengan aplikasi java, semuanya cukup sederhana dan transparan, dan lebih tepatnya, lalu:

1) Menambahkan ke build.gradle

implementation "io.micrometer:micrometer-registry-prometheus" 

2) Luncurkan prometheus dengan konfigurasi

  - job_name: 'job-name' metrics_path: '/actuator/prometheus' scrape_interval: 5s kubernetes_sd_configs: - role: pod namespaces: names: - 'name' 

3) Menambahkan tampilan di Grafana

Semuanya cukup sederhana dan biasa-biasa saja sampai tiba saatnya untuk memantau basis yang ada di dekat kita di namespace (ya, ini buruk, tidak ada yang melakukannya, tetapi itu terjadi secara berbeda).

Bagaimana cara kerjanya?


Selain perapian dengan postgres dan prometheus itu sendiri, kita membutuhkan entitas lain - eksportir.

Eksportir abstrak adalah agen yang mengumpulkan metrik dari aplikasi atau bahkan server. Untuk postgres, eksportir ditulis dalam Go, ia bekerja berdasarkan prinsip menjalankan skrip berdasarkan sql inside dan prometheus mengambil hasilnya. Ini juga memungkinkan Anda untuk memperluas metrik yang dikumpulkan dengan menambahkan milik Anda.

Kami menyebarkannya seperti ini (contoh deployment.yaml, tidak mengikat apa pun):

 --- 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 

Dia juga membutuhkan layanan dan imajinasi.

Setelah penempatan, kami benar-benar ingin semua orang melihat satu sama lain.

Tambahkan bagian berikut ke 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 bekerja, tetap menambahkan semua kebaikan ini ke graphan dan menikmati hasilnya.

Selain kemampuan untuk menambahkan pertanyaan Anda sendiri, di prometheus Anda dapat mengubah pengaturan, mengumpulkan metrik yang diperlukan lebih bertarget.

Metode serupa dilakukan untuk:

  • Kafka
  • Pencarian Elastics
  • Mongo

PS Semua data pada nama, port dan sisanya diambil dari langit-langit dan tidak membawa informasi apa pun.

Tautan yang bermanfaat:
Daftar berbagai eksportir

Source: https://habr.com/ru/post/id467915/


All Articles