نظرة عامة على نظام المراقبة الهجين Okerr

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

نظرة عامة على نظام المراقبة الهجين Okerr
[ بالحجم الكامل ]

لمن قد يهمه الأمر

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

لماذا okerr غير عادي

بعد ذلك، سأعرض الميزات المثيرة للاهتمام في الأوكيرا والتي تميزه عن بعض أنظمة المراقبة الأخرى.

Okerr عبارة عن مراقبة هجينة

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

okerr ليس مجرد برنامج، ولكنه أيضًا خدمة

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

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

بالطبع، هناك خطر ألا يكون خادم okerr نفسه متاحًا، هذا صحيح (كما تعلم، يتم الحصول على 90% من الموثوقية دائمًا ببساطة و"مجانًا"، و99% بأقل جهد، وكل تسعة لاحقة هي أكثر صعوبة بشكل كبير). ولكن، أولا، فرص حدوث ذلك أقل، وثانيا، قد تمر المشكلة دون أن يلاحظها أحد إلا إذا تزامنت مع مشاكل على خوادمنا. إذا كانت لدينا موثوقية بنسبة 99.9%، ولديك 99.9% (ليست أرقامًا عالية جدًا)، فإن فرصة حدوث فشل غير مكتشف هي 0.1% من 0.1% = 0.0001%. إن إضافة ثلاث تسعات إلى موثوقيتك تقريبًا بدون جهد وبدون تكلفة أمر جيد جدًا!

ميزة أخرى للمراقبة كخدمة هي أن مزود الاستضافة أو استوديو الويب يمكنه تثبيت خادم okerr وتوفير الوصول للعملاء كخدمة إضافية مدفوعة أو مجانية. منافسيك لديهم فقط استضافة ومواقع، أما أنت فلديك استضافة موثوقة مع مراقبة.

أوكر يدور حول المؤشرات

المؤشر هو "المصباح الكهربائي". لها حالتان رئيسيتان - الأخضر (OK) أو الأحمر (ERR). يحتوي المشروع على العديد من المؤشرات المجمعة (على سبيل المثال، حسب الخادم). في الصفحة الرئيسية للمشروع، ترى على الفور إما أن كل شيء أخضر (ويمكنك إغلاقه)، أو أن شيئًا ما مضاء باللون الأحمر ويحتاج إلى تصحيح. عند الانتقال بين هذه الحالات، يتم إرسال تنبيه. مرة واحدة يوميًا أثناء قيامك بإعداده، يتم إرسال ملخص للمشروع.

نظرة عامة على نظام المراقبة الهجين Okerr

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

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

بالطبع، من الممكن ببساطة الاحتفاظ بالمؤشرات "المعلوماتية" (لرؤية صورة الشبكة من المراقبة)، ولكن يتم القيام بكل شيء من أجل إنشاء مؤشرات مخصصة للمراقبة التلقائية وإرسال التنبيهات ببساطة وسهولة وسرعة.

الغرض الذي تقوم بإعداد okerr من أجله هو التنبيهات، بحيث يمكنك إنشاء مؤشر في دقيقة واحدة، ويمكن أن "ينام" لمدة عام، فقط يقبل التحديثات، وعندما يتعطل شيء ما بعد عام، يضيء ويرسل تنبيه. اللحظة التي قضيتها في إنشاء مؤشر أتت بثمارها؛ لقد علمت بالمشكلة على الفور، قبل أي شخص آخر. من المحتمل أنهم قاموا بإصلاحه قبل أن يلاحظه أحد. الشيء الذي يرتفع بسرعة لا يعتبر سقط!

أمن

سيكون من العار إذا قمت بإعداد المراقبة من أجل زيادة الموثوقية، ولكن نتيجة لذلك، يتم مهاجمتك عبر الشبكة من خلالها، وهناك الكثير من نقاط الضعف في الشبكة في أدوات المراقبة المختلفة (Zabbix, Nagios).

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

تغطية مراقبة كاملة

الآن قاعدتنا هي أن نتعرف على جميع المشاكل التقنية من okerr. إذا تم انتهاك القاعدة فجأة (لم يحذر okerr من حدوثها الوشيك (إذا كان ذلك ممكنًا) أو أنه قد حدث بالفعل) - نضيف عمليات فحص إلى okerr.

الشيكات الخارجية

