پرش به مطلب اصلی
پیکربندی آلرتینگ در پرومتئوس

پیکربندی آلرتینگ در پرومتئوس

بازارچه ابریخواندن 6 دقیقه

پرومتئوس شرط‌های آلرت را ارزیابی می‌کند و در صورت نیاز وضعیت آن‌ها را به Alertmanager می‌فرستد تا گروه‌بندی، سکوت و ارسال اعلان از آنجا مدیریت شود.

در این راهنما، کانفیگ ازپیش‌تعریف‌شده اپ پرومتئوس ویرایش می‌شود تا ruleهای آلرت و مقصد Alertmanager تنظیم شوند.

در اپ آماده پرومتئوس بازارچه، کانفیگ prometheus-config از قبل تعریف شده و روی مسیر /etc/config مانت می‌شود. این کانفیگ سه فایل را در یک ConfigMap نگه می‌دارد:

کلید در dataمسیر داخل کانتینرکاربرد
prometheus.yml/etc/config/prometheus.ymlکانفیگ اصلی؛ از جمله اتصال به Alertmanager و ارجاع به فایل ruleها
alerting_rules.yml/etc/config/alerting_rules.ymlتعریف alerting ruleها
recording_rules.yml/etc/config/recording_rules.ymlتعریف recording ruleها (اختیاری)

برای پیکربندی آلرتینگ، همین کانفیگ موجود ویرایش می‌شود؛ نیازی به ساخت کانفیگ جدید نیست.

پیش‌نیازها


گام اول: باز کردن کانفیگ موجود

  1. وارد صفحه اپ پرومتئوس در کنسول هم‌روش شوید.
  2. از تب تنظیمات و بخش کانفیگ‌ها، کانفیگ prometheus-config را برای ویرایش باز کنید.
  3. مقدار نام کانفیگ باید prometheus-config و mountPath برابر /etc/config باشد. این مقادیر را تغییر ندهید.

در ادیتور data.yaml سه کلید دیده می‌شود. مقدار اولیه آن‌ها معمولاً شبیه نمونه زیر است:

prometheus.yml: |-
rule_files:
- /etc/config/recording_rules.yml
- /etc/config/alerting_rules.yml

alerting_rules.yml: |-
# alert

recording_rules.yml: |-
# record

گام دوم: افزودن آدرس Alertmanager در prometheus.yml

در همان ادیتور، زیر کلید prometheus.yml بخش alerting اضافه می‌شود تا پرومتئوس بداند آلرت‌ها را به کجا بفرستد. اگر Alertmanager با Basic Auth محافظت می‌شود، بلوک basic_auth هم در همین بخش می‌آید. rule_files از قبل به مسیرهای داخل /etc/config اشاره می‌کند و باید حفظ شود:

prometheus.yml: |-
global:
scrape_interval: 15s
evaluation_interval: 15s

alerting:
alertmanagers:
- scheme: https
basic_auth:
username: hamravesh-user
password: YOUR_PASSWORD
static_configs:
- targets:
- alertmanager.example.com

rule_files:
- /etc/config/recording_rules.yml
- /etc/config/alerting_rules.yml

scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
  • به‌جای alertmanager.example.com آدرس واقعی Alertmanager قرار داده می‌شود.
  • به‌جای YOUR_PASSWORD همان رمزی گذاشته می‌شود که هش bcrypt آن در web.config.yml مربوط به Alertmanager ثبت شده است.
  • اگر Alertmanager روی HTTP و پورت پیش‌فرض باشد، می‌توان scheme را http گذاشت و پورت را در targets آورد؛ مثلاً alertmanager.example.com:9093.
  • job مربوط به localhost:9090 اسکرپ خودِ پرومتئوس را نگه می‌دارد.

گام سوم: تکمیل alerting_rules.yml

بدون حداقل یک alerting rule، پرومتئوس آلرتی برای ارسال به Alertmanager تولید نمی‌کند. به‌جای کامنت # alert، محتوای واقعی rule در کلید alerting_rules.yml قرار می‌گیرد:

alerting_rules.yml: |-
groups:
- name: instance-availability
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Instance {{ $labels.instance }} is down"
description: "Job {{ $labels.job }} has been unreachable for more than 1 minute."

کلید recording_rules.yml در صورت نیاز به recording rule تکمیل می‌شود؛ برای فقط اتصال به Alertmanager می‌توان آن را خالی یا با کامنت باقی گذاشت.

پس از ویرایش، روی ویرایش کلیک می‌شود تا تغییرات ذخیره شوند.


گام چهارم: بررسی از UI پرومتئوس

پس از ری‌استارت، از پنل وب پرومتئوس بررسی می‌شود که کانفیگ واقعاً بارگذاری شده و Alertmanager در لیست فعال‌ها دیده می‌شود.

۱. بارگذاری کانفیگ

از منوی بالا مسیر Status > Configuration باز می‌شود. در YAML نمایش‌داده‌شده باید این موارد دیده شوند:

  • بخش alerting.alertmanagers با همان targets که در کانفیگ گذاشته شده است
  • مقادیر rule_files برابر /etc/config/recording_rules.yml و /etc/config/alerting_rules.yml

اگر این بخش‌ها نبودند، تغییرات ذخیره نشده یا پاد با کانفیگ قبلی بالا آمده است؛ ری‌استارت را دوباره انجام دهید.

۲. شناسایی Alertmanager

از مسیر Status > Alertmanagers وضعیت کشف Alertmanager بررسی می‌شود:

  • در فهرست Active باید URL مربوط به Alertmanager (مثلاً https://alertmanager.example.com/api/v2/alerts) دیده شود
  • خالی‌بودن Active و پر بودن Dropped معمولاً یعنی آدرس، scheme یا دسترسی شبکه اشتباه است

۳. بارگذاری ruleها

از مسیر Status > Rules گروه instance-availability و rule با نام InstanceDown باید در حالت سالم (بدون خطا) دیده شوند. اگر rule با پیام خطا نمایش داده شود، سینتکس YAML یا عبارت expr را اصلاح کنید.

۴. وضعیت آلرت‌ها

از منوی Alerts وضعیت هر rule قابل مشاهده است:

  • Inactive: شرط برقرار نیست
  • Pending: شرط برقرار است ولی هنوز مدت for تمام نشده
  • Firing: آلرت فعال است و باید به Alertmanager ارسال شود

برای تست سریع می‌توان موقتاً یک target عمداً از دسترس خارج کرد یا rule آزمایشی با شرط همیشه درست (مثل vector(1)) تعریف کرد تا وضعیت Firing دیده شود؛ پس از تست، rule آزمایشی حذف شود.

۵. مشاهده در UI مربوط به Alertmanager

اگر Alertmanager UI در دسترس باشد، آلرت‌های Firing باید در صفحه Alerts همان سرویس هم ظاهر شوند. نبودن آلرت در Alertmanager با وجود Firing در پرومتئوس، معمولاً به مشکل شبکه یا URL نادرست در بخش Alertmanagers برمی‌گردد.

قدم‌های بعدی

این راهنمایی کاربردی بود؟

با ثبت بازخوردتان در بهبود کیفیت مستندات مشارکت داشته باشید.