Memantau postgres di dalam Openshift

Selamat siang, warga Habr!

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

Di pintu masuk mereka memiliki:

  • Bukahift
  • Kemudi
  • Prometheus


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

1) Menambahkan ke 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) Menambahkan tampilan ke Grafana

Semuanya cukup sederhana dan membosankan sampai tiba saatnya untuk memantau pangkalan yang terletak di dekatnya di namespace kami (ya, ini buruk, tidak ada yang melakukan ini, tetapi hal berbeda terjadi).

Bagaimana cara kerjanya?

Selain pod dengan postgres dan prometheus itu sendiri, kita memerlukan entitas lain - eksportir.

Eksportir dalam konsep abstrak adalah agen yang mengumpulkan metrik dari suatu aplikasi atau bahkan server. Untuk postgres eksportir, ditulis dalam Go, ia bekerja berdasarkan prinsip menjalankan skrip SQL di dalam database dan kemudian prometheus mengambil hasil yang diperoleh. Ini juga memungkinkan Anda memperluas metrik yang dikumpulkan dengan menambahkan metrik Anda sendiri.

Mari kita terapkan 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

Itu juga membutuhkan layanan dan imagestream

Setelah penerapan, kami sangat ingin semua orang dapat bertemu 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 berfungsi, yang tersisa hanyalah menambahkan semua bahan ini ke grafana dan menikmati hasilnya.

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

Hal ini dilakukan dengan cara serupa untuk:

  • Kafka
  • Elasticsearch
  • Mongo

PS Semua data nama, port dan selebihnya diambil dari udara dan tidak mengandung informasi apapun.

Tautan yang bermanfaat:
Daftar berbagai eksportir

Sumber: www.habr.com

Tambah komentar