الصورة: المصدرمرحبا يا هبر! اسمي إيليا أبليف ، أعمل في قسم المراقبة في Badoo.
يمكنك الانتظار لفترة طويلة حول نظام المراقبة الأكثر برودة. الأداة الرئيسية للاستجابة للمشكلات في Badoo هي Zabbix ، وقد
شاركنا مرارًا وتكرارًا
تجربة تخصيصها.
خارج الصندوق ، يمكنك التعرف على المشاكل الجديدة إما من خلال واجهة الويب أو عن طريق البريد / الرسائل القصيرة. هذا يعمل بشكل جيد ، وحتى نقطة معينة كنا مرتاحين مع هذه الأساليب.
اليوم ، يحتوي نظامنا على العديد من مثيلات الخادم ، وآلاف المضيفين ، ومئات الآلاف من الفحوصات ، ونفس العدد تقريبًا من المشغلات التي تحتاج إلى الاستجابة لها في أسرع وقت ممكن. بعد سلسلة من الحوادث ، عندما قضينا ما يصل إلى عشر دقائق فقط لاكتشاف مشكلة (وهو أمر غير مقبول تمامًا) ، أدركنا أننا بحاجة إلى طرق أخرى للإبلاغ عن المشكلات. عندها ربما يكون رد فعلنا أسرع.
الحل الأمثل ، في رأينا ، هو عرض الإخطارات الهامة فوق جميع النوافذ (المتصفحات والدردشات ووحدات التحكم). في هذه المقالة ، سنتحدث عن كيفية إنهاء Zabbix ، وتعليم كيفية إرسالها مباشرة إلى سطح المكتب.
لمن يناسب هذا الحل:
- المسؤولين الإداريين ، الذين لا ينظرون على مدار الساعة إلى الشاشة فحسب ، بل يتعاملون أيضًا مع المهام الأخرى ؛
- جميع المسؤولين الآخرين الذين لا يرغبون في عرض صحتي PROBLEM و OK في البريد أو الرسائل القصيرة ، ولكنهم يريدون معرفة المشكلات المهمة في الوقت المناسب.
سيكون عليك قضاء بعض الوقت في التثبيت ، ولكن أعتقد أنه إذا كنت تستخدم Zabbix واستخدمت بالفعل نصوصًا مخصصة ، فلن يكون الأمر صعبًا بالنسبة لك.
إنتباه! إن تلقي الإخطارات بهذه الطريقة يسبب الإدمان ، ويعطي استخدامه على المدى الطويل الانطباع بأنه جزء لا يتجزأ من Zabbix.
سأخبرك في خطوات ماذا وكيف فعلنا. التنفيذ الفني بسيط للغاية:
- يرسل Zabbix تنبيهًا إلى حدث ما.
- يرسل البرنامج النصي المرسل على الخادم البيانات إلى العميل على سطح المكتب عبر UDP.
- يتلقى النص البرمجي للمستلم الإشعار ، ويؤدي إلى ظهور رسالة منبثقة من خلال تطبيق إضافي.
قد يختلف العنصر الثالث بناءً على نظام التشغيل الذي تستخدمه والتطبيق الذي تفضله.
الخطوة الأولى: تكوين Zabbix
توضح الوثائق الرسمية
كيفية إنشاء تنبيهاتك .
رمز المشروع متاح على GitHub:
https://github.com/ableev/ZbxDsktp .
- ضع zbxpush.py في AlertScriptsPath مقدمًا على خادم Zabbix.
- المزيد في واجهة الويب: الإدارة → أنواع الوسائط → إنشاء .

3. سوف نسجل مقدمًا IP / FQDN الذي سنرسل إليه تنبيهات.
يمكن ترقية هذا البندعلى سبيل المثال ، قمنا بذلك: هناك خادم مراقبة رئيسي ، مع تسجيل دخول SSH ، يتذكر البرنامج النصي عنوان IP للمتصل ويبدأ في إرسال تنبيهات إليه. وبالتالي ، لتنشيط تلقي البيانات في المنزل ، لا تحتاج إلى تغيير الإجراء في كل مرة.
في واجهة الويب:
الإدارة →
المستخدمون →
٪ username٪ →
الوسائط .

