روز بخیر، ساکنان حبر!
امروز میخواهم به شما بگویم که واقعاً چگونه میخواستیم 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