Product SiteDocumentation Site

12.4. المراقبة

المراقبة هي مصطلح عام، ونشاطات المراقبة المتنوعة لها أهداف عدة: فمن ناحية أولى، تسمح متابعة استهلاك موارد الحاسب بتوقع الإشباع والتطويرات اللاحقة له؛ ومن ناحية أخرى، فإن تنبيه مدير النظام فور خروج إحدى الخدمات عن العمل أو عدم عملها بشكل صحيح يعني أن إصلاح المشاكل التي تحدث قد يتم أبكر.
يغطي Munin الناحية الأولى، من خلال عرض مخططات بيانية للقيم التاريخية لعدد من المتغيرات (الذاكرة المستخدمة، مساحة القرص المحجوزة، حمل المعالج، نشاط الشبكة، حمل Apache/MySQL، وهكذا). أما Nagios فيغطي الناحية الأخرى، من خلال التحقق المنتظم من عمل الخدمات وتوفرها، وإرسال تنبيهات عبر القنوات المناسبة (بريد إلكتروني، رسائل نصية، وهكذا). لكل منهما تصميم تجزيئي يسهل إنشاء إضافات جديدة لمراقبة متغيرات أو خدمات محددة.

12.4.1. إعداد Munin

يهدف Munin لمراقبة العديد من الأجهزة؛ وبالتالي، من الطبيعي أن يعتمد بنية مخدم/عميل. يجمع المستضيف المركزي –راسم البيانات (the grapher)– المعطيات من جميع حواسيب المراقبة، ويولد المخططات البيانية الزمنية.

12.4.1.1. إعداد الأجهزة للمراقبة

الخطوة الأولى هي تثبيت الحزمة munin-node. تنصت الخدمة التي تثبتها هذه الحزمة إلى المنفذ 4949 وترد بإرسال البيانات التي تجمعها كافة الملحقات الفعالة. كل ملحق هو برنامج بسيط يعيد وصفاً للبيانات التي يجمعها بالإضافة إلى آخر قيمة مقاسة. تخزن الملحقات في /usr/share/munin/plugins/، لكن لا تستخدم منها إلا التي لها رابط رمزي في المجلد /etc/munin/plugins/.
عند تثبيت الحزمة، تعرف مجموعة من الملحقات الفعالة اعتماداً على البرمجيات المتوفرة والإعداد الحالي للمستضيف. لكن هذا الإعداد الآلي يعتمد على ميزة يجب أن يوفرها كل ملحق، ولذلك كان من المستحسن مراجعة وتعديل النتائج يدوياً. قد يفيد تصفح معرض الملحقات ولو لم يكن هناك توثيقاً شاملاً لجميع الملحقات. على أي حال، جميع الملحقات هي سكربتات ومعظمها بسيط جداً وفيه تعليقات توضيحية جيدة. إن تصفح /etc/munin/plugins/ إذن هو طريق جيدة لأخذ فكرة عن مهمة كل ملحق وتحديد الملحقات التي يجب إزالتها. كما أن تفعيل ملحق مفيد تجده في /usr/share/munin/plugins/ لا يحتاج إلا إنشاء رابط رمزي بالأمر ln -sf /usr/share/munin/plugins/plugin /etc/munin/plugins/‎. لاحظ أنه عندما ينتهي اسم الملحق بشرطة منخفضة ”_“ (underscore)، فهذا يعني أن الملحق يحتاج متغيراً حتى يعمل. يجب تخزين قيمة هذا المتغير في اسم الرابط الرمزي؛ مثلاً، يجب تفعيل الملحق ”if_‎“ بالرابط if_eth0، وعندها سيراقب نشاط الشبكة على الواجهة الشبكية eth0.
بعد إعداد جميع الملحقات بشكل صحيح، يجب تغيير إعدادات الخدمة لتحديد صلاحيات الوصول للبيانات المجموعة. يتم هذا من خلال استخدام تعليمة التوجيه allow في الملف /etc/munin/munin-node.conf الإعداد الافتراضي هو allow ^127\.0\.0\.1$، وهو يسمح بالوصول فقط للمستضيف المحلي. في العادة سيضيف مدير النظام سطراً مشابهاً يحوي عنوان IP للمستضيف راسم البيانات، وبعدها يعيد تشغيل الخدمة بالأمر service munin-node restart.

12.4.1.2. إعداد راسم البيانات

