Memantau postgres dalam Openshift

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:
Senarai pelbagai pengeksport

Sumber: www.habr.com

Tambah komen