مجموعة نموذجية تمامًا:

  • بينغ
  • حالة http
  • التحقق من صحة وحداثة شهادة SSL (سيتم التحذير إذا كانت على وشك الانتهاء)
  • فتح منفذ TCP واللافتة عليه
  • http grep (الصفحة [يجب ألا] تحتوي على نص محدد)
  • تجزئة sha1 من أجل التقاط تغييرات الصفحة.
  • DNS (يجب أن يكون لسجل DNS قيمة محددة)
  • WHOIS (سيحذرك إذا كان النطاق على وشك أن يصبح سيئًا)
  • Antispam DNSBL (فحص المضيف ضد أكثر من 50 قائمة سوداء لمكافحة البريد العشوائي في وقت واحد)

الشيكات الداخلية

أيضًا، مجموعة قياسية إلى حد ما (ولكنها قابلة للتوسيع بسهولة).

  • df (مساحة حرة على القرص)
  • متوسط ​​الحمل
  • opentcp (فتح مآخذ الاستماع لـ TCP - سيتم إعلامك إذا بدأ شيء ما أو تعطل)
  • الجهوزية - الجهوزية فقط على الخادم. سيتم إعلامك إذا تم تغييره (أي أن الخادم قد زاد تحميله)
  • client_ip
  • dirsize - نستخدمه للتتبع عندما يتجاوز حجم rootfs لجهازنا الظاهري الحجم المسموح به، دون فرض قيود صارمة، وحجم الأدلة الرئيسية للمستخدم
  • فارغة وغير فارغة - مراقبة الملفات التي يجب أن تكون فارغة (أو ليست فارغة). على سبيل المثال، يجب أن يكون سجل الأخطاء لخادم okerr نفسه فارغًا، وإذا كان هناك سطر فيه، فسوف أتلقى إشعارًا وأتحقق منه. ولكن يجب ألا يكون mail.log الموجود على خادم البريد فارغًا (N دقيقة بعد التدوير). وأحيانًا كان فارغًا بالنسبة لنا بعد تحديث النظام، عندما لم يتمكن logrotate من إعادة تشغيل rsyslog بشكل صحيح.
  • Linecount - عدد الأسطر في الملف (مثل wc -l). نحن نستخدمه كبديل أكثر ليونة للفارغ، عندما يستمر سجل الأخطاء في النمو، ولكن ببطء فقط (على سبيل المثال، يصل Googlebot إلى بعض الصفحات المغلقة). هناك حد سطرين في 2 دقيقة. إذا كان أعلى، سيكون هناك تنبيه

الشيكات الداخلية مثيرة للاهتمام

إذا كنت تقرأ "قطريًا" حتى هذه اللحظة، فسيكون من المثير للاهتمام أن تقرأ بعناية أكبر.

النسخ الاحتياطي

يراقب النسخ الاحتياطية في الدليل. تحتوي ملفات النسخ الاحتياطي لدينا على أسماء مثل "ServerName-20200530.tar.gz". لكل خادم في okerr، يتم إنشاء المؤشر ServerName-DATE.tar.gz (يتغير التاريخ الفعلي إلى السطر "DATE"). يتم أيضًا مراقبة وجود نسخة احتياطية جديدة وحجمها (على سبيل المثال، لا يمكن أن تكون أقل من 90% من النسخة الاحتياطية السابقة).

ما الذي يجب فعله لبدء تتبع النسخة الاحتياطية الجديدة بعد أن بدأنا في إنشائها ووضعها في هذا الدليل؟ لا شئ! يعد هذا أسلوبًا مناسبًا للغاية عندما تحتاج إلى عدم القيام "بأي شيء" للأسباب التالية:

  • إن عدم القيام بأي شيء هو أمر سريع جدًا، فهو يوفر الوقت
  • من الصعب أن تنسى أن تفعل "لا شيء"
  • من الصعب أن تفعل "لا شيء" خطأ، مع وجود خطأ. لا شيء هو الطريقة الأكثر موثوقية

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

maxfilesz