”راسم البيانات“ هو ببساطة حاسوب يجمع البيانات ويولد الرسوم البيانية الموافقة. البرنامج المطلوب متوفر في الحزمة munin. يشغل الإعداد الافتراضي munin-cron (مرة كل 5 دقائق)، الذي يجمع البيانات من كافة الأجهزة المذكورة في /etc/munin/munin.conf (المستضيف المحلي هو الوحيد المذكور افتراضيًا)، ويحفظ البيانات التاريخية في ملفات RRD (‏Round Robin Database، وهي صيغة ملفات مصممة لحفظ البيانات التي تتغير مع الزمن) محفوظة في /var/lib/munin/ ويولد صفحة HTML تحوي المخططات البيانية في المجلد /var/cache/munin/www/.
يجب إذن ذكر جميع الأجهزة المراقبة في ملف الضبط /etc/munin/munin.conf. كل جهاز يذكر في قسم كامل مع اسم يقابل الجهاز ومدخلة address واحدة على الأقل هي مدخلة العنوان التي تعطي عنوان IP المناسب.
[ftp.falcot.com]
    address 192.168.0.12
    use_node_name yes
يمكن أن تصبح الأقسام معقدة أكثر وتضاف إليها معلومات وصف مخططات بيانية إضافية لتوليدها بجمع البيانات من عدة أجهزة. العينات الموفرة في ملف الضبط هي نقاط بدء جيدة للتخصيص.
آخر خطوة هي نشر الصفحات المولدة؛ وهذا يحتاج إعداد مخدم وب حتى تتاح محتويات /var/cache/munin/www/ على موقع وب. سيكون الوصول لهذا الموقع مقيَّداً غالباً، إما باستخدام نظام مصادقة أو بتقييد الوصول حسب عناوين IP. انظر قسم 11.2, “مخدم الوب (HTTP)” لمزيد من التفاصيل.

12.4.2. إعداد Nagios

لا يشترط Nagios تثبيت أي شيء على الأجهزة المراقبة بخلاف Munin؛ بل يستخدم Nagios –معظم الأحيان– للتحقق من توفر الخدمات الشبكية. مثلاً، يمكن أن يتصل Nagios بمخدم الوب ويتحقق أنه يستطيع الحصول على صفحة وب معينة خلال مدة زمنية محددة.

12.4.2.1. التثبيت

أول خطوة في إعداد Nagios هي تثبيت الحزم nagios3، وnagios-plugins، وnagios3-doc. عملية التثبيت لهذه الحزم تتضمن إعداد واجهة وب وإنشاء مستخدم أولي باسم nagiosadmin (ويطلب منك تحديد كلمة السر لهذا الحساب). يمكن إضافة مستخدمين آخرين بسهولة بإضافتهم إلى ملف /etc/nagios3/htpasswd.users بالأمر htpasswd الذي يوفره مخدم الوب أباتشي. إذا لم يظهر سؤال Debconf عن كلمة السر أثناء التثبيت، فيمكن استخدام dpkg-reconfigure nagios3-cgi لتعريف كلمة السر لحساب nagiosadmin.
تفتح واجهة الوب بتوجيه مستعرض الوب إلى العنوان http://server/nagios3/؛ لاحظ أن Nagios يراقب وحده بعض المتغيرات للجهاز الذي يعمل عليه. لكن لا تعمل بعض المزايا التفاعلية مثل إضافة التعليقات إلى المستضيف. هذه المزايا معطلة في إعدادات Nagios الافتراضية، إذ أن هذه الإعدادات مقيدة جداً لأسباب أمنية.
كما هو موثق في /usr/share/doc/nagios3/README.Debian، لتفعيل بعض المزايا يجب تعديل /etc/nagios3/nagios.cfg وتغيير قيمة المتغير check_external_commands إلى ”1“. كما نحتاج ضبط صلاحيات الكتابة للمجلدات التي يستخدمها Nagios، بأوامر تشبه ما يلي:
# service nagios3 stop
[...]
# dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
# dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
# service nagios3 start
[...]

12.4.2.2. الضبط

واجهة الوب في Nagios جميلة نسبيًا، لكنها لا تسمح بتغيير الإعدادات، ولا يمكن استخدامها لإضافة أجهزة أو خدمات لمراقبتها. كل الإعداد تديره ملفات يشير إليها ملف الإعداد المركزي، وهو /etc/nagios3/nagios.cfg.
قبل الغوص في هذه الملفات، يجب فهم بعض مفاهيم Nagios. يشمل الإعداد مجموعة من الأنواع المختلفة من الكائنات:
  • host (المستضيف) هو الجهاز الذي ستتم مراقبته؛
  • hostgroup هي مجموعة من المستضيفين يجب تجميعهم معاً عند العرض، أو لتجميع بعض الإعدادات المشتركة؛
  • service (الخدمة) هي عنصر قابل للقياس متعلق بمستضيف أو بمجموعة من المستضيفين. الغالب أنها فحص لخدمة شبكية ما، لكن يمكن أن تشمل اختبار متغيرات أخرى أيضًا والتحقق أن قيمها ضمن مجال مقبول (مثلاً، مساحة القرص الحرة أو حمل المعالج)؛
  • servicegroup هي مجموعة من الخدمات التي يجب تجميعها معاً عند العرض؛
  • contact هو شخص يتلقى التنبيهات؛
  • contactgroup مجموعة من الأشخاص الذين يتلقون التنبيهات؛
  • timeperiod الفاصل الزمني بين كل عملية تحقق من بعض الخدمات؛
  • command هو سطر من الأوامر يستدعى للتحقق من خدمة معينة.
