production deployment 101 مراقبة تطبيقات الويب الموجهة لبيئة الإنتاج


محمد أحمد العيل

building-for-production-6.thumb.png.c7f6

أكملنا في الأجزاء السابقة من هذه السّلسلة إعداد خواديم التطبيقات، خطط الاسترداد، وآليات النسخ الاحتياطي. سنضبط في هذا الدرس إعداد المراقبة Monitoring لكي نكون على اطّلاع في أية لحظة بحالة عمل الخواديم والخدمات. تتيح برامج المراقبة مثل Nagios، Icinga وZabbix إمكانية إنشاء لوحات قيادة Dashboards وإشعارات تريك عناصر الإعداد التي تحتاج لاهتمام خاص. الهدف هو اكتشاف المشاكل والبدء في إصلاحها قبل أن تؤثر على المستخدمين النهائيين للتطبيق.

01_monitoring.thumb.png.56932a9b84e204f4

سنعد في هذا الدرس المراقبة باستخدام 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 في القائمة الجانبية؛ يجب أن تظهر لديك صفحة تشبه ما يلي:

02_services.thumb.png.38fff1db874497897f

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

اعتبارات أخرى

قد ترغب في إنشاء خطة استرداد لخادوم المراقبة، ملفات الإعداد الواجب نسخها إن أردت ذلك توجد في المجلد usr/local/nagios/etc/. يمكن أيضا أن تعدّ Nagios لمراقبة خدمات أخرى مثل البريد الإلكتروني.

خاتمة

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

في الجزء الموالي من الدليل سنعرض لكيفية إعداد سجلات مركزية لتطبيقات الويب في بيئة الإنتاج.

ترجمة -وبتصرّف- لمقال Building for Production: Web Applications — Monitoring لصاحبه Mitchell Anicas.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن