نظارت بر 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، در Go نوشته شده است، بر اساس اصل اجرای اسکریپت های SQL در داخل پایگاه داده کار می کند و سپس prometheus نتایج به دست آمده را می گیرد. این همچنین به شما امکان می‌دهد با افزودن معیارهای خود، معیارهای جمع‌آوری‌شده را گسترش دهید.

بیایید آن را به این صورت مستقر کنیم (مثال 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

و سپس همه چیز درست شد، تنها چیزی که باقی می ماند این است که همه این مواد را به گرانا اضافه کنید و از نتیجه لذت ببرید.

علاوه بر توانایی افزودن پرس و جوهای خود، می توانید تنظیمات را در prometheus تغییر دهید و معیارهای هدفمند بیشتری را جمع آوری کنید.

این کار به روشی مشابه برای:

  • کافکا
  • ارزیابی جستجو
  • Mongo ها

PS تمام اطلاعات مربوط به نام ها، پورت ها و بقیه از هوا گرفته شده است و حاوی هیچ اطلاعاتی نیست.

پیوندهای مفید:
لیست صادرکنندگان مختلف

منبع: www.habr.com

اضافه کردن نظر