كيف قمت بتدريس Zabbix لمراقبة العقدة الخاصة بي والإبلاغ عن المشكلات

مرحبا يا هبر!

أنا أعمل حاليًا على مشروع messchain blockchain مع فريق من زملائي. من يهتم - راجع الروابط في الملف الشخصي أو اسأل في التعليقات.

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



الخطة التي اتبعتها


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

قررت أنه لإنجاز هذه المهمة ، سأربط Zabbix إلى Slack (لدينا أداة مشروع عمل). وفقًا لذلك ، ستقوم Zabbix بمراقبة العقدة وإرسال رسائل خطأ إلي في Slack's PM.

التنفيذ: خطوة بخطوة


الخطوة 1: Zabbix


بالطبع ، ليس لدى Zabbix أدوات مراقبة قياسية مُعدة مسبقًا للعقدة الخاصة بنا. لذلك ، كانت الرغبة الأولى هي تحديد مدى توفر منفذ العقدة باستخدام المفتاح net.tcp.listen[port].

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

ماذا يجب أن تفعل نودا؟ صحيح ، تنمو. هنا النمو سيكون العلامة الرئيسية. لذلك ، قررت استخدام المفتاح system.run[command, mode] .

جنبا إلى جنب مع curl -s http://127.0.0.1:36666/api/blocks/getHeight .

نتيجة لذلك ، تلقينا سلسلة تنسيق JSON من النموذج

 {"success":true,"nodeTimestamp":XXXXXXX,"height":XXXXXXX} 

جاءت حزمة jq (https://stedolan.imtqy.com/jq/) للمساعدة في حل مشكلة تحليل JSON. نقل نتيجة بسيطة عبر أنبوب curl http://127.0.0.1:36666/api/blocks/getHeight | jq .height {6666 / api / blocks / getHeight curl http://127.0.0.1:36666/api/blocks/getHeight | jq .height curl http://127.0.0.1:36666/api/blocks/getHeight | jq .height . curl http://127.0.0.1:36666/api/blocks/getHeight | jq .height ، وبدلاً من الارتفاع الذي طال انتظاره ، تلقينا ردًا يحتوي على معلومات حول أمر curl .



المعلومات المكررة تحتاج إلى إزالتها ، ثم جاء المساعد - رمز -s ، الملقب- -silent . نتيجة لذلك ، باستخدام نظام Zabbix system.run[curl -s http://127.0.0.1:36666/api/blocks/getHeight | jq .height] system.run[curl -s http://127.0.0.1:36666/api/blocks/getHeight | jq .height] نحصل على ارتفاع العقدة المطلوب والمريح لمراقبة المشاهدة XXXXXXXXX.



مطلوب مشغل أيضا لتكوين التنبيه المخطط. كانت الخطة على النحو التالي: مقارنة القيم الأخيرة والسابقة ، بحيث يعمل المشغل إذا كان النمو أقل من واحد.

{ADAMANT Node Monitoring:system.run[curl -s http://127.0.0.1:36666/api/blocks/getHeight | jq .height].change()}<1

الخطوة 2. Zabbix إلى سلاك




المهمة التالية هي إعلام المشغل في Slack. كأساس ، أخذت المادة https://github.com/ericoc/zabbix-slack-alertscript .

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

  url='********************************' username='Server' to="$1" subject="$2" recoversub='^RECOVER(Y|ED)?$' if [[ "$subject" == 'Warning' ]]; then color='#EBFF00' elif [ "$subject" == 'Not classified' ]; then color='#D8E3FF' elif [ "$subject" == 'Information' ]; then color='#0049FF' elif [ "$subject" == 'Average' ]; then color='#FFC200' elif [ "$subject" == 'High' ]; then color='#FF5500' elif [ "$subject" == 'Disaster' ]; then color='#FF0000' else color='#00FF06' fi message="${subject} \n $3" payload="payload={\"attachments\": [{\"color\": \"${color}\", \"text\": \"${message}\"}]}" curl -m 5 --data-urlencode "${payload}" $url 

الاستنتاجات


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

Source: https://habr.com/ru/post/ar440216/


All Articles