مراقبة postgres داخل Openshift

يومكم سعيد يا سكان حبر!

اليوم أريد أن أخبركم كيف أردنا حقًا مراقبة postgres واثنين من الكيانات الأخرى داخل مجموعة OpenShift وكيف فعلنا ذلك.

وكان عند المدخل:

  • فتح
  • قاد
  • محب العمل


للعمل مع تطبيق جافا، كان كل شيء بسيطًا وشفافًا للغاية، أو لنكون أكثر دقة:

1) الإضافة إلى build.gradle

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

2) تشغيل بروميثيوس مع التكوين

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

3) إضافة عرض إلى Grafana

كان كل شيء بسيطًا ومبتذلاً للغاية حتى جاءت لحظة مراقبة القواعد الموجودة بالقرب من مساحة الاسم لدينا (نعم، هذا أمر سيء، لا أحد يفعل ذلك، ولكن تحدث أشياء مختلفة).

كيف يعمل؟

بالإضافة إلى الكبسولة التي تحتوي على Postgres وPrometheus نفسها، نحتاج إلى كيان آخر - المصدر.

المصدر في المفهوم المجرد هو وكيل يجمع المقاييس من تطبيق أو حتى من خادم. بالنسبة لمصدر postgres فهو مكتوب بلغة Go ويعمل على مبدأ تشغيل سكربتات SQL داخل قاعدة البيانات ومن ثم يأخذ بروميثيوس النتائج التي تم الحصول عليها. يتيح لك هذا أيضًا توسيع المقاييس المجمعة عن طريق إضافة المقاييس الخاصة بك.

لننشره على هذا النحو (على سبيل المثال، Deployment.yaml، غير ملزم):


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

كما أنها تتطلب خدمة وتدفق الصور

بعد النشر، نريد حقًا أن يرى الجميع بعضهم البعض.

أضف القطعة التالية إلى تكوين Prometheus:

  - job_name: 'postgres_exporter'
    metrics_path: '/metrics'
    scrape_interval: 5s
    dns_sd_configs:
    - names:
      - 'postgres-exporter'
      type: 'A'
      port: 9187

وبعد ذلك نجح كل شيء، كل ما تبقى هو إضافة كل هذه الأشياء إلى الجرفانا والاستمتاع بالنتيجة.

بالإضافة إلى القدرة على إضافة استعلاماتك الخاصة، يمكنك تغيير الإعدادات في بروميثيوس، وجمع المزيد من المقاييس المستهدفة.

وقد تم ذلك بطريقة مماثلة لـ:

  • كافكا
  • Elasticsearch
  • مونغو

ملحوظة: جميع البيانات المتعلقة بالأسماء والمنافذ والباقي مأخوذة من الجو ولا تحتوي على أي معلومات.

روابط مفيدة:
قائمة المصدرين المختلفة

المصدر: www.habr.com

إضافة تعليق