المراقبات
المراقب شيء واحد تريد أن يبقى تحت العين، والقاعدة التي يُحكم بها على سلامته. هناك ثلاثون نوعًا. معظمها يرسل طلبًا من شبكتنا ويحكم على الجواب، واثنان منها ينتظران وصول شيء من شبكتك، وأربعة تجمع ما تصدّره أجهزة التوجيه لديك إلى مسبارك الخاص.
الأنواع
الويب والشبكة
| النوع | ما الذي يفحصه |
|---|---|
http | أن عنوان URL يستجيب، مع رمز الحالة وزمن الاستجابة، واختياريًا نص يجب أن يظهر في المتن. |
ping | أن المضيف يستجيب لـ ICMP. |
tcp | أن المنفذ يقبل الاتصال. |
udp | أن رزمة البيانات تتلقى ردًا. |
dns | أن الاسم يُترجم، واختياريًا إلى السجلات التي تتوقعها. |
الشهادات والنطاقات
| النوع | ما الذي يفحصه |
|---|---|
ssl_cert | كم بقي للشهادة من عمر، وأن سلسلة الثقة صالحة. |
tls_audit | تسع مصافحات: كل إصدار من TLS، وعائلات التشفير الضعيفة، وأحجام المفاتيح، وترويسات الأمان. والفحص الذي يتعذر علينا إجراؤه يُبلَّغ عنه بأنه غير مُختبَر بدل أن يُعتبر ناجحًا — انظر أدناه. |
domain_expiry | كم بقي لتسجيل النطاق من مدة. |
blacklist | ما إذا كان عنوان أو نطاق مدرجًا في قوائم الحظر الكبرى. |
البريد
| النوع | ما الذي يفحصه |
|---|---|
smtp, imap, pop3 | أن الخادم يُتم محادثة حقيقية ببروتوكوله الخاص ويتفاوض على STARTTLS. وهو لا يسجل الدخول أبدًا: إثبات تسجيل الدخول يعني تخزين كلمة مرور صندوق بريد عاملة لكل مراقب. |
mail_posture | ما إذا كان بريد النطاق جديرًا بثقة الآخرين — SPF وDKIM وDMARC. |
بروتوكولات البنية التحتية
هذه موجودة لأن فحص tcp على المنفذ لا يثبت عنها شيئًا يُذكر. فمركز SMSC يظل يقبل TCP بعد توقفه عن ربط أي أحد بوقت طويل، وحزمة SIP قد تتعطل والمقبس مفتوح، وخادم XMPP الذي انتهت صلاحية شهادته يُتم مصافحة TCP كاملة.
| النوع | ما الذي يفحصه |
|---|---|
snmp | يستعلم عن قائمة من معرفات OID ويحكم على كل واحد منها مقابل عتبة، بدرجة خطورة خاصة لكل فحص. |
smpp | يربط ثم يفك الربط. ولا يرسل رسالة أبدًا. |
sip | يرسل OPTIONS. والرد النهائي الذي ليس 2xx يُعد متدهورًا لا متوقفًا: فالوسيط الذي يرد بـ 405 على غريب يعمل على نحو صحيح ويرفضنا. |
xmpp | يفتح تدفقًا ويتفاوض على STARTTLS. |
grpc | يستدعي grpc.health.v1.Health/Check. ينقل gRPC حالته في مقطورات HTTP/2، فالاستدعاء الفاشل يردّ مع ذلك 200 OK — ولهذا لا يصلح مراقب http بديلًا عن هذا. متاح في خطة Pro وما فوقها. |
قواعد البيانات
Pro وما فوقها. فحص tcp على المنفذ 5432 يثبت أن شيئًا ما قبل اتصالًا فقط، وكل عطل مهم في قاعدة بيانات يُبقي المقبس مفتوحًا: Postgres في وضع الاستعادة، حدّ اتصالات استهلكه تطبيق مُتسرِّب، حساب انتهت صلاحية كلمة مروره، قاعدة أُعيد تسميتها، دليل بيانات لم يُضَم. لذلك تفتح هذه الفحوص اتصالًا وتُصادق وتسأل الخادم سؤالًا بسيطًا واحدًا.
| النوع | ما يفحصه |
|---|---|
postgres | يتصل ويُصادق ويُنفِّذ select version(). اسم قاعدة البيانات مطلوب، لأن Postgres لا يعرف اتصالًا بدون واحدة. |
mysql | الأمر نفسه، ويغطي MariaDB — البروتوكول ذاته وليس فحصًا ثانيًا. |
redis | يتصل ويُصادق ويرسل PING. النسخة التي ما زالت تحمّل بياناتها تُجيب -LOADING، ويُبلَّغ عن ذلك كسبب مستقل لا كمهلة منتهية. |
mongodb | يتصل ويُصادق ويُنفِّذ الأمر ping. عناوين mongodb+srv مدعومة، وهي الطريقة المعتادة للوصول إلى MongoDB المُدار. |
mssql | يتصل عبر TDS ويُصادق ويُنفِّذ select @@version. |
ولا واحد منها يقرأ أو يكتب شيئًا. هذا فحص إتاحة، لا معاملة اصطناعية: خصِّص له حسابًا لا يقدر على شيء سوى الاتصال.
تُخزَّن بيانات الاعتماد بدون تشفير، لأن المِجَس الذي ينفّذ الفحص يتلقّى الإعداد كما هو. ولذلك تعمل هذه الخمسة من مِجَس معتمد للبيانات الشخصية فقط، وهو القيد نفسه الذي يحمله snmp وsmpp.
وهذا يعني أحد موضعين. مِجَسك الخاص، وهو ما صُمِّمت هذه الفحوص من أجله:يعمل على عتادك داخل شبكتك، فلا يخرج الإعداد من بنيتك التحتية أبدًا — وهو في الغالب الشيء الوحيد القادر على الوصول إلى قاعدة بيانات تستحق المراقبة، فقاعدة خلف VPC أو وصلة خاصة أو قائمة سماح لا يمكن الوصول إليها من أي شبكة غريبة، بما فيها شبكتنا. وإلا فنقاط المراقبة الخاصة بنا في الاتحاد الأوروبي، لقاعدة متاحة علنًا بالفعل.
الحاويات
Pro وما فوقها. فحص المنفذ المنشور لحاوية يجيب نيابةً عن الوكيل الذي أمامها. الحاوية التي تنهار في حلقة خلف سياسة إعادة التشغيل تكون متاحة بضع ثوانٍ في كل مرة، وHEALTHCHECK الفاشل يترك المنفذ مفتوحًا، والإنهاء بسبب نفاد الذاكرة متبوعًا بإعادة تشغيل يبدو كطلب بطيء واحد. محرك Docker يعرف الثلاثة.
| النوع | ما الذي يفحصه |
|---|---|
docker | يسأل المحرك عن حاوية واحدة بالاسم أو المعرّف. قيد التشغيل تعني متاحة؛ وHEALTHCHECK غير السليم، أو الحاوية المتوقفة مؤقتًا أو المنتهية أو المُنهاة لنفاد الذاكرة، تعني معطّلة؛ وفحص السلامة الذي ما زال في البدء، أو إعادة التشغيل بسياسة إعادة التشغيل خلال الدقائق الخمس الأخيرة، يعني متدهورة. لا يبدأ شيئًا ولا يوقفه ولا يشغّله أبدًا. |
الوصول إلى واجهة المحرك البرمجية يعادل صلاحيات root على ذلك المضيف، لذا فنقطة النهاية وشهادات العميل بيانات اعتماد، ولا يعمل هذا النوع إلا من مسبار مُصرَّح له بالبيانات الشخصية. لا يفتح مقبس unix إلا مسبار شُغّل مع DOCKER_SOCKET_ENABLED=true، وهو ما تضبطه على مسبارك الخاص بجوار محركك، ولا نضبطه أبدًا على مساباراتنا؛ وفي أي مكان آخر يمتنع الفحص بدلًا من الإبلاغ عن تعطّل حاويتك. نقطة نهاية tcp:// أو https:// مع شهادات العميل تعمل من كليهما.
حركة مرور الشبكة
خطة Business وما فوقها. يخبرك فحص التوفر أن الرابط يستجيب؛ لكنه لا يستطيع أن يخبرك أن الرابط مُشبَع، أو أن مهمة نسخ احتياطي تُغرقه عند الظهر، أو أن حركة المرور إلى طبقة الويب لديك هبطت بصمت إلى الصفر. أجهزة التوجيه والمبدّلات لديك تعدّ ذلك كله بالفعل ويمكنها تصديره. تجمع هذه الأنواع ذلك التصدير وتحوّله إلى معدلات وتوزيع حسب البروتوكول وأكثر المنافذ والعناوين نشاطًا.
| النوع | ما الذي يفحصه |
|---|---|
netflow | NetFlow v5 وv9 من جهاز توجيه، على UDP 2055. تُتعلَّم القوالب عند وصولها؛ والسجلات التي تصل قبل قالبها تُعدّ وتُهمَل، ولا تُخمَّن أبدًا. |
jflow | J-Flow من جهاز توجيه Juniper، وهو NetFlow على الشبكة، على المنفذ نفسه. |
ipfix | IPFIX، معيار IETF الذي خلف NetFlow v9، على UDP 4739 — بما في ذلك الحقول متغيرة الطول والحقول الخاصة بالمصنّعين. |
sflow | sFlow v5 من مبدّل، على UDP 6343: ترويسات حزم مأخوذة كعينات، عبر وسوم VLAN وصولًا إلى IPv4 أو IPv6، ومضروبة من جديد في معدل أخذ العينات الذي يُبلغ عنه المبدّل. |
كل حد اختياري — أقصى معدل بتات، وأدنى معدل بتات، وأقصى معدل حزم. فوق أحدها أو تحته يعني متدهور. ومن دون أي حد يسجّل المراقب حركة المرور ويرسمها دون تنبيه على قيمة. والمُصدِّر الذي يتوقف عن الإرسال مدة أطول مما تسمح به يعني معطّل، والذي يرسل البروتوكول الخطأ — sFlow إلى مراقب NetFlow — معطّل مع رسالة تقول ذلك.
لا تعمل هذه الأنواع إلا على مسبارك الخاص. تصدير التدفقات يتم عبر UDP الذي لا يحمل أي مصادقة: فالمُجمِّع على شبكتنا المشتركة سيضطر إلى الوثوق بعنوان المُرسِل، الذي يمكن لأي أحد تزويره أو ادّعاؤه. أما المسبار داخل شبكتك فلا تصل إليه إلا أجهزة التوجيه الخاصة بك. كما تبقى سجلات حركة المرور لديك — فهي تذكر عناوين الأشخاص على شبكتك، لذا يجمّعها المسبار حيث تصل ولا يرسل إلينا إلا المعدلات وجداول العشرة الأوائل. شغّل المسبار مع FLOW_COLLECTOR_ENABLED=true، وانشر منافذ UDP، ووجّه أجهزة التوجيه إليه، واختر ذلك المسبار عند إنشاء المراقب.
أشياء تُبلغنا هي
| النوع | ما الذي يفحصه |
|---|---|
heartbeat | مهمة cron أو عملية دفعية تستدعي عنوان URL عند انتهائها. والصمت بعد انقضاء الفاصل الزمني هو الفشل. استخدمه للأشياء التي لا يراها شيء آخر — نسخة احتياطية ليلية، أو استيراد كل ساعة. |
server_agent | وكيل صغير على جهازك يبلغ عن المعالج والذاكرة والقرص. نزّله بنفسك عبر curl من الرابط الموجود على المراقب. |
كم مرة يعمل
أنت تختار الفاصل الزمني، وخطتك تحدد حده الأدنى. الخطة Free تفحص كل دقيقة، وStarter كل 45 ثانية، وPro كل 30، وBusiness كل 15، وEnterprise كل 5.
أربعة أنواع لها حدها الأدنى الخاص، أيًا كانت الخطة، لأن الجواب لا يتغير من دقيقة إلى أخرى، والسؤال بوتيرة أعلى ضجيج وحِمل على خادم شخص آخر:
| النوع | يُفحص على الأكثر |
|---|---|
blacklist | كل ساعة |
ssl_cert | كل ست ساعات |
domain_expiry, mail_posture, tls_audit | مرتين في اليوم |
الفاصل الزمني ليس سرعة علمك بالانقطاع
هذا هو الجزء الذي يستحق قراءتين. فالفحص الفاشل الواحد لا يفتح حادثًا. على المراقب أن يفشل ثلاث مرات متتالية — وهذا هو إعداد confirmations، وثلاثة هي القيمة الافتراضية — قبل أن يُبلَّغ أحد.
لكنه ليس ثلاثة أضعاف الفاصل الزمني. فحين يفشل فحص، يُقدَّم الفحص التالي بدل انتظار الفاصل كاملًا، حتى إن مراقبًا بفاصل خمس دقائق يؤكد الانقطاع في أقل من خمس عشرة دقيقة بكثير. والنتيجة لا تستطيع إلا أن تُبكّر الفحص التالي، لا أن تؤخره.
اخفض confirmations إن كنت تفضل أن تُوقَظ مبكرًا وبلا داعٍ أحيانًا. وارفعه لشيء تعرف أنه متذبذب.
الفحوصات تتناوب بين المواقع
نحن نفحص من عدة أماكن، واحدًا في كل فاصل زمني، بالتناوب. وثلاث نقاط مراقبة على مراقب بفاصل خمس دقائق تعني أن كل واحدة منها تراه كل خمس عشرة دقيقة، بينما يظل المراقب يُفحص كل خمس.
وهذا ما يجعل للتأكيد معنى: ثلاثة إخفاقات متتالية هي ثلاثة إخفاقات مرئية من ثلاثة أماكن مختلفة، فالمسبار الذي لا يستطيع ببساطة الوصول إلى خادمك غير مؤذٍ — إذ تنجح المنطقة التالية وتُصفَّر السلسلة.
الفشل بينما موقع آخر بخير هو تدهور لا توقف. فالتوقف ينبغي أن يعني أن موقعك يتعذر الوصول إليه، لا أن نقطة مراقبة واحدة لا تراه. ومع ذلك يظل يُحتسب فشلًا ويُفتح حادث، بدرجة خطورة متدهور.
جدار الحماية ليس انقطاعًا
الموقع المحجوب في مكان واحد يفشل في كل فحص يأتي من هناك بينما يعمل في كل مكان آخر. واحتساب ذلك توقفًا يجعل رقم وقت التشغيل لديك وصفًا لتوجيهنا نحن لا لخدمتك أنت.
لذلك تُستبعد المنطقة التي لم تصل إلى مراقب قط بعد ثلاثة إخفاقات. أما المنطقة التي كانت تصل إليه ولم تعد، فتظل محتسبة إلى الأبد — لأن ذلك انقطاع حقيقي من هناك، وإخفاؤه أسوأ.
وإن تغير العالم حول موقع ما — حجب حكومي، أو مسار سقط، أو بوابة جغرافية أُضيفت لاحقًا — فبإمكانك إعادة معايرة مراقب من صفحته. وذلك يُسقط تاريخ كل منطقة لذلك المراقب وحده، فيصير السلوك الحالي هو خط الأساس الجديد. وهو إجراء لكل مراقب على حدة وعن قصد، لأن القياس وحده لا يفرق بين حجب دائم وانقطاع دائم.
أين تجري الفحوصات، وما الذي نرسله إلى هناك
بعض نقاط المراقبة خارج المنطقة الاقتصادية الأوروبية. والفحص الذي قد تحتوي إعداداته على بيانات شخصية — ترويسة طلب، أو متن طلب — لا يجري إلا من داخلها. وهذا يفرضه المجدول لا السياسة، ويُختبر مقابل قاعدة بيانات حقيقية في كل بناء. وsnmp وsmpp وأنواع قواعد البيانات الخمسة محصورة بالطريقة نفسها، لأن بيانات الاعتماد فيها جميعًا هي البروتوكول.
غير المُختبَر ليس ناجحًا
في tls_audit، لكل فحص ثلاث نتائج لا اثنتان: مدعوم، أو مرفوض، أو غير مُختبَر. فنسخة OpenSSL 3 في Node لا تُضمّن RC4 ولا 3DES، ومن ثم لا يمكن أن تُعرض هاتان العائلتان من أسطولنا أبدًا — والصمت تحت هذين العنوانين سيُقرأ على أنه “نظرنا فوجدناهما مُعطَّلتين”، وهذه طمأنة كاذبة تخص بالضبط النتائج التي يُفتح من أجلها تدقيق TLS.
التبعيات
أخبر المراقب بما يعتمد عليه — قاعدة بيانات، أو بوابة، أو واجهة API أعلى السلسلة — وحين تتوقف التبعية، تُسجَّل الأشياء التي خلفها بوصفها نتائج تابعة بدل أن تفتح حوادث خاصة بها. حادث واحد لا أربعون، والصفحة تسمي الجذر لا الأعراض.
نوافذ الصيانة
جدول نافذة، ولن يستدعي شيء أحدًا ما دامت مفتوحة. استخدمها لنشر تعرف أنه سيُخرج الأمر عن الخدمة. والفحوصات افتراضيًا تظل تعمل وتظل تُسجَّل، فتُحتسب تلك الدقائق في وقت التشغيل كغيرها — فالنافذة تزيل التنبيه لا السجل. وإن أوقفت “مواصلة الفحص” فلا يجري أي فحص ما دامت النافذة مفتوحة، فيبقى في السجل فراغ لا هبوط. ويمكن أن تتكرر النافذة يوميًا أو أسبوعيًا أو شهريًا، وكل تكرار منها يحجب التنبيهات، لا الأول وحده.
الإيقاف المؤقت
المراقب المتوقف مؤقتًا لا يُفحص ولا يُحتسب على أي شيء. وهو يحتفظ بتاريخه، فالإيقاف المؤقت ثم الاستئناف لا يُضيع السجل.