آشنایی با GoAlert: سیستم مدیریت آنکال و اعلان‌های اضطراری

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

گوآلرت GoAlert چیست؟

گوآلرت GoAlert یک پلتفرم جامع برای مدیریت برنامه‌های آنکال، ارسال هشدارها و مدیریت حوادث است. این سیستم به تیم‌های فنی کمک می‌کند تا به سرعت به مشکلات پاسخ دهند و از زمان خرابی سیستم‌ها (downtime) جلوگیری کنند. من در قسمت پایین goalert را در به سطوح مختلف تقسیم کرده و هر سطح را تشریح میدهم.

سطح ۱ - مفهوم کلی:

گوآلرت GoAlert یک سیستم مدیریت آنکال open-source هست که سه کار اصلی انجام میده:

  • مدیریت شیفت‌های آنکال (on-call scheduling)
  • صعود خودکار مشکلات (automated escalation)
  • ارسال نوتیفیکیشن از طریق SMS و تماس صوتی

سطح ۲ - نحوه استفاده‌ی اولیه:

۱. ورود به سیستم: از هر دستگاهی که به اینترنت وصل باشه میتونید وارد شوید

۲. تنظیم پروفایل:

  • وارد کردن روش‌های تماس (contact methods)
  • تنظیم قوانین نوتیفیکیشن
  • امکان تست کردن روش‌های تماس
  • مشاهده سرویس‌ها و پالیسی‌های مرتبط با شما

سطح ۳ - کار با آلرت‌ها:

۱. مشاهده آلرت‌ها:

  • جستجو و پیدا کردن سرویس‌های مهم
  • امکان favorite کردن سرویس‌ها برای دسترسی سریع‌تر

2. پاسخ به آلرت‌ها:

  • پاسخ از طریق SMS (برای شماره‌های آمریکایی)
  • پاسخ از طریق تماس صوتی
  • پاسخ از طریق رابط کاربری وب

سطح ۴ - مدیریت پیشرفته آلرت‌ها:

۱. صعود (Escalation) آلرت:

  • انتقال آلرت به شخص یا تیم دیگر در صورت نیاز

۲. مدیریت گروهی آلرت‌ها:

  • امکان Acknowledge یا Close کردن همه آلرت‌های یک سرویس
  • مفید برای زمان‌هایی که حجم زیادی آلرت دارید

توجه: Automated Escalation یعنی اگر یک مشکل یا آلرت در زمان مشخص شده توسط نفر اول حل نشد، به صورت خودکار ( با توجه به Escalation Policy) به نفر یا تیم بعدی منتقل میشه. این فرایند مطمئن میشه که هیچ مشکلی بدون رسیدگی باقی نمیمونه.

مثال:
مرحله ۱: ارسال به مهندس آنکال (۱۵ دقیقه صبر)

مرحله ۲: ارسال به تیم لید (۳۰ دقیقه صبر)

مرحله ۳: ارسال به مدیر پروژه (۱ ساعت صبر)

مرحله ۴: ارسال به همه اعضای تیم

مدیریت تیم‌ها در GoAlert:

مفهوم کاملا مرتبط با تیم‌ها, Rotationها هستن که به معنای دوره‌های چرخشی برای اعضای تیم هست. همچنین برای مشخص کردن زمان تحویل شیفت (Handoff Time) و تنظیم نوع چرخش (هفتگی، ماهانه و...) به کار می‌رود.

مثال:

- تیم الف: چرخش هفتگی، تحویل ساعت ۹ صبح

- تیم ب: چرخش دو هفته‌ای، تحویل ساعت ۶ عصر

سطح ۵- سناریوهای پیشرفته:

مثال عملی: مدیریت آنکالی بین دو تیم در مناطق زمانی مختلف:

۱. ایجاد دو Rotation برای هر تیم

۲. تنظیم یک Schedule مشترک

۳. تنظیم Assignment Rules برای هر تیم

۴. ایجاد Escalation Policy

۵. اتصال به سرویس مورد نظر

یکی از ویژگی های کلیدی goalert یکپارچه‌سازی با اکثر برنامه‌ها و سیستم های مانیتورینگ و آلرتینگ متداول مانند Prometheus AlertManager و همچنین گرافانا می‌باشد.

نحوه نصب و راه‌اندازی

پیش‌نیازها

یکی از بهترین روش‌های نصب goalert استفاده از داکر است. فایل داکر کامپوز نمونه در زیر آمده است. در این داکر کامپوز سعی کردیم بهترین حالت setup این سرویس را پیاده سازی کرده باشیم. همچنین برای مقادیر مربوط به یوزر دیتابیس, پسورد دیتابیس و پابلیک url از یک فایل .env استفاده کرده‌ایم.

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

یک سناریو و تجربه‌ی واقعی در شرکت ازکی:

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

2- گاهی اوقات مشکل رخ داده به گونه‌ای هست که برای حل آن حتما باید یک نیروی سمت توسعه هم اضافه می‌شد که نیاز به تماس دستی از سمت نیروی دوآپس به آن‌ها بود و این خود زمانگیر بود.(شماره شخص آنکال توسعه رو پیدا کرده و تماس برقرار کنیم.)

ابزار goalert حل کننده‌‌ی شمار زیادی از این دست مشکلات بود. ما از قابلیت Escalation تو این حالات استفاده کردیم. اولا تو هر مرحله از تماس فقط به شخص آنکال (چه توسعه‌, چه دوآپس) تماس برقرار می‌شد. در برخی آلرت‌ها که مربوط به دوآپس بود مشخص کرده‌ایم که این نوع آلرت نیاز به تماس با نفر آنکالِ توسعه وجود دارد. و در مواردی که مشکل برای نفر اول حل نشود و یا نفر اول در دسترس نباشد‌‌‌, اتوماتیک نفر دوم تماس برقرار می‌شود.