4. إنشاء إجراء على المشغلات.
في واجهة الويب:
التكوين ←
الإجراءات .

تنسيق الإرسال
{TRIGGER.NSEVERITY}@@@{HOST.NAME}@@@{TRIGGER.NAME}
الأول هو تنسيق الرقم للمشغل (يؤثر 4 أو 5 على الرمز المعروض: مرتفع أو كارثي) ، والثاني هو رأس الإعلام ، والثالث هو نص الرسالة.
@- لجعلها ملائمة لاقتحام الأعمدة ، لأن أسماء المشغلات يمكن أن تقول أي شيء (على الأقل معنا :)) ، ولكن بالتأكيد ليس هذا المزيج.


الخطوة الثانية: يرسل الخادم البيانات إلى العميل
المنطق بسيط: نتلقى حدثًا ، ونعيد توجيهه إلى العميل.
zbxpush.py
هنا يمكنك تغيير UDP إلى TCP. لقد اخترنا UDP لسبب واحد بسيط: يرسل Zabbix جميع الإشعارات بالتسلسل ، مما يعني أنه في حالة عدم توفر جهاز الكمبيوتر الخاص بك ، في حالة استخدام TCP ، سيتم إرسال الإشعارات مع تأخير طويل.
لكن UDP ليست موثوقةسوف يلاحظ القارئ ، الذي يأتي إلى نكتة حول UDP ، أنه في حالة إرسال تنبيهات عبر UDP ، هناك فرصة لفقدها في مكان ما بين الخادم وسطح المكتب. وسيكون على حق. لكن الهدف ليس توصيل رسالة مضمونة ، ولكن لفت الانتباه ببساطة وبسرعة إلى لوحة القيادة التي بها مشاكل: "مرحبًا ، حدث شيء هناك ، اذهب وشاهد."
تذكر أن تجعل البرنامج النصي قابل للتنفيذ!
الخطوة الثالثة: استلام الحدث وعرض الإخطارات
zbxlistenerd.py
- نص برمجي يدور في الخلفية
zbxlistenerd.py
تشغيل الإشعارات
settings.cfg
- ملف بإعدادات العميل
icons/5.png
،
icons/4.png
- أيقونات
icons/4.png
المختلفة
icons/4.png
كذلك تتباعد مساراتنا. ينطوي جزء "العميل" على القليل من الإبداع ، حيث يخلق الجميع بيئة لأنفسهم.
ما هو ضروري:
- الرموز المقابلة لخطورة المحفزات ؛
- إخطارات الصوت المنبثقة ؛
- تنفيذ إجراء من خلال النقر على إشعار (تسجيل الدخول إلى SSH ، وفتح رابط ، وبدء تذكرة حول مشكلة ، وما إلى ذلك).
تستخدم شركتنا بشكل أساسي Linux و Mac OS كنظام تشغيل مكتبي ، لذلك دعونا نلقي نظرة على بعض الأمثلة لهم. إذا قمت بتطبيق نفس الشيء لنظام التشغيل Windows ، فمرحبًا بالتعليق! نحن سعداء لتكملة المنشور.
لينكس

دعني أعطيك مثالاً حدث للاستخدام: إعلام - إرسال في Xfce (في لقطة الشاشة أعلاه). لماذا أخطر وأرسل وليس نفس بايثون باستخدام libnotify؟ نعم ، لأنه موجود في جميع توزيعات سطح المكتب الشائعة (Ubuntu و Fedora و SUSE) ويعمل مع جميع DEs (على الأقل الشائعة) (Gnome و KDE و Xfce).
نصيحة: إذا واجهت فترات من عدم التوافر الجماعي لشيء ما (على سبيل المثال ، توقف مفتاح ما وغمرتك مجموعة من المشغلات حول عدم توفر الخادم) ، فقم على الفور بتكوين مفتاح الاختصار لإكمال عملية الإخطار والإرسال.
نظام التشغيل Mac OS
منذ أن تم تنفيذ الحل في البداية على أساس تطبيق مجاني ، ثم جربنا التطبيق المدفوع ، سيكون هناك مثالان.
المخطر النهائي

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