يتتبع حجم الملفات الكبيرة (عادةً: /var/log/*). يتيح لك ذلك اكتشاف المشكلات غير المتوقعة، على سبيل المثال، اختراق كلمات المرور أو إرسال رسائل غير مرغوب فيها عبر الخادم.

حالة التشغيل/runline

هاتان وحدتان وكيلتان مهمتان لتشغيل البرامج الأخرى على الخادم. يقوم Runstatus بإبلاغ رمز خروج البرنامج إلى المؤشر. على سبيل المثال، لا (يتطلب) okerr وحدة نمطية للتحقق من تشغيل خدمات systemd. يتم ذلك عبر حالة التشغيل (انظر أدناه). Runline - يُبلغ الخادم بالخط الذي ينتجه البرنامج. على سبيل المثال، temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" في تكوين Runline على الخادم الخاص بنا، يتم إنشاء مؤشر servername:temp مع درجة حرارة المعالج.

SQL

ينفذ استعلامًا رقميًا إلى MySQL ويبلغ المؤشر بالنتيجة. في حالة بسيطة، يمكنك القيام، على سبيل المثال، بـ "SELECT 1" - وهذا سيتحقق من أن نظام إدارة قواعد البيانات (DBMS) يعمل ككل.

لكن التطبيق الأكثر إثارة للاهتمام هو، على سبيل المثال، تتبع عدد الطلبات في المتجر عبر الإنترنت. إذا كنت تعلم أن لديك 100 طلب أو أكثر في الساعة، فيمكنك تعيين الحد الأدنى إلى 100 أو 80. ثم إذا انخفضت مبيعاتك فجأة، فسوف تتلقى تنبيهًا ويمكنك معرفة ذلك.

لاحظ أنه لا يهم السبب غير المتوقع لحدوث ذلك:

  • الخادم ببساطة غير متاح (معطل أو بدون شبكة)، وجاء التنبيه من حقيقة أن المؤشر "فاسد".
  • الخادم مثقل بشيء ما، أو يعمل ببطء أو يتم فقدان الحزم، وهو أمر غير مريح للمستخدمين ويغادرون دون إجراء عمليات شراء
  • تم تضمين الخادم في قوائم البريد العشوائي ولا يتم قبول البريد منه، ولا يمكن للمستخدمين التسجيل
  • لقد نفدت ميزانية الحملة الإعلانية، واللافتات لا تدور.

يمكن أن يكون هناك أي عدد من الأسباب، ولا يمكن توقعها جميعًا مسبقًا، ومن الصعب تتبعها من الناحية الفنية. ولكن يمكنك بسهولة مراقبة المعلمة النهائية (الأوامر) والتعرف منها على أن الوضع مشبوه ويستحق التعامل معه.

المؤشرات المنطقية

يسمح باستخدام التعبيرات المنطقية (بناء جملة بايثون) عبر وحدة نمطية التحقق من صحة(مقالة على المحور). بيانات المشروع ومؤشراته متاحة للتعبير. على سبيل المثال، في الفصل المتعلق بفحص SQL أعلاه، ربما لاحظت نقطة ضعف - خلال النهار يمكن أن نحقق 100 عملية بيع في الساعة، ولكن في الليل - 20، وهذا أمر شائع، وليس مشكلة. ماذا علي أن أفعل؟ سوف يشعر المؤشر بالذعر باستمرار في الليل.

يمكنك إنشاء مؤشرين، ليلا ونهارا. اجعل كلاهما "صامتًا" (لن يرسلوا تنبيهات). وإنشاء مؤشر منطقي يتطلب أن يكون مؤشر النهار على ما يرام قبل الساعة 20:00، وبعد الساعة 20:00 يكفي أن يكون مؤشر الليل على ما يرام.

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

كما يمكن تحديد الوقت المسموح به للعمل مثلاً من الساعة 3 إلى 5 صباحاً. لا نهتم إذا تعطلت الخوادم والمواقع خلال هذا الوقت. ولكن في الساعة 5:00 عليهم أن يعملوا. إذا لم يعملوا في أي وقت آخر - تنبيه. يسمح لك المؤشر المنطقي أيضًا بمراعاة تكرار الخادم. إذا كان لديك 5 خوادم ويب، فيمكن للمسؤولين إيقاف تشغيل خادم أو خادمين في أي وقت. ولكن إذا كان هناك أقل من 1 من أصل 2 خوادم في المعركة، فسيكون هناك تنبيه.

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

من المحتمل أن يكون Logic Indicator واحدًا من الموضوعات القليلة المعقدة نسبيًا في okerr، ولكن الخبر السار هو أنه ليس عليك إتقانه حتى تحتاج إلى ذلك. ولكن في الوقت نفسه، يقومون بتوسيع القدرات بشكل كبير، مع الحفاظ على النظام نفسه بسيطًا جدًا.

إضافة الشيكات الخاصة بك

أود حقًا أن أنقل فكرة أن okerr ليس مجموعة من آلاف الشيكات الجاهزة لجميع المناسبات، بل على العكس - أولاً وقبل كل شيء - محرك بسيط يتمتع بقدرة بسيطة على إنشاء الشيكات الخاصة بك. إن إنشاء عمليات التحقق الخاصة بك في okerr ليست مهمة للمتسللين أو مطوري النظام المشاركين أو على الأقل مستخدمي okerr المتقدمين، ولكنها مهمة ممكنة لأي مسؤول قام بتثبيت Linux لأول مرة منذ شهر.

تتم عمليات التحقق من الحد الأدنى للأجور من خلال الوحدة حالة التشغيل:

هذا السطر في التكوين حالة التشغيل سيُعلمك إذا لم يبدأ /bin/true فجأة أو يُرجع شيئًا آخر غير 0.

true_OK=/bin/true

سطر واحد فقط - ونحن هنا بالفعل قليلًا موسع وظيفة أوكر.

حتى مثل هذا التحقق له قيمته بالفعل: إذا تعطل الخادم الخاص بك فجأة، فلن يتم تحديث المؤشر المقابل على خادم okerr في الوقت المناسب، وبعد مرور الوقت، سيظهر تنبيه.

سيُعلمك هذا الفحص بأن خادم Apache2 قد تعطل (حسنًا، أنت لا تعرف أبدًا...):

apache_OK="systemctl is-active --quiet apache2"

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

الأمر الأكثر صعوبة هو أنه يمكنك كتابة (بأي لغة) الوحدة النمطية الخاصة بك لـ okerrmod. في أبسط الحالات يبدو الأمر كما يلي:

#!/usr/bin/python3

print("STATUS: OK")

أليس هذا صعبا جدا؟ يجب أن تقوم الوحدة بإجراء الفحص بنفسها وإخراج النتائج إلى STDOUT. وحدة أكثر تعقيدًا تعطي، على سبيل المثال، ما يلي:

$ okerrmod --dump df
NAME: pi:df-/
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G/28.2G used, 13.0G free
STATUS: 49.52

NAME: pi:df-/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M/62.9M used, 9.9M free
STATUS: 84.32

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

تیلیجرام

يوجد بوت تيليجرام @OkerrBot. لا تحتاج إلى ازدحام هاتفك بتطبيقات منفصلة (لا أحب ذلك بالنسبة لـ Pyaterochka، فأنت بحاجة إلى تطبيق واحد به خريطة، ولـ Lenta آخر، ولـ MTS ثالث، وهكذا للجميع، الكل، الكل). برقية واحدة تكفي. من خلال برقية يمكنك تلقي التنبيهات على الفور، والتحقق من حالة المشروع وإعطاء الأمر لإعادة فحص جميع المؤشرات الإشكالية. غادرنا المسرح/الطائرة، ولم نبقي إصبعنا على النبض لمدة ساعتين، وقمنا بتشغيل الهاتف، وضغطنا على زر واحد في برنامج الدردشة الآلي، وتأكدنا من أن كل شيء على ما يرام.

صفحات الحالة

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

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

نظرة عامة على نظام المراقبة الهجين Okerr

المشاكل والتوقف يحدث للجميع. لكن المستخدمين والشركاء يثقون أكثر بأولئك الذين يتمتعون بقدر أكبر من الشفافية والمسؤولية في نهجهم تجاه هذا الأمر.

ها هو مراجعة 10 مشاريع أخرى تسمح لك بإنشاء صفحات الحالة. فيما يلي أمثلة على الشكل الذي تبدو عليه صفحات المشروع هذه بايثون и Dropbox . صفحة حالة okerr.

الفشل

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

متطلبات النظام منخفضة

بالنسبة لخوادم okerr، نستخدم أجهزة ذات ذاكرة وصول عشوائي (RAM) تبدأ من 2 جيجا بايت. بالنسبة لأجهزة استشعار الشبكة، حتى 512 ميجابايت كافية. جزء العميل عمومًا يكون صفرًا تقريبًا. (حقيبة بلاستيكية okerupdate يزن 26 كيلو بايت، ولكنه يتطلب Python3 والمكتبات القياسية). يتم تشغيل العميل من خلال برنامج نصي cron، لذا فهو لا يستهلك أي ذاكرة دائمة. من بين الأجهزة التي قمنا بمراقبتها، لدينا أجهزة استشعار (VPS رخيصة للغاية مع ذاكرة وصول عشوائي سعة 512 ميجابايت) وRaspberry Pi. إنه ممكن حتى بدون جزء العميل إرسال التحديثات عبر حليقة! (انظر أدناه)

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

API والتكامل في البرمجيات الاحتكارية

بنية بسيطة ومفتوحة. okerr لديه فكرة بسيطة جدًا API، وهو أمر سهل العمل معه. هل تحتاج إلى إنشاء 1000 مؤشر؟ سوف يقوم برنامج نصي واحد مكون من 3-4 أسطر بذلك. هل تحتاج إلى إعادة تكوين 1000 مؤشر؟ إنه أيضًا سهل جدًا. على سبيل المثال، نريد التحقق مرة أخرى من جميع شهادات HTTPS الخاصة بنا من جهاز استشعار روسي:

#!/bin/sh

for indicator in `okerrclient --api-filter sslcert`
do
    echo set location for $indicator
    okerrclient --api-set location=ru retest=1 --name $indicator
done

يمكنك تحديث المؤشر باستخدام وحدة العميل الخاصة بنا، حتى بدونها، فقط عبر حليقة.

# short and nice (using okerrupdate and config file)
$ okerrupdate MyIndicator OK

# only curl is enough!
$ curl -d 'textid=MyProject&name=MyIndicator&secret=MySecret&status=OK' https://bravo.okerr.com/

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

إليك الكود (المبسط) الموجود في روبوت التليجرام الخاص بنا:

from okerrupdate import OkerrProject, OkerrExc

op = OkerrProject()
uptimei = op.indicator("{}:telebot_uptime".format(hostname))
...
uptimei.update('OK', 'pid: {} Uptime: {} cmds: {}'.format(
        os.getpid(), dhms(uptime), commands_cnt))

توجد مكتبة لتحديث المؤشرات من برامج بايثون okerupdate، بالنسبة لأي لغة أخرى لا توجد مكتبات، ولكن يمكنك إما استدعاء البرنامج النصي okerrupdate أو تقديم طلب HTTP إلى خادم okerr.

كيف يساعدنا okerr

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

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

رصد

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

شهادات SSL. مباشرة بعد الإطلاق تقريبًا LetsEncrypt بدأ عملاؤنا في تقديم شهادات SSL مجانية لعملائهم (حوالي ألف منهم). واتضح أن الأمر مجرد جحيم للإدارة! الحقيقة هي أن المواقع "مباشرة"، ويطلب العملاء منهم بشكل دوري القيام بشيء ما، ويقوم المبرمجون بذلك. يمكنهم نقل الموقع بحرية كاملة إلى DocumentRoot آخر، على سبيل المثال. أو أضف إعادة كتابة غير مشروطة إلى تكوين المضيف الظاهري. وبطبيعة الحال، بعد ذلك، يتعطل التجديد التلقائي للشهادات. تمت الآن إضافة جميع مضيفي SSL إلى okerr تلقائيًا من خلال أداة أخرى من أدواتنا المساعدة المفيدة من الحزمة a2conf. دعنا نطلق فقط a2okerr.py — وإذا ظهرت عدة مواقع جديدة على الخادم، فسوف تظهر تلقائيًا في okerr. إذا لم يتم تجديد الشهادة فجأة لسبب ما، قبل ثلاثة أسابيع من انتهاء صلاحية الشهادة، فنحن على علم بها، وسنكتشف سبب عدم تحديثها، مثل هذا الكلب. a2certbot.py من نفس الحزمة - إنها تساعد كثيرًا في هذا (تقوم على الفور بالتحقق من المشكلات الأكثر احتمالية - وتكتب ما تم فحصه جيدًا والمكان الذي توجد فيه مشكلة على الأرجح).

نحن نراقب تاريخ انتهاء صلاحية جميع النطاقات الخاصة بنا. ويتم أيضًا فحص جميع خوادم البريد لدينا التي ترسل البريد مقابل أكثر من 50 قائمة سوداء مختلفة. (وتارة يقعون فيهما). بالمناسبة، هل تعلم أن خوادم بريد Google مدرجة أيضًا في القائمة السوداء؟ فقط للاختبار الذاتي، أضفنا mail-wr1-f54.google.com إلى الخوادم المراقبة، ولا يزال مدرجًا في القائمة السوداء لـ SORBS! (هذا يتعلق بقيمة "مكافحة مرسلي البريد العشوائي")

النسخ الاحتياطية - لقد كتبت أعلاه مدى سهولة مراقبتها باستخدام okerr. لكننا نراقب أحدث النسخ الاحتياطية على خادمنا و(باستخدام أداة مساعدة منفصلة تستخدم okerr) النسخ الاحتياطية التي نقوم بتحميلها إلى Amazon Glacier. ونعم، المشاكل تحدث من وقت لآخر. لا عجب أنهم كانوا يشاهدون.

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

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

لكن كانت هناك حالة أخرى..

هل تعلم أنه في Debian 9 (Stretch) الشهير، لا تزال الحزمة الشائعة مثل phpmyadmin (لعدة أشهر!) في حالة ضعيفة؟ (CVE-2019-6798). عندما ظهرت الثغرة الأمنية، قمنا بتغطيتها بسرعة بطرق مختلفة. لكنني قمت بإعداد مراقبة لصفحة تعقب الأمان في okerr لمعرفة متى سيظهر الحل "الجميل" (عبر مجموع SHA1 للمحتوى). ارتعش المؤشر عدة مرات، وتغيرت الصفحة، ولكن كما ترون، لا يزال (منذ يناير 2019!) لا يشير إلى أن المشكلة قد تم حلها. ربما، بالمناسبة، شخص يعرف ما هي المشكلة في أن مثل هذه الحزمة المهمة لا تزال عرضة للخطر لأكثر من عام؟

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

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

تمت إضافة حالة مثيرة للاهتمام مؤخرًا إلى المجموعة بواسطة مضيف أوروبي كبير وباهظ الثمن، والذي يستخدمه عملاؤنا. وفجأة اختفت جميع خوادمنا من على شاشات الرادار! أولاً، لاحظ العميل نفسه (أسرع من okerra!) أن الموقع الذي كان يعمل معه لا يفتح وقدم تذكرة بشأن ذلك. ولكن لم يتعطل موقع واحد فقط، بل جميع المواقع! (ناتاشا، لقد أسقطنا كل شيء!). وهنا بدأ أوكر بإرسال لفافات قدم طويلة تحمل كل المؤشرات التي أضاءت له. ذعر، ذعر، نركض في دوائر (ماذا يمكننا أن نفعل أيضًا؟). ثم ارتفع كل شيء. اتضح أنه كانت هناك صيانة روتينية في مركز البيانات (مرة كل عدة سنوات)، وبالطبع كان ينبغي تحذيرنا. لكن حدثت لهم مشكلة ما ولم يحذرونا. حسنًا، المزيد من النوبات القلبية، ونوبات قلبية أقل. ولكن بعد استعادة كل شيء، تحتاج إلى التحقق مرة أخرى من كل شيء! لا أستطيع أن أتخيل كيف سأفعل ذلك بيدي. اختبر Okerr كل شيء في بضع دقائق. اتضح أن معظم الخوادم كانت ببساطة غير متاحة مؤقتًا، لكنها عملت. وكان البعض مثقلا، ولكنهم وقفوا أيضا كما ينبغي. من بين كل الخسائر، فقدنا نسختين احتياطيتين، والتي وفقًا للتاج كان من المفترض أن يتم إنشاؤها وتحميلها أثناء استمرار عمل هذه الموزة الكاملة. لم أهتم حتى بإنشائها، وبعد يوم واحد فقط وصلت التنبيهات بأن كل شيء على ما يرام، وقد ظهرت النسخ الاحتياطية. يعجبني هذا المثال حقًا لأنه تبين أن okerr مفيد جدًا في موقف لم نفكر فيه مسبقًا، ولكن هذا هو الغرض من المراقبة - مقاومة ما لا يمكن التنبؤ به.

بالنسبة لمستشعرات Okerr، نستخدم أرخص استضافة ممكنة (حيث لا تكون الجودة والموثوقية مهمة، فهما يؤمنان بعضهما البعض). لذلك، وجدنا مؤخرًا استضافة جيدة جدًا ورخيصة جدًا، ومعاييرها رائعة. ولكن... في بعض الأحيان يتبين أن الاتصالات الصادرة من الجهاز الظاهري يتم إجراؤها من عنوان IP (مجاور) آخر. معجزات. وحدة Client_ip مع https://diagnostic.opendns.com/myip يحصل على IP خاطئ. ومن الواضح من سجلات الخادم الخاصة بالمؤشر أن التحديث جاء أيضًا من عنوان IP المجاور هذا. دعونا نتعامل مع الدعم الآن. من الجيد أننا لاحظنا ذلك في وقت السلم. ولكن، على سبيل المثال، يحدث غالبًا أن يتم تسجيل الوصول وفقًا لقائمة IP البيضاء - وإذا كان الخادم يومض أحيانًا بهذه الطريقة لفترة قصيرة - فيمكنك محاولة اكتشاف هذه المشكلة لفترة طويلة جدًا.

حسنًا، هناك شيء آخر - بما أننا نتحدث عن استضافة VPS - فإننا نستخدم دائمًا استضافة غير مكلفة (hetzner، ovh،scaleway). أنا حقا أحب ذلك سواء من حيث المعايير والاستقرار. نحن نستخدم أيضًا Amazon EC2 الأكثر تكلفة لمشاريع أخرى. لذا، بفضل okerr، لدينا رأينا المستنير الخاص بنا. كلاهما يسقط. ولن أقول أنه على مدى فترة طويلة من ملاحظاتنا، تبين أن الاستضافة الرخيصة مثل Hetzner كانت أقل استقرارًا بشكل ملحوظ من EC2. لذلك، إذا لم تكن مرتبطًا بميزات أمازون الأخرى، فلماذا تدفع أكثر؟ 🙂

ما هي الخطوة التالية؟

إذا لم أقم بإخافتك من Okerr في هذه المرحلة بعد، فجرب ذلك! يمكنك الذهاب مباشرة إلى هذا الرابط حساب تجريبي okerr (انقر الآن!) لكن ضع في اعتبارك أنه لا يوجد سوى حساب تجريبي واحد للجميع، لذلك إذا قمت بشيء ما، فقد يتدخل شخص آخر في نفس الحساب معك في نفس الوقت. أو (الأفضل) التسجيل عبر الرابط خارج الموقع - كل شيء بسيط، دون الرسائل القصيرة. إذا كنت لا ترغب في استخدام بريدك الإلكتروني الحقيقي، فيمكنك استخدام بريد إلكتروني يمكن التخلص منه، مثل mailinator (أوصي getnada.com). قد يتم حذف هذه الحسابات بمرور الوقت، لكنها ستكون مناسبة للاختبار.

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

من الوثائق - أولا وقبل كل شيء WIKI على جانب الخادم وعلى العميل (تحديث ويكي). ولكن إذا كان هناك شيء غير واضح، فاكتب إلى الدعم (على) okerr.com أو اترك تذكرة - سنحاول حل كل شيء بسرعة.

إذا كنت تستخدمه بجدية وهذه الحدود الزائدة غير كافية، فاكتب للدعم وسنقوم بزيادتها (مجانًا).

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

نريد أن ينطلق هذا المشروع، حتى يصبح العالم أكثر موثوقية بفضلنا. بفضل البرمجيات والخدمات المجانية، أصبح العالم أكثر ودية ويتطور بشكل أكثر ديناميكية. يمكن تخزين المصادر في جيثب مجاني، أما بالنسبة للبريد، فيمكنك استخدام Gmail المجاني. نحن نستخدم مجانا freshworks للدعم. للقيام بأي من هذا، لا تحتاج إلى الدفع مقابل الخوادم، ولا تحتاج إلى التنزيل والتهيئة، ولا تحتاج إلى حل مشكلات التشغيل المختلفة. كل مشروع جديد، كل فريق لديه على الفور البريد والمستودعات وإدارة علاقات العملاء. وكل هذا بجودة عالية جدًا ومجاني وفوري. نريد أن يكون الأمر نفسه بالنسبة للمراقبة - يمكن للشركات والمشاريع الصغيرة استخدام okerr مجانًا وحتى في مرحلة الميلاد والنمو تتمتع بموثوقية المشاريع الجادة البالغة.

المصدر: www.habr.com