پرش به مطلب اصلی
ساخت اپ دارکوبی Alertmanager

ساخت اپ دارکوبی Alertmanager

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

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

از طریق دارکوب در کنسول هم‌روش، می‌توان ایمیج رسمی prom/alertmanager را به‌عنوان یک اپ داکری مستقر کرد و آن را به‌عنوان مقصد آلرت برای اپ پرومتئوس بازارچه استفاده کرد. در این راهنما، دسترسی به UI و API با Basic Auth محافظت می‌شود.


گام اول: ساخت هش رمز Basic Auth

رمز عبور UI و API باید به‌صورت bcrypt در فایل وب ذخیره شود. روی ماشین محلی:

htpasswd -nBC 10 "" | tr -d ':\n'

پس از اجرا رمز را وارد کنید؛ خروجی یک رشته bcrypt است و در گام کانفیگ به‌جای REPLACE_WITH_BCRYPT_HASH قرار می‌گیرد. نام کاربری نمونه این راهنما hamravesh-user است.


گام دوم: انتخاب ایمیج

از داشبورد دارکوب، گزینه ساخت اپ و سپس داکر ایمیج انتخاب می‌شود. اطلاعات ایمیج به این ترتیب وارد می‌شود:

فیلدمقدار
آدرس ایمیجprom/alertmanager
تگ ایمیجv0.27.0

گام سوم: اطلاعات عمومی

در تب اطلاعات عمومی، اطلاعات پایه اپ مشخص می‌شود:

فیلدمقدار
نام اپalertmanager
پورت سرویس9093
دستور اجرایی/bin/sh
ورودی‌ها/etc/alertmanager/start.sh

گام چهارم: پورت‌ها

در تب پورت‌ها، پورت Alertmanager به این ترتیب تعریف می‌شود:

فیلدمقدار
نامhttp
پورت کانتینر9093
پروتکلTCP

با فعال‌سازی آدرس خارجی در همین تب، امکان دسترسی به UI و API از خارج از کلاستر با دامنه فراهم می‌شود. همین آدرس بعداً در کانفیگ پرومتئوس به‌عنوان مقصد Alertmanager استفاده می‌شود.


گام پنجم: کانفیگ Alertmanager و Basic Auth

فایل‌های start.sh، alertmanager.yml و web.config.yml از طریق تب Custom Config مانت می‌شوند:

configmap:
configmapItems:
alertmanager-start:
path: /etc/alertmanager/start.sh
subPath: start.sh
value:
start.sh: |-
#!/bin/sh
exec /bin/alertmanager \
--config.file=/etc/alertmanager/alertmanager.yml \
--web.config.file=/etc/alertmanager/web.config.yml \
--cluster.listen-address= \
--storage.path=/alertmanager

alertmanager-config:
path: /etc/alertmanager/alertmanager.yml
subPath: alertmanager.yml
value:
alertmanager.yml: |-
global:
resolve_timeout: 5m

route:
receiver: default
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h

receivers:
- name: default

alertmanager-web:
path: /etc/alertmanager/web.config.yml
subPath: web.config.yml
value:
web.config.yml: |-
basic_auth_users:
hamravesh-user: "$2y$10$REPLACE_WITH_BCRYPT_HASH"

در این نمونه آزمایشی، receiver با نام default فقط آلرت را می‌پذیرد و اعلان خارجی ارسال نمی‌کند؛ وضعیت آلرت‌ها از UI خود Alertmanager قابل مشاهده است. برای ارسال واقعی (ایمیل وب‌هوک و…) باید بلوک‌های مربوط مثل email_configs یا webhook_configs به receiver اضافه شوند.

با کلیک روی «ذخیره تغییرات»، تنظیمات ثبت می‌شود.


گام ششم: دیسک

برای ماندگاری silenceها و داده داخلی Alertmanager پس از ری‌استارت، در مرحله افزودن دیسک یک پارتیشن تعریف می‌شود:

Partition NameMount Path
alertmanager-data/alertmanager

مسیر /alertmanager مقدار پیش‌فرض --storage.path در ایمیج رسمی است. بدون این دیسک، silenceها و وضعیت ذخیره‌شده پس از ری‌استارت از بین می‌روند.

پس از ساخت اپ، صفحه اپ در دارکوب نمایش داده می‌شود و وضعیت اجرا، لاگ‌ها و تنظیمات از همان‌جا در دسترس هستند.


تست عملکرد

  1. پس از Ready شدن اپ، با فعال‌سازی آدرس خارجی، UI مربوط به Alertmanager در مرورگر باز می‌شود و باید درخواست یوزر/پسورد نمایش داده شود؛ با hamravesh-user و رمزی که هش آن را ساخته‌اید وارد شوید.
  2. از مسیر Status > Configuration باید همان محتوای alertmanager.yml بارگذاری‌شده دیده شود.
  3. با دستور زیر می‌توان یک آلرت آزمایشی به API فرستاد؛ به‌جای <ALERTMANAGER_URL> آدرس خارجی سرویس و به‌جای YOUR_PASSWORD رمز واقعی قرار می‌گیرد:
curl -X POST '<ALERTMANAGER_URL>/api/v2/alerts' \
-u 'hamravesh-user:YOUR_PASSWORD' \
-H 'Content-Type: application/json' \
-d '[
{
"labels": {
"alertname": "TestAlert",
"severity": "warning"
},
"annotations": {
"summary": "Alertmanager PoW test"
}
}
]'
  1. در صفحه Alerts مربوط به Alertmanager باید آلرت TestAlert دیده شود.

قدم بعدی

پس از آماده‌شدن Alertmanager، آن را به اپ پرومتئوس بازارچه متصل کنید:

راهنمایی‌های مرتبط

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

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