كلما زاد تعقيد النظام ، زاد نموه مع كل أنواع التنبيهات. وهناك حاجة للرد على هذه التنبيهات ذاتها وتجميعها وتصورها. أعتقد أن هذا الموقف مألوف لدى الكثيرين قبل حدوث اضطراب.
القرار الذي سيتم مناقشته ليس الأكثر غير المتوقع ، لكن البحث لا ينتج مقالة كاملة حول هذا الموضوع.
لذلك ، قررت مشاركة تجربة FunCorp والتحدث عن كيفية بناء عملية الواجب ، ومن يتصل ، ولماذا وكيف يمكنك النظر إليها كلها.

ما هو PagerDuty؟
لذلك ، لحل جميع هذه المشاكل ، بدأنا في البحث عن أداة مريحة. بعد بحث قصير ، اخترنا PagerDuty. بدا لنا PD حل كامل وموجزة إلى حد ما مع الكثير من التكامل والإعدادات. ما هي تحب؟
باختصار ، PagerDuty هي عبارة عن منصة لمعالجة الحوادث يمكنها التعامل مع الحوادث الواردة من خلال عمليات تكامل متعددة ، وضبط ترتيب الخدمة ، ثم تنبيه المهندس المناوب وفقًا لمستوى الحادث (عند مستوى عالٍ من النداء ، عند الضغط المنخفض من التطبيق / الرسائل القصيرة) .
من هو الشخص المناوب؟
ربما هذا هو أول شيء لبدء إعداد PD.
FunCorp ، مثلها مثل الشركات الأخرى ، لها منصب فخري في الخدمة. ينتقل من مهندس إلى مهندس مرة واحدة في اليوم. هناك ما يسمى السطر الأول والثاني من الاستجابة لتنبيهات من PagerDuty. لنفترض أن هناك حالة تأهب قصوى في أولويته ، وإذا حدث بعد 10 دقائق من الاتصال بالمضيف من السطر الأول ، لم يكن هناك رد فعل له (أي أنه لم يتم نقله إلى حالة الإقرار أو الحل) ، وتذهب المكالمة إلى مهندس الخدمة الثاني. تم تكوين هذا في PagerDuty نفسها من خلال سياسات التصعيد.

إذا لم يستجب المُضيف الثاني ، فسيعود الإشعار إلى المضيف
الرئيسي .
وبالتالي ، لا يمكن أن يظل أي تنبيه وارد ذي أولوية عالية غير معالج.
الآن دعونا نرى من أين تأتي الحوادث.
ما هي التكاملات التي نستخدمها؟
يتم سكب الكثير من الحوادث المختلفة من مختلف الخدمات في PD. لدينا الآن حوالي 25 من هذه الخدمات ، وللتجهيز ، نستخدم بعض عمليات الدمج الجاهزة.
نظام جمع المتري الأساسي هو بروميثيوس. لقد كتب الكثير عن ذلك في Habré ، سأقول فقط أن لدينا العديد من البيئات المختلفة: واحد يجمع المقاييس من الأجهزة الافتراضية ومحطات الإرساء ، والآخر من خدمات Amazon ، والثالث من "آلات الحديد". تستخدم أساسا كمصدر للقياسات Telegraf.
هنا ، أيضًا ، أعتقد أن كل شيء واضح من الاسم. يستخدم هذا التكامل لإرسال إخطارات من بعض البرامج النصية المنفذة على التاج. PD يعطيك عنوانًا معينًا ترسل إليه رسائل. عند إنشاء خدمة باستخدام هذا الدمج ، يمكنك تعيين الأولويات حسب ترتيب معالجة الحوادث الواردة ، وكيفية إنشاء تنبيه (لكل خطاب وارد ، ورسالة واردة + قاعدة معينة ، وما إلى ذلك).

في رأيي ، دمج مثيرة جدا للاهتمام. هناك أوقات يحدث فيها شيء ما ، لكن لا تغطيها الحوادث. لذلك ، أضفنا التكامل من سلاك لإنشاء الحادث. هذا هو ، في Slack للشركات ، يمكنك كتابة
/ callofduty كل شيء يبطئ وقريباً يكسر ويعالج PD هذا ويرسل الحادث إلى مهندس الخدمة.
نحن نفعل:

نحن نرى:

تكامل HTTP. هنا ، في الواقع ، لا يوجد شيء مثير للاهتمام بشكل خاص ، مجرد طلب POST له نص بتنسيق JSON. على سبيل المثال ، من واحدة مثيرة للاهتمام: نستخدمها للمراقبة الخارجية باستخدام
https://www.statuscake.com/ . تتحقق هذه الخدمة من توفر مواقعنا من جميع أنحاء العالم. في حالة حصولنا على رمز استجابة غير مقبول (على سبيل المثال ، 502) ، يتم إنشاء حادث ومن ثم يمضي كل شيء على طول السلسلة الموضحة أعلاه. تتمتع StatusCake نفسها بالقدرة على مراقبة عناوين URL الداخلية ، أو انتهاء صلاحية شهادة SSL أو المجال.
هذا نظام مراقبة آخر ، ويمكن الاطلاع على المزيد حوله على موقعه على الإنترنت
https://www.librenms.org/ . بمساعدتها ، نراقب واجهات الشبكة و iDRAC من الخوادم.

كان هناك أيضا تكامل مثل Datadog ، CloudWatch. يمكن الاطلاع على المزيد حول ما أصبح منهم
هنا .
تصور
نظام الإبلاغ عن الحوادث الأساسي هو سلاك. تتم كتابة جميع الحوادث القادمة إلى PD في محادثة خاصة ، وإذا تغيرت حالتها ، فسيتم أيضًا عرض ذلك في الدردشة.

عندما أصبح من الممكن عرض بيانات مفيدة على شاشات الشاشات المعلقة أسفل السقف ، أدركنا فجأة أننا (في قسم المطورين) ليس لدينا ما نعرضه عليها. هناك Grafana رائعة ، لكن لا يمكن تغطيتها ، ويستجيب الموظفون للتنبيهات ، وليس إلى المخططات.
بعد إجراء بحث شامل ولكنه غير ناجح على GitHub عن "لوحة" موجزة وغنية بالمعلومات عن PD ، قررنا أن نكتب الخاصة بنا - فقط مع ما نحتاجه. رغم أنه في البداية كانت هناك فكرة لعرض واجهة PD نفسها ، إلا أنها بدت أكثر راحة.
لكتابة ذلك ، كل ما تحتاجه هو الحصول على مفتاح PD مع حقوق للقراءة فقط.
وهنا ما حصلنا عليه:

تعرض الشاشة الأحداث المفتوحة الحالية ، واسم مهندس الخدمة الحالي من الجدول المحدد ، والوقت الذي لا يوجد فيه حادث ذو أولوية عالية (سيتم تمييز لوحة ذات حدث أولوية عالية باللون الأحمر).
انظر الكود المصدري لهذا التطبيق هنا .
نتيجة لذلك ، حصلنا على لوحة معلومات مريحة لعرض جميع حوادثنا. سأكون سعيدًا إذا كان أي منكم سيستفيد من تجربتنا.