ساخت اپ دارکوبی 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 Name | Mount Path |
|---|---|
alertmanager-data | /alertmanager |
مسیر /alertmanager مقدار پیشفرض --storage.path در ایمیج رسمی است. بدون این دیسک، silenceها و وضعیت ذخیرهشده پس از ریاستارت از بین میروند.
پس از ساخت اپ، صفحه اپ در دارکوب نمایش داده میشود و وضعیت اجرا، لاگها و تنظیمات از همانجا در دسترس هستند.
تست عملکرد
- پس از Ready شدن اپ، با فعالسازی آدرس خارجی، UI مربوط به Alertmanager در مرورگر باز میشود و باید درخواست یوزر/پسورد نمایش داده شود؛ با
hamravesh-userو رمزی که هش آن را ساختهاید وارد شوید. - از مسیر Status > Configuration باید همان محتوای
alertmanager.ymlبارگذاریشده دیده شود. - با دستور زیر میتوان یک آلرت آزمایشی به 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"
}
}
]'
- در صفحه Alerts مربوط به Alertmanager باید آلرت
TestAlertدیده شود.
قدم بعدی
پس از آما دهشدن Alertmanager، آن را به اپ پرومتئوس بازارچه متصل کنید:
راهنماییهای مرتبط
این راهنمایی کاربردی بود؟
با ثبت بازخوردتان در بهبود کیفیت مستندات مشارکت داشته باشید.