التوثيق

التنبيهات والقنوات

القناة هي وجهة يمكن أن يذهب إليها التنبيه. أضف منها ما شئت، ثم اختر لكل مراقب أيها للحالات الاعتيادية وأيها للتصعيد.

ما الذي يمكنك إضافته

هذه تضيفها بنفسك من الإعدادات ← الإشعارات:

  • البريد الإلكتروني — أي عنوان.
  • Slack وTeams وDiscord — عنوان URL لـ webhook وارد من ذلك التطبيق.
  • Telegram — دردشة، تُربط عبر البوت الخاص بنا.
  • PagerDuty وJira Service Management — مفتاح تكامل.
  • Webhook — نقطة النهاية الخاصة بك. HTTPS فقط، وموقّعة، وانظر أدناه.

وهذه يضيفها من يستقبلها، لا من يكتبها نيابة عنه:

  • الإشعارات الفورية — ثبّت تطبيق الهاتف واسمح بالإشعارات.
  • SMS — سجّل رقمك أنت وأكّد رمزًا نرسله إليه.
  • WhatsApp — الأمر نفسه، عبر WhatsApp.
  • الأقمار الصناعية — هاتف Iridium أو Inmarsat أو Thuraya، يُبلَّغ بالبريد الإلكتروني عبر بوابة الشبكة.

لمن تعود القناة

كل قناة إما للفريق وإما لشخص واحد، وهذا الفرق هو ما يحدد ما يحدث حين يغادر أحدهم.

القناة المشتركة — webhook باسم #alerts، أو خدمة PagerDuty، أو قائمة بريدية — تعود إلى المؤسسة وتبقى بعد أي مغادرة.

أما القناة الشخصية — هاتف، أو دردشة Telegram خاصة، أو رقم محمول — فتعود إلى من سجّلها، وتُحذف عند إزالته من المؤسسة. وقبل أن يصبح ذلك كذلك، كانت دردشة Telegram الخاصة بزميل أُزيل تظل تتلقى رسائل الأعطال بلا نهاية، مع أن عضويته ومفاتيح API الخاصة به كانت قد أُلغيت بالفعل.

لذا حين توجّه تنبيهًا، انظر لمن تعود القناة التي توجّهه إليها. فمن يجهّز الاستدعاء ليس عادةً الشخص الذي يوقظه.

العنوان يجب أن يوافق قبل أن يُرسل إليه أي شيء

البريد الإلكتروني وSMS وWhatsApp والأقمار الصناعية تؤكّد أولًا. أضف قناة بريد إلكتروني فيستقبل العنوان رسالة واحدة فقط — تسأله إن كان يريد أن يكون وجهة للتنبيهات — ولا شيء بعدها حتى يوافق. وعند تسجيل رقم هاتف، تكتب أنت الرمز الذي يصل إليه.

وهذا موجود لأن قناة البريد الإلكتروني عنوان كتبه شخص آخر داخل حساب شخص آخر. ولولاه لاستطاع محرر أن يوجّه مراقبًا متذبذبًا إلى صندوق وارد شخص غريب، ولكنا نحن من يسلّم الرسالة. ويُرفض زر الإرسال التجريبي حتى يؤكّد العنوان، للسبب نفسه: وإلا صار وسيلة بلا حدود للكتابة إلى عنوان بلا موافقة، تحت مسمّى يبدو مفيدًا.

قنوات الدردشة والإشعارات الفورية لا تسأل، وهذا ليس استثناءً. فمن لصق عنوان webhook الخاص بـ Slack كان لا بد أن يملكه، وقناة الإشعارات الفورية يسجّلها مالك الهاتف نفسه — ولا يمكن توجيه أي منهما إلى شخص غريب بمجرد كتابة عنوان.

أما العنوان الذي يعود أصلًا إلى عضو موثّق في مؤسستك فيُؤكَّد تلقائيًا؛ فقد أثبت صاحبه ملكيته له عند إنشاء الحساب.

SMS وWhatsApp

كلاهما في خطة Pro وما فوقها، وكلاهما يسحب من الحصة نفسها — تحصل Pro على 10 يوميًا و15 أسبوعيًا و30 شهريًا؛ وتحصل Business وEnterprise على 15 و50 و100. وهما حصة واحدة لأن كليهما يكلّف مالًا عن كل رسالة، وكليهما يصل إلى الهاتف نفسه، فالأمر الذي يحمي منه الحد — مراقب واحد متذبذب ينفق ميزانية شهر في ساعة — حدث واحد أيًّا كانت وسيلة نقله.

ثلاث نوافذ لا نافذة واحدة، لأن الواحدة ذات شكل خاطئ. فالحد الشهري وحده يتيح لمراقب متذبذب واحد أن ينفق كل شيء في فترة بعد الظهر؛ والحد اليومي وحده يتيح لتسرّب بطيء أن يكلّف ثلاثين ضعف ما قصدته.

ويُطبَّق الحد عند وضع الرسالة في الطابور، فلا تشغل الرسالة المحجوبة مكانًا أبدًا، ويُحتسب مما أُرسل فعلًا لا من عدّاد — فالعدّاد لا يمكن أن يظل صادقًا عبر استدعاء لواجهة API تخص طرفًا آخر.

