أكملنا في الأجزاء السابقة من هذه السّلسلة إعداد خواديم التطبيقات، خطط الاسترداد، وآليات النسخ الاحتياطي. سنضبط في هذا الدرس إعداد المراقبة Monitoring لكي نكون على اطّلاع في أية لحظة بحالة عمل الخواديم والخدمات. تتيح برامج المراقبة مثل Nagios، Icinga وZabbix إمكانية إنشاء لوحات قيادة Dashboards وإشعارات تريك عناصر الإعداد التي تحتاج لاهتمام خاص. الهدف هو اكتشاف المشاكل والبدء في إصلاحها قبل أن تؤثر على المستخدمين النهائيين للتطبيق.
سنعد في هذا الدرس المراقبة باستخدام Nagios 4 ونثبت عملاء NRPE (إضافة تتيح تنفيذ أوامر Nagios على أجهزة أخرى) على الخواديم التي تكون التطبيق.
سنعد المراقبة على كل واحد من الخواديم لمعرفة هل الخادوم نشط وما إذا كانت العملية الرئيسة عليه (على سبيل المثال MySQL، Apache أو HAProxy) تعمل أم لا. لا يشمل هذا الدرس كل جوانب المراقبة، لذا قد تحتاج لإجراء فحوص إضافية لا يتناولها هذا الدّرس؛ إلا أنه يبقى نقطة جيدة للبدء.
المتطلبات
أنشئ، إن أردت الوصول إلى لوحة المراقبة عبر نطاق خاص مثل monitoring.example.com
، سجلا من نوع A
يحيل إلى عنوان IP العمومي الخاص بخادوم المراقبة. أو يمكنك بدلا من ذلك الوصول إلى لوحة القيادة في خادوم المراقبة باستخدام عنوانه العمومي. يُنصح بإعداد خادوم المراقبة لاستخدام HTTPS
وتقييد الوصول إليه بوضعه في شبكة خاصة افتراضية.
تثبيت Nagios على خادوم المراقبة
اضبط Nagios على خادوم المراقبة باتباع الدرس التالي: كيف تستخدم Nagios 4 لمراقبة خواديم Ubuntu 14.04. إن رغبت في استخدام Icinga الذي هو اشتقاق من Nagios فدرس كيف تستخدم Icinga لمراقبة خواديمك وخدماتك على Ubuntu 14.04 يشرح الطريقة.
توقف عند فقرة مراقبة مستضيف Ubuntu بواسطة عملاء NRPE.
إضافة الخواديم إلى Nagios
طبق خطوات فقرة مراقبة مستضيف Ubuntu بواسطة عملاء NRPE من درس Nagios السابق على كل واحد من الخواديم (app2
،app1
، db1
وlb1
).
تأكد من إضافة عنوان IP الخادوم أو اسم مستضيفه الخاص إلى allowed_hosts
في ملف إعداد NRPE.
يجب أن يكون لديك بعد الانتهاء من إضافة المستضيفات ملف منفصل لكل خادوم: app2.cfg
،app1.cfg
،db1.cfg
، وlb1.cfg
. يتضمن كل ملف تعريف المستضيف الذي يحيل إلى اسمه وعنوانه (قد يكون العنوان اسم المستضيف أو عنوان IP الخاص بالخادوم).
إعداد المستضيف ومراقبة الخدمة
نبدأ بإعداد لائحة لما نريد مراقبته على كل خادوم. نراقب، على كل خادوم، الخدمات التالية:
- Ping.
- SSH.
- الحمل الجاري Current Load.
- المستخدمون الحاليون Current users.
- المساحة المستخدمة من القرص الصلب Disk Utilization.
تعريف الخدمات المشتركة
أعددنا Nagios في الدرس المُشار إليه سابقا ليرقُب الملفات الموجودة في المجلد usr/local/nagios/etc/servers/
. سننشئ ملف إعداد Nagios للخدمات المشتركة التي نريد مراقبته؛ نسمي الملف common.cfg
.
افتح أولا ملف الإعداد لتحريره:
sudo nano /usr/local/nagios/etc/servers/common.cfg
أضف تعريفات الخدمات التالية، مع تحديد قيمة host_name
(أسماء المستضيفات الخاصة بالخواديم، عُرِّفت سابقا ضمن ملفات app2.cfg
،app1.cfg
،db1.cfg
، وlb1.cfg
):
define service { use generic-service host_name db1,app1,app2,lb1 service_description PING check_command check_ping!100.0,20%!500.0,60% } define service { use generic-service host_name db1,app1,app2,lb1 service_description SSH check_command check_ssh notifications_enabled 0 } define service { use generic-service host_name db1,app1,app2,lb1 service_description Current Load check_command check_nrpe!check_load } define service { use generic-service host_name db1,app1,app2,lb1 service_description Current Users check_command check_nrpe!check_users } define service{ use generic-service host_name db1,app1,app2,lb1 service_description Disk Utilization check_command check_nrpe!check_hda1 }
احفظ الملف ثم أغلقه.
بالإمكان الآن الانتقال لتعريف الخدمات الخاصة بكل خادوم. نبدأ بخادوم قاعدة البيانات.
تعريف عملية MySQL
إنشاء أمر NRPE (على العميل)
سنضبط أمر NRPE جديدا على خادوم قاعدة البيانات، db1
. افتح ملف إعداد NRPE جديدا، commands.cfg
:
sudo nano /etc/nagios/nrpe.d/commands.cfg
أضف تعريف الأمر التالي:
command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld
احفظ الملف ثم أغلقه. يتيح الأمر لـNRPE فحص عملية Process باسم mysqld
والإبلاغ عن حالة حرجة Critical status إن كان هناك أقل من عملية واحدة نشطة بهذا الاسم.
أعد تحميل إعداد NRPE:
sudo service nagios-nrpe-server reload
إنشاء تعريف الخدمة (على الخادوم)
نحتاج لتعريف خدمة جديدة على خادوم monitoring
(خادوم المراقبة) لاستخدام NRPE لتشغيل أمر check_mysqld
السابق. افتح الملف الذي يعرف مستضيف قاعدة البيانات، db1.cfg
في مثالنا:
sudo nano /usr/local/nagios/etc/servers/db1.cfg
أضف تعريف الخدمة التالي في آخر الملف (تأكد من أن قيمة host_name
تطابق اسم تعريف المستضيف):
define service {
use generic-service
host_name db1
service_description Check MySQL Process
check_command check_nrpe!check_mysqld
}
احفظ الملف ثم أغلقه. يُعد تعريف الخدمة أعلاه Nagios لاستخدام NRPE لتنفيذ أمر check_mysqld
على خادوم قاعدة البيانات.
تجب إعادة تحميل Nagios لاعتماد التغييرات. إلا أننا سننتقل أولا لمراقبة عملية Apache أولا.
تعريف عملية Apache
إنشاء أمر NRPE (على العميل)
نضبط أمر NRPE جديدا على كلٍّ من خادومي التطبيق:
sudo nano /etc/nagios/nrpe.d/commands.cfg
ثم نضيف تعريف الأمر التالي:
command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2
احفظ الملف ثم أغلقه. يسمح الأمر لNRPE بالتحقق من وجود عملية باسم apache2
والإبلاغ عن حالة حرجة إن لم توجد عملية بهذا الاسم وإصدار تحذير إن وجدت أقل من ثلاث عمليات.
نعيد تحميل إعداد NRPE:
sudo service nagios-nrpe-server reload
تأكد من تنفيذ الخطوات على جميع خواديم التطبيقات.
إنشاء تعريف الخدمة (على الخادوم)
نحتاج تعريف خدمة جديدة تستخدم أمر check_apache2
على خادوم المراقبة monitoring
. افتح الملف الذي يعرف مستضيف التطبيق (يوجد في حالتنا اثنان: app1
وapp2
):
sudo nano /usr/local/nagios/etc/servers/app1.cfg
أضف تعريف الخدمة التالي في آخر الملف (تأكد من أن قيمة host_name
تطابق اسم تعريف المستضيف):
define service {
use generic-service
host_name app1
service_description Check Apache2 Process
check_command check_nrpe!check_apache2
}
احفظ الملف ثم أغلقه. يعد تعريف الخدمة Nagios لاستخدام NRPE لتنفيذ أمر check_apache2
على خادوم التطبيق. تأكد من تكرار الخطوة على كل واحد من خواديم التطبيقات.
تعريف عملية HAProxy
إنشاء أمر NRPE (على العميل)
نعد أمر NRPE على خادوم توزيع الحمل lb1
بنفس طريقة إعداده في الخواديم السابقة:
sudo nano /etc/nagios/nrpe.d/commands.cfg
ونضيف تعريف الأمر التالي:
command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy
احفظ الملف ثم أغلقه. يعد تعريف الخدمة السابق NRPE للتحقق من عملية باسم haproxy
ثم الإبلاغ عن حالة حرجة إن كان عدد العمليات بهذا الاسم أصغر من 1.
نعيد تحميل إعداداتت NRPE:
sudo service nagios-nrpe-server reload
إنشاء تعريف الخدمة (على الخادوم)
نضيف تعريف خدمة جديدا على خادوم monitoring
ليستخدم أمر check_haproxy
؛ بنفس الطريقة المشروحة سابقا.
sudo nano /usr/local/nagios/etc/servers/lb1.cfg
نضيف التعريف التالي في نهاية الملف:
define service {
use generic-service
host_name lb1
service_description Check HAProxy Process
check_command check_nrpe!check_haproxy
}
يعد التعريف Nagios لاستخدام NRPE في تنفيذ الأمر check_haproxy
على خادوم توزيع الحمل.
تجب إعادة تحميل Nagios من أجل اعتماد التعديلات.
إعادة تحميل Nagios
نعيد تحميل Nagios عبر تنفيذ الأمر التالي من أجل اعتماد التعديلات السابقة:
sudo service nagios reload
إن لم توجد أخطاء في صياغة الأوامر والتعريفات فيُعاد تحميل Nagios دون مشاكل.
التحقق من خدمات Nagios
يجب أن نتأكد من أن Nagios يراقب جميع الخواديم والخدمات التي عرفناها. ادخل إلى خادوم Nagios باستخدام اسم المستضيف العمومي أو عنوان IP (مثلا http://monitoring.example.com/nagios
؛ أدخِل بيانات الدخول التي أعددتها أثناء تثبيت Nagios. انقر رابط الخدمات Services في القائمة الجانبية؛ يجب أن تظهر لديك صفحة تشبه ما يلي:
الوضعية المثالية هي أن تكون كل المستضيفات والخدمات على حالة OK
. يمكن أن نرى في لقطة الشاشة السابقة وجود مشكلة في خادوم التطبيق app2
؛ ويرجع ذلك إلى أنه كان مطفأ في أغلب فحوص الحالة الأخيرة. إن وجدت خدمات بحالة مغايرة لOK
فأصلحها؛ وإن كانت جميع الخدمات بحالة جيدة فراجع إعدادات Nagios بحثا عن أخطاء ربما تكون أدت لإبلاغ غير صحيح عن حالة الخدمات.
اعتبارات أخرى
قد ترغب في إنشاء خطة استرداد لخادوم المراقبة، ملفات الإعداد الواجب نسخها إن أردت ذلك توجد في المجلد usr/local/nagios/etc/
. يمكن أيضا أن تعدّ Nagios لمراقبة خدمات أخرى مثل البريد الإلكتروني.
خاتمة
يمكّن خادوم المراقبة من الحصول على حالة الخدمات والخواديم بمجرد إلقاء نظرة على لوحة المراقبة. يساعد خادوم المراقبة، عند حدوث مشاكل، في تحديد الخادوم والخدمة التي لا تعمل بطريقة صحيحة وهو ما يعينك في تخفيض زمن توقف Downtime الخاص التطبيق.
في الجزء الموالي من الدليل سنعرض لكيفية إعداد سجلات مركزية لتطبيقات الويب في بيئة الإنتاج.
ترجمة -وبتصرّف- لمقال Building for Production: Web Applications — Monitoring لصاحبه Mitchell Anicas.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.