رفتن به محتوا
بازگشت به وبلاگ
پایش

Prometheus Alertmanager: مسیریابی و Silencing پیشرفته

پیکربندی درخت مسیریابی Alertmanager، قوانین Inhibition، برنامه‌های Silence و اطلاع‌رسانی چند کانالی برای تیم‌های On-call.

مهر ۱۴۰۴
۱۰ دقیقه مطالعه

مقدمه

Alertmanager مؤلفه‌ای در اکوسیستم Prometheus است که routing هشدار، گروه‌بندی، silence کردن و ارسال اعلان را مدیریت می‌کند. بدون پیکربندی مناسب، یا با طوفان هشدار (هزاران اعلان تکراری) مواجه می‌شوید یا هشدارهای حیاتی را از دست می‌دهید. این راهنما نحوه طراحی قوانین routing هشدار را برای زیرساخت واقعی آموزش می‌دهد.

پیپ‌لاین هشدار

وقتی Prometheus یک قانون هشداردهی را ارزیابی می‌کند و آن را در حال fire می‌بیند، هشدار را به Alertmanager ارسال می‌کند:

۱. گروه‌بندی هشدارهای مشابه

۲. Routing هشدار به receiver مناسب

۳. Deduplication هشدارهای تکراری

۴. Silence هشدارها در پنجره‌های تعمیراتی

۵. Inhibition هشدارها هنگامی که هشدارهای با اولویت بالاتر در حال fire هستند

پیکربندی پایه Alertmanager

YAML
global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.gmail.com:587'
  smtp_from: 'alerts@company.com'

route:
  receiver: 'team-ops-email'
  group_by: ['alertname', 'cluster', 'service']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h

  routes:
    - match:
        severity: critical
      receiver: 'pagerduty-critical'
      group_wait: 10s

    - match_re:
        alertname: '(MySQL|Postgres).*'
      receiver: 'team-dba-slack'

Inhibition Rules

YAML
inhibit_rules:
  # اگر node down است، هشدارهای دیگر همان node را suppress کن
  - source_match:
      alertname: NodeDown
    target_match_re:
      alertname: '.*'
    equal: ['instance']

  # اگر دیسک پر است، هشدار استفاده بالا را suppress کن
  - source_match:
      alertname: DiskFull
    target_match:
      alertname: DiskUsageHigh
    equal: ['instance', 'mountpoint']

تست پیکربندی

BASH
# اعتبارسنجی فایل config
alertmanager --config.file=alertmanager.yml --check-config

# ارسال هشدار تست
curl -X POST http://localhost:9093/api/v2/alerts   -H 'Content-Type: application/json'   -d '[{"labels":{"alertname":"Test","severity":"critical"}}]'

# ایجاد silence برای تعمیرات
amtool silence add --author="ops" --duration=2h   alertname="NodeDown" instance="web-01.company.com"

پیکربندی صحیح Alertmanager تفاوت میان تیمی است که به حوادث واقعی پاسخ می‌دهد و تیمی که در سیل اعلان غرق شده است. از routing ساده شروع کنید، inhibition برای کاهش تکرار اضافه کنید، و routing زمان‌محور برای احترام به ساعت کاری تیمتان استفاده کنید.