SMS لا تصل إلى كل مكان، ونقول ذلك قبل أن تسجّل

يعتمد نطاق SMS على بلد المستلم. فبعض الشبكات لا تحمل رسالة من مرسل مثلنا إطلاقًا؛ وبعضها الآخر لا يقبلها إلا من اسم مرسل مسجّل لدى الجهة التنظيمية المحلية. ولا يعرض منتقي البلدان إلا الوجهات التي نعتقد أننا نستطيع الوصول إليها، وصفحة الأسعار فيها القائمة الكاملة.

وحيث يمكن أن يُستبدل باسم المرسل رقم محلي، نخبرك بذلك عند التسجيل بدل أن تكتشفه من رسالة تصلك من مجهول.WhatsApp ليس عليه أي من هذه القيود، ولا يحتاج إلى تسجيل في أي مكان، ويصل إلى كل بلد لا تصل إليه SMS.

التنبيهات لا تحتوي على روابط أبدًا. فالشبكات تصفّي عناوين URL غير المعروفة، والتنبيه المصفّى تنبيه لا يصلك — لذا يصل مراقب اسمهacme.com بصيغة acme com.

الأقمار الصناعية

لهاتف لا تغطيه أي شبكة خلوية. تمر الرسائل بالبريد الإلكتروني عبر بوابة الشبكة، فتدفع أسعار البريد الإلكتروني لا أسعار SMS — لكن الشبكات تحدّ التسليم بـ خمس رسائل يوميًا لكل هاتف، وهو حدّها هي لا حدّنا، وتُقتطع كل رسالة عند 160 حرفًا.

بطء غير معتاد

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

هذا ليس حادثًا. لا شيء متوقف، لذلك لا يُحتسب ضد نسبة التوفر، ولا يظهر على صفحة الحالة، ولا يُصعَّد. الاستجابة الأسرع من المعتاد لا تُطلق تنبيهًا أبدًا؛ ويجب أن يبلغ التباطؤ 100 مللي ثانية على الأقل وأن يتجاوز بوضوح التفاوت الطبيعي للمراقِب؛ ولا يُقيَّم شيء أثناء إيقاف المراقِب مؤقتًا أو ضمن نافذة صيانة أو حين يكون لديه حادث مفتوح.

يتلقى الـ webhook هذه الأحداث باسم latency_anomaly و latency_recovered، مع زمنَي الاستجابة المعتاد والمرصود بالمللي ثانية.

Webhooks

HTTPS فقط. ويُوقَّع كل طلب لتتمكن من التحقق من أنه صادر عنا. وتُرفض العناوين الخاصة وعناوين link-local عند حفظ عنوان URL ومرة أخرى عند إرسال التنبيه — لأن اسم المضيف الذي كان يُترجم إلى عنوان عام وقت الحفظ قد يُترجم إلى مكان آخر لاحقًا، ولأن عنوان URL الذي اجتاز التحقق قد يردّ بإعادة توجيه إلى أي مكان. ولا تُتّبع عمليات إعادة التوجيه.

المناوبة

في خطة Pro وما فوقها. ابنِ تناوبًا، وحدّد خطوات التصعيد، فيصعد عبرها الحادث الذي لم يُقرّ به أحد. والإقرار يوقف التصعيد؛ والحل يغلقه.

والتصعيد هو ما يجعل إضافة قناة شخصية مجدية: فالخطوة الأولى قد تكون دردشة الفريق، والأخيرة هاتف أحدهم في الرابعة فجرًا.

مراجعات ما بعد الحادث

متاحة في جميع الخطط. بعد إغلاق الحادث، يستطيع كل من يملك صلاحية إغلاق الحوادث كتابة مراجعته — ما الذي حدث، ولماذا، وما الذي سيتغيّر — وتعديلها مع تقدّم التحقيق. لكل حادث مراجعة واحدة تُكتب بصيغة Markdown: عناوين، وغامق ومائل، وقوائم، وشيفرة، واقتباسات، وروابط. يُعرض HTML كنص ولا يُنفَّذ أبدًا.

المراجعة داخلية. لا تظهر أبدًا على صفحة الحالة، لأنها عادةً تذكر أشخاصًا وأنظمة وأخطاء. ويُسجَّل حفظها في سجل التدقيق بطولها لا بمحتواها.

ماذا يحدث حين يتعذّر تسليم أي شيء

القناة التي تفشل تسجّل السبب على نفسها، بكلمات المزوّد نفسه، بدل أن تفشل بصمت. ورسالة SMS مرفوضة تقول ما قالته الشبكة. ورسالة WhatsApp مرفوضة بعد دقائق من قبولها تقول أي قالب وأي لغة.

وهذا أهم مما يبدو. فكل واحد من هؤلاء المزوّدين يجيب «مقبول» فورًا ثم يبلّغ بالنتيجة الحقيقية لاحقًا — فبلا قراءة ذلك التقرير تبدو القناة موثّقة، وتبدو الرسالة مُرسَلة، ويكون أول ما يسمعه أحد هو عطل لم يُخبَر به أحد.