پرش به مطلب اصلی

هشدارها و کانال‌های اعلان

هشدار از دو چیز ساخته می‌شود: یک کانال (پیام کجا برود) و یک قاعدهٔ هشدار (کدام رویداد پیام بفرستد). هر دو در تنظیمات ← وب‌هوک‌ها هستند.

رویدادهایی که می‌توانید مشترکشان شوید​

رویدادچه وقت فعال می‌شود
issue.createdنوع تازه‌ای از استثنا برای اولین بار دیده می‌شود
event.receivedهر رویداد خطا می‌رسد (پرسروصداست — محدودش کنید)
issue.regressedخطای حل‌شده دوباره برمی‌گردد
autofix.startedیک اجرای رفع خودکار شروع می‌شود
autofix.mr_createdرفع خودکار مرج‌ریکوئست باز کرد
autofix.failedرفع خودکار شکست خورد
monitor.failedیک مانیتور کران خراب است
monitor.recoveredمانیتور کران دوباره سالم شد
uptime.downیک مانیتور آپ‌تایم قطع شد
uptime.upمانیتور آپ‌تایم دوباره وصل شد
feedback.receivedبازخورد کاربر تازه‌ای رسید
wallet.balance_lowموجودی کیف پول از آستانه‌ای که گذاشته‌اید پایین‌تر رفت

نوع کانال‌ها​

نوعچه چیزی لازم دارد
webhookیک آدرس. ارورا قالب رندرشده را در بدنه POST می‌کند.
mattermostآدرس وب‌هوک ورودی
telegramیک چت متصل (پایین‌تر) — هیچ توکن رباتی لازم نیست
baleیک چت متصل (پایین‌تر)
emailیک نشانی ایمیل
smsیک شمارهٔ موبایل

تلگرام و بله — اتصال چت​

ارورا ربات‌های خودش را دارد، پس شما هیچ‌وقت توکن ربات نمی‌سازید و جایی نمی‌چسبانید:

  1. تنظیمات ← وب‌هوک‌ها ← اتصال چت تلگرام/بله. ارورا یک پیوند کوتاه‌عمر می‌دهد.
  2. پیوند را باز کنید و Start را بزنید. حالا آن چت به سازمان شما وصل است.
  3. کانالی از همان نوع بسازید و چت متصل را انتخاب کنید.

چت‌ها به تفکیک سازمان وصل می‌شوند: هر کانال فقط می‌تواند به چتی پیام بدهد که از همان سازمان متصل شده باشد.

قالب‌ها​

هر کانال یک قالب اختیاری با نشانه‌های {{ placeholder }} می‌گیرد. نشانه‌های ناشناخته به رشتهٔ خالی تبدیل می‌شوند.

نشانه‌های در دسترس: {{ event }}، {{ title }}، {{ body }}، {{ url }}، {{ level }}، {{ issue_id }}.

پیش‌فرض هر نوع کانال:

webhook {"event": "{{ event }}", "title": "{{ title }}", "body": "{{ body }}",
"url": "{{ url }}", "level": "{{ level }}", "issue_id": "{{ issue_id }}"}
mattermost **{{ title }}**\n{{ body }}\n[View in Errora]({{ url }})
telegram {{ title }}\n{{ body }}\n{{ url }}
bale {{ title }}\n{{ body }}\n{{ url }}
email {{ body }}\n\n{{ url }}
sms Errora: {{ title }}

دو چیز ویرایش قالب را بی‌خطر می‌کند:

  • پیش‌نمایش زنده قالب شما را دقیقاً همان‌طور رندر می‌کند که یک اعلان واقعی رندر می‌شود.
  • ارسال آزمایشی همین حالا یک اعلان نمونه می‌فرستد و پاسخ خود ارائه‌دهنده را نشان می‌دهد، پس آدرس وب‌هوک اشتباه یا چت قطع‌شده به‌جای سکوت، با صدای بلند شکست می‌خورد.

قواعد هشدار​

هر قاعده یک نوع رویداد را به یک کانال وصل می‌کند و در صورت نیاز به یک پروژه محدود می‌شود. برای هر جفت (رویداد، کانال) که می‌خواهید یک قاعده بسازید.

# ۱. ساخت کانال
curl -X POST "$ERRORA/api/v1/organizations/$ORG_ID/channels" \
-H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Ops webhook","type":"webhook","config":{"url":"https://ops.example.com/hooks/errora"}}'

# ۲. وصل‌کردن یک رویداد به آن
curl -X POST "$ERRORA/api/v1/organizations/$ORG_ID/alert-rules" \
-H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"event_type":"issue.created","channel":"<channel_id>","project":"<project_id>","is_active":true}'

مدیریت کانال‌ها و قواعد به توانمندی webhook:manage نیاز دارد.

هشدار کیف پول​

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

کم‌کردن نویز​

  • issue.created را به event.received ترجیح بدهید. دومی برای هر رویداد فعال می‌شود.
  • قواعد را به پروژه محدود کنید؛ چتی که نویز staging هم می‌گیرد، توسط اعضایش بی‌صدا می‌شود.
  • از آستانه‌های کران و آپ‌تایم استفاده کنید تا یک لغزش کسی را بیدار نکند.
  • رویدادهای کم‌اهمیت را به وب‌هوک یا Mattermost بفرستید و پیامک را برای چیزی نگه دارید که باید کسی را از خواب بیدار کند.

API​

GET/POST /api/v1/organizations/{org_id}/channels
PATCH/DELETE /api/v1/organizations/{org_id}/channels/{id}
GET /api/v1/organizations/{org_id}/channels/template-meta
POST /api/v1/organizations/{org_id}/channels/preview
POST /api/v1/organizations/{org_id}/channels/{id}/test
GET/POST /api/v1/organizations/{org_id}/alert-rules
PATCH/DELETE /api/v1/organizations/{org_id}/alert-rules/{id}
POST /api/v1/organizations/{org_id}/chat-links/start

عیب‌یابی​

نشانهعلت / راه‌حل
ارسال آزمایشی شکست می‌خوردمتن خطا پاسخ خود ارائه‌دهنده است — بخوانیدش؛ معمولاً آدرس اشتباه، توکن باطل یا چت متصل‌نشده
چیزی نمی‌رسد ولی ارسال آزمایشی کار می‌کندبرای آن نوع رویداد قاعده‌ای نیست، قاعده غیرفعال است یا به پروژهٔ دیگری محدود شده
چت تلگرام/بله در فهرست نیستپیوند منقضی شده یا Start زده نشده — پیوند تازه بگیرید
ایمیل نمی‌رسدنشانی و پوشهٔ اسپم را بررسی کنید
پیامک نمی‌رسدبررسی کنید شماره یک موبایل معتبر ایران باشد
پیام‌ها خیلی زیادندمشترک event.received شده‌اید؛ به issue.created تغییر دهید