لكل كائن عدد من الخصائص (تختلف حسب نوعه) التي يمكن تعديلها. لا يمكن أن نضع قائمة كاملة بها لكثرتها، لكن أهم الخصائص هي العلاقات بين الكائنات.
تستخدم الخدمة (service) أمراً (command) للتحقق من حالة ميزة على مستضيف (host) معين (أو مجموعة hostgroup) خلال فاصل زمني (timeperiod). في حال حدوث مشكلة، يرسل Nagios تنبيهاً لجميع أعضاء contactgroup المرتبطة بتلك الخدمة. يرسل التنبيه لكل عضو وفقاً لقناة الاتصال المحددة في كائن contact المقابل له.
يسمح نظام الوراثة بتشارك مجموعة من الخصائص بين العديد من الكائنات دون تكرار المعلومات. كما يتضمن الإعداد الأولي عدد من الكائنات القياسية؛ إن تعريف مستضيف جديد أو خدمة أو جهة اتصال في معظم الأحيان هو مجرد اشتقاق للكائنات العامة المعرفة مسبقًا. الملفات في /etc/nagios3/conf.d/ هي مصدر جيد لتعلم طريقة عمل هذه الكائنات.
يستخدم مديرو النظم في شركة فلكوت الإعداد التالي:

مثال 12.3. الملف /etc/nagios3/conf.d/falcot.cfg

define contact{
    name                            generic-contact
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    w,u,c,r
    host_notification_options       d,u,r
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
    register                        0 ; Template only
}
define contact{
    use             generic-contact
    contact_name    rhertzog
    alias           Raphael Hertzog
    email           hertzog@debian.org
}
define contact{
    use             generic-contact
    contact_name    rmas
    alias           Roland Mas
    email           lolando@debian.org
}

define contactgroup{
    contactgroup_name     falcot-admins
    alias                 Falcot Administrators
    members               rhertzog,rmas
}

define host{
    use                   generic-host ; Name of host template to use
    host_name             www-host
    alias                 www.falcot.com
    address               192.168.0.5
    contact_groups        falcot-admins
    hostgroups            debian-servers,ssh-servers
}
define host{
    use                   generic-host ; Name of host template to use
    host_name             ftp-host
    alias                 ftp.falcot.com
    address               192.168.0.6
    contact_groups        falcot-admins
    hostgroups            debian-servers,ssh-servers
}

# 'check_ftp' command with custom parameters
define command{
    command_name          check_ftp2
    command_line          /usr/lib/nagios/plugins/check_ftp -H $HOSTADDRESS$ -w 20 -c 30 -t 35
}

# Generic Falcot service
define service{
    name                  falcot-service
    use                   generic-service
    contact_groups        falcot-admins
    register              0
}

# Services to check on www-host
define service{
    use                   falcot-service
    host_name             www-host
    service_description   HTTP
    check_command         check_http
}
define service{
    use                   falcot-service
    host_name             www-host
    service_description   HTTPS
    check_command         check_https
}
define service{
    use                   falcot-service
    host_name             www-host
    service_description   SMTP
    check_command         check_smtp
}

# Services to check on ftp-host
define service{
    use                   falcot-service
    host_name             ftp-host
    service_description   FTP
    check_command         check_ftp2
}
يُعرِّف ملف الإعداد هذا مستضيفين لمراقبتهما. الأول مخدم وب، وتجرى عليه فحوصات على منفذ HTTP‏ (80) ومنفذ HTTPS‏ (443). يختبر Nagios أيضاً مخدم SMTP يعمل على المنفذ 25. المستضيف الثاني هو مخدم FTP، ويتضمن الاختبار التحقق أن الرد يتم خلال 20 ثانية. بعد هذا التأخير يولد warning؛ أما بعد 30 ثانية، فيصدر إنذار حرج. تظهر واجهة الوب الخاصة بـNagios أن خدمة SSH مراقبة أيضاً: هذه المراقبة ناتجة عن انضمام المستضيفون لمجموعة ssh-servers. الخدمة القياسية المقابلة معرفة في /etc/nagios3/conf.d/services_nagios2.cfg.
لاحظ استخدام الوراثة: يرث الكائن من كائن آخر باستخدام ”use parent-name“. يجب أن يكون الكائن الأب قابلاً للتعرف، عبر إسناد اسم له في خاصية ”name identifier“. إذا كان الهدف من الكائن الأب أن يستعمل في الوراثة فقط دون أن يكون كائناً حقيقياً، عندها يعطى الخاصية ”register 0“ حتى لا يأخذه Nagios بعين الاعتبار، وبالتالي يتجاهل نقصان بعض المتغيرات المطلوبة في الحالة الطبيعية.