بسم الله الرحمن الرحيم
الموضوع :
Monit لمراقبة السيرفرات
اهداء :
الى زملائي واخواني في ابعاد المعلومات و الى 37 .
مقدمة :
مراقبة السيرفر من مهام مدير السيرفر الاساسية وهي ضرورة لابد ان يتم عملها لكي يتم ضمان عمل السيرفر وقيامه باصلاح بعض مشاكله بدون تدخل خارجي . ايضا ، مراقبة السيرفر مع وضع الحماية في البال والقيام بوضع بعض القوانين التي تادي دور المراقبة واكتشاف اي تغيير امني على تصاريح الملفات او المجلدات المهمه شيء ضروري ومهم جدا لضمان اكتشاف اي محاولة اختراق قبل تمادي تلك المحاولة . Monit برنامج رائع لمراقبة خدمات السيرفرات ، حالة السيرفر وايضا مراقبة سيرفرات اخرى واشياء اخرى عديدة ستتضح لنا من هذا الموضوع باذن الله .
الحقوق :
الموضوع كتب من قبلي ، علي حمد ، لفائدة المستخدم العربي ، ارجو عدم نسخه كليا او جزئيا او نقله بدون ذكر هذه الحقوق.
تنبيه :
مع انه تم كتابة الموضوع من قبلي وهو للفائدة العامه الا ان ابعاد المعلومات ( الشركة التي اعمل لها ) لاتقوم بتقديم اي ضمان من اي نوع لعمل البرنامج او دعم لعمل البرنامج ، الموضوع كما هو بدون اي ضمانات او اي التزامات على أبعاد المعلومات او علي انا ، علي حمد . قمت بكتابته وتغطيته من كل جوانبه للفائدة العامه ولكن ذلك لايعني اني ملزم بضمان عمل البرنامج او اقدم الدعم الفني له .
الشرح خاص لتوزيعات Fedora, CentOs, Redhat .
تقسيم الموضوع :
الموضوع تم تقسيمه كالتالي :
- تنصيب البرنامج
- اعداد البرنامج
- اعداد Monit للعمل عن طريق المتصفح
- تطبيق لاعدادات البرنامج لكي يعمل مع cPanel
أولا : تنصيب البرنامج :
متطلبات عمل البرنامج :
لكي يعمل البرنامج لابد من توفر البكجات التالية في السيرفر :
flex , openssl-devel, byacc
للتاكد من توفر هذه البكجات في السيرفر الخاص بك ، قم بتنفيذ الامر :
كود PHP:
rpm –qa | egrep 'flex|byacc|openssl-devel'
ان تم عرض ثلاث بكجات تحمل اسماء البكجات اعلاه ، والا تستطيع تنصيبهم عن طريق الامر :
كود PHP:
yum install flex byacc openssl-devel
التنصيب :انا افضل هذه الطريقة لسهولتها ولكن لا اعتقد انها الافضل لاني قمت بعمل بعض التعديلات على البرنامج ، قد لاتتوافق مع البكج التي ستقوم بانزالها . مثلا : تغيير مسار ملف الكونفيق وايضا اضافة الانكلود لمجلد monit.d . لذا ، انا لا انصح بتركيب البرنامج عن طريق ال Yum .
- عن طريق جلب البكج وتنصيبه :
قمت بالبحث في الانترنت عن بكجات لاخر اصدار من البرنامج 4.10 ولكن ماوجدته كان فقط للاصدار 4.9 لتوزيعات الردهات وفيدورا . لذلك قمت بعمل اربعة بكجات للاصدار 4.10 للتوزيعات التالية :
CentOs 5
Redhat Enterprise Linux Server 5
Fedora 9
Fedora 7
قم بتحميل البكج المناسب لك من الروابط التالية :
CentOs5 :
بكج البرنامج :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.Cent5.i386.rpm
ملف توقيع ال MD5 :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.Cent5.tar.gz.md5
Redhat Enterprise Linux Server 5:
بكج البرنامج :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.el5.i386.rpm
ملف توقيع ال MD5 :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.el5.tar.gz.md5
Fedora9 :
بكج البرنامج :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.fc9.i386.rpm
ملف توقيع ال MD5 :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.fc9.tar.gz.md5
Fedora 7 :
بكج البرنامج :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.fc7.i386.rpm
ملف توقيع ال MD5 :
كود PHP:
wget -c dciwww.com/monit/monit-4.10-1.DCI.fc7.tar.gz.md5
بعد ان تنتهي من تحميل البكج المناسب للسيرفر الخاص بك ، قم بالتاكد من توقيع ال MD5 عن طريق الامر :
كود PHP:
md5sum –c monit.*.md5
يفترض ان تكون النتيجة تحمل اسم البكج ملحوقة بكلمة OK .
الان ، قم بتنصيب البرنامج عن طريق الامر :
كود PHP:
rpm –Uhv monit.*.rpm
- عن طريق السورس كود للبرنامج :
ان لم تحبذ الطريقة اعلاه ، يمكنك تنصيب البرنامج يدويا كالتالي :
- انشاء مجلد لحفظ الملفات :
كود PHP:
mkdir /usr/local/src/monit
- الانتقال الى المجلد :
كود PHP:
cd /usr/local/src/monit
- جلب الملفات وهي ملفين ، الاول يحتوي على السورس كود الخاص بالبرنامج ، والثاني يحتوي على توقيع ال md5 :
كود PHP:
wget -c http://www.tildeslash.com/monit/dist/monit-4.10.1.tar.gz
كود PHP:
wget -c http://www.tildeslash.com/monit/dist/monit-4.10.1.tar.gz.md5
- قم بالتاكد من توقيع ال md5 عن طريق الامر :
كود PHP:
md5sum -c monit-4.10.1.tar.gz.md5
يفترض ان تكون النتيجة :
كود PHP:
monit-4.10.1.tar.gz: OK
- فك الضغط عن الملف :
كود PHP:
tar -xzvf monit-4.10.1.tar.gz
- قم بالانتقال الى المجلد ا لذي قمنا بفك الضغط عنه:
- قم بعمل تعديل بسيط فائدته تغيير اسم ملف الكونفيق الى monit.conf بدلا من monitrc وايضا تفعيل الانكلود للمجلد الذي سنقوم بانشائه لاحقا :
كود PHP:
perl -pi.orig -e 's|\bmonitrc\b|monit.conf|' monitor.h
كود PHP:
perl -pi.orig -e 's|^#\s+(include .*)$|$1|' monitrc
- الان ، نقوم باستدعاء سكربت الكونفيقيور كالتالي :
كود PHP:
./configure --with-ssl-lib-dir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc
- ان كان كل شيء على مايرام ، قم بتنفيذ الامرين :
كود PHP:
make && make install
- نقوم بانشاء ملف init الخاص بتشغيل البرنامج بوضع المحتوى التالي في ملف monit في داخل مجلد init.d :
كود PHP:
vi /etc/init.d/monit
نقوم بوضع المحتوي التالي فيه :
كود PHP:
#!/bin/bash
#
# Init file for Monit process monitor.
#
# Written by Dag Wieers <dag@wieers.com>.
#
# chkconfig: - 98 02
# description: Monit Process Monitor
#
# processname: monit
# config: /etc/monit.conf
# pidfile: /var/run/monit
source /etc/rc.d/init.d/functions
### Default variables
CONFIG="/etc/monit.conf"
[ -x /usr/bin/monit ] || exit 1
[ -r "$CONFIG" ] || exit 1
RETVAL=0
prog="monit"
desc="Process Monitor"
start() {
echo -n $"Starting $desc ($prog): "
daemon $prog -c "$CONFIG"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Shutting down $desc ($prog): "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $desc ($prog): "
monit -c "$CONFIG" reload
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
- نقوم بتغيير تصريح الملف :
كود PHP:
chmod 0755 /etc/init.d/monit
- نقل ملف الكونفيق :
كود PHP:
cp -v monitrc /etc/monit.conf
chmod 600 /etc/monit.conf
chown root:root /etc/monit.conf
- انشاء مجلد سنفحظ فيه الاعدادت وايضا مجلد سيكون هو الهوم دايروكتري للبرنامج :
كود PHP:
mkdir /etc/monit.d/
chmod 755 /etc/monit.d
mkdir /var/lib/monit
- اضافة اسم المستخدم الخاص بالبرنامج :
كود PHP:
/usr/sbin/useradd -M -r -d /var/lib/monit -s /bin/sh -c "monit daemon" monit
- اضافة البرنامج الى البرامج التي يتم تشغيلها اليا عند اعادة تشغيل السيرفر :
كود PHP:
chkconfig monit on
الان ، انتهى قسم التنصيب ، نبدا في قسم اعدادالبرنامج .
الاعداد :
قمت بتقسيم هذه المرحلة الى قسمين :
- اعداد البرنامج ككل .
- الاعدادات الاضافية.
اولا : اعداد ا لبرنامج ككل :
التعديلات كلها ستكون على ملف /etc/monit.conf وسيكون هو المكان الرئيسي لحفظ الاعدادات العامة للبرنامج Global Setting :
- تكرار عمل البرنامج ، بمعنى كل كم ثانية تريد ان يقوم البرنامج بالتشييك . في حالتنا اخترت 5 دقائق . اذن نقوم بكتابة :
- ملف اللوج الخاص بالبرنامج ، في هذا الملف سيتم حفظ سجلات البرنامج . اذن نقوم بكتابة :
كود PHP:
set logfile /var/log/monit.log
- وضع ضيغة معينة لرسالة الايميل التي تريد ان تصلك عند حاجة البرنامج لاخبارك بشيء ما . اذن نقوم بكتابة :
كود PHP:
set mail-format {
from: monit@hostName
subject: $SERVICE $EVENT at $DATE
message:
Action : $ACTION
Service : $SERVICE
Date : $DATE
Server : $HOST
Problem Description : $DESCRIPTION
Thank you,
}
- الايميل الخاص بمدير السيرفر او مدراء السيرفر . الى هذه الايميلات سيتم ارسال التنبيهات والتبليغات . اذن نقوم بكتابة :
كود PHP:
set alert you@domain.tld
set alert you2@domain.tld
- الميل سيرفر الذي سيقوم البرنامج باستخدامه لارسال التبليغات ، الافتراضي هو localhost ولكن احببت اضافته هنا للفائدة . اذن نقوم بكتابة :
كود PHP:
set mailserver localhost
- مجلد الاعدادات الاضافية ، قمت باضافة هذا المجلد لكي يكون هناك مجلد واحد لحفظ ملفات الاعدادات الثانوية ليكون فهم طريقة عمل البرنامج وترتيبه سهله وسلسه .
كود PHP:
include /etc/monit.d/*.conf
اذن الشكل النهائي لملف الكونفيق /etc/monit.conf حتى الان :
كود PHP:
# time
set daemon 300
# log file
set logfile /var/log/monit.log
# mail format
set mail-format {
from: monit@localhost
subject: $SERVICE $EVENT at $DATE
message:
Action : $ACTION
Service : $SERVICE
AT : $DATE
On : $HOST
Description : $DESCRIPTION
Thank you,
}
# admin email
set alert your@domain.tld
#mail server
set mailserver localhost
# include additional configuration files
include /etc/monit.d/*.conf
ثانيا : الاعدادات الاضافية :
ماأعنيه بالاعدادات الاضافية هي كل مايمكن عمله لمراقبة شيء معين لايدخل تحت الاعدادات الاساسية للبرنامج . لتسهيل عملية كتابة اي اعداد لمراقبة شيء معين تحتاج بشكل عام الى معرفة بعض الامور الاساسية :
- اسم عملية الخدمة التي تريد مراقبتها ، تستطيع معرفة ذلك عن طريق الامر :
- معرفة الامر الذي يقوم بتشغيل الخدمة وايضا ايقافا ، مثلا :
كود PHP:
/etc/init.d/httpd start
- الاي بي الذي تعمل عليه الخدمة او يمكن الاتصال بها من خلاله>
- البورت الذي تعمل عليه الخدمة
- مسار الملف الذي يحتوي على ID الخاص بالعملية .
- قد تحتاج الى معرفة اسم ال protocol او نوعه TCP or UDP .
- تحديد بعض الشروط التي يقوم البرنامج بالتحقق منها .
- مسار الملف او المجلد الذي تريد مراقبته
في هذا القسم ، ساقوم بوضع امثلة على طريقة سؤال وجواب وشرح ، الهدف من هذا القسم هو شرح طريقة كتابة الاعدادات الخاصه بالخدمات .. علما باني في اخر الموضوع قد قمت بعمل ملفات جاهزه يمكن استخدامها لسيرفرات السي بنل .. وانا باذن الله ساحاول تلبية اي طلب لاي خدمة او غرض ان شاء الله .
س1: هل بامكاني مراقبة الاباتشى مثلا وفي حالة توقفه عن العمل اقوم باعادة تشغيله وارسال ايميل الى مدير السيرفر لاخباره بذلك ؟
ج1: نعم ، الاعداد او القانون الخاص بذلك كالتالي :
كود PHP:
check process httpd with pidfile /etc/httpd/logs/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80
then restart
الشرح :
السطر الاول : قمنا بتحديد اسم العملية المراد مراقبتها وهي httpd وتحديد الملف الذي يحتوي على رقم العملية عند تشغيلها .
السطر الثاني : قمنا بتحديد الامر الذي يقوم بتشغيل الخدمه .
السطر الثالث : قمنا بتحديد الامر الذي يقوم بايقاف الخدمة .
السطر الرابع : الشرط : ان لم تستطع الاتصال بالاي بي عن طريق البورت 80 ( بورت الخدمة ) قم باعادة التشغيل .
س2: لو افترضنا ان الاباتشى توقف لمدة طويلة ، بالطبع لاتريد ان يقوم البرنامج بمتابعة اعادة تشغيل الاباتشى حتى وهو متوقف كليا لفتره طويلة ، هل من حل ؟
ج2: نعم ، تستطيع تحديد عدد المرات التي يقوم فيها البرنامج باعادة تشغيل الخدمة في فترة زمنية محدده . مثلا : المده التي يقوم البرنامج بالتحقق فيها هي 300 ثانية ( خمس دقائق ) ، فلو افترضنا اننا نريد ان يقوم البرنامج بالتوقف عن التحقق من الخدمة بعد ان يقوم بعمل 5 اعادات تشغيل لها في مدة زمنية قدرها 20 دقيقه . سنقوم بكتابة التالي في اخر الاعداد اعلاه :
كود PHP:
if 5 restarts within 4 cycles
then timeout
س3:هل بامكاني عمل بعض الشروط المتقدمه مثل :
لو كان عدد عمليات الخدمة في مثالنا ( الاباتشى ) اكثر من 300 ، قم باعادة التشغيل .
لو كان استهلاك الخدمة ( في مثالنا ، الاباتشى ) اكثر من 40% من ال cpu قم باعادة التشغيل .
لو كان استهلاك الخدمة ( في مثالنا ، الاباتشى ) اكثر من 500 ميجا من الميموري الخاص بالسيرفر قم باعادة التشغيل .
لو كان اللود الخاص بالسيرفر ( اللود الخاص بالعشر دقائق ) اعلى من 10 باعادة تشغيل الاباتشى .؟
ج3: نعم :
نقوم بكتابة الاعداد :
كود PHP:
if children > 300
then restart
if cpu > 40%
then restart
if totalmem > 500.0 MB
then restart
if loadavg(10min) greater than 10
then restart
الشرح :
السطر الاول : اذا كان عدد العمليات الجزئية ( children ) الذين يتبعون للعملية الام ( parent) اكثر من 300 ، قم باعادة التشغيل .
السطر لثالث : اذا كان استهلاك العملية من المعالج اكثر من 40 % من نسبة اشغال المعالج ، قم باعادة التشغيل .
السطر الخامس : اذا كان الكمية المستهلكة من الرام لهذه العمليات كلها ( الشلدرن والبارنت ) اكثر من 500 ميجا ، قم باعادة التشغيل .
السطر السابع : اذا كان الضغط على السيرفر لمدة 10 دقائق اكبر من 10 قم باعادة تشغيل الاباتشى .
س4 : قد تستهلك خدمة معينة اكثر من 40% مثلا من ال cpu في خمس دقائق ، اريد تغيير الوقت ، لكي يقوم البرنامج باعادة تشغيل الخدمة ( في مثالنا الاباتشى ) ان استمرت الخدمة في استهلاك 40% من المعالج لمدة 15 دقيقه ، هل استطيع القيام بذلك ؟
ج4 : نعم :
نقوم بكتابة الاعداد :
كود PHP:
if cpu > 40% for 2 cycles
then restart
الشرح : السطر الاول : يختبر نسبة الاستهلاك لمدة دورتين ( كل دورة 5 دقائق ، قمنا بتحديد ذلك في الاعدادات الرئيسيه ) قم باعادة التشغيل .
س5 : يوجد بعض الملفات المهمه في السيرفر التي لايمكن ان يتم تغيير تصريحها او تغيير اليوزر المالك لها او القروب او توقيع ال md5 ، ان تم تغيير اي من ذلك ، فهذا يعني خطر امني على السيرفر محتمل ، قد لايكون هناك خطر امني ، لان التوقيع سيتغير ان تم تحديث البكج المسؤول عن الملف .. لكن لفنرض اني اريد مراقبة ملف معين ( مثلا ، su ) ، هل من طريقة الى ذلك ؟
ج5 : نعم :
نقوم بكتابة الاعداد او القانون :
كود PHP:
check file su with path "/bin/su"
if failed checksum
then alert
الشرح :
السطر الاول : قمنا باخباره اننا نريد مراقبة ملف باسم su ومساره هو /bin/su .
السطر الثاني : الشرط ، ان اختلف توقيع ال md5 ، قم بالتبليغ .
س6: هل استطيع مراقبة حجم بارتشن معين في السيرفر بحيث ان وصل حجمه اعلى من 90% يتم ارسال تنبيه ؟
ج6: نعم :
كود PHP:
check device backup with path "/dev/sdb1"
if space usage > 90%
then alert
الشرح :
السطر الاول : اخبرنا باننا نريد مراقبة ديفايس باسم backup ومساره /dev/sdb1 .
السطر الثاني : الشرط : اذا كان حجم المستهلك فيه اكبر من 90 %
السطر الثالث : قم بالتبليغ .
س7: هل استطيع تنفيذ سكربت معين ( اتخاذ اكشن خارجي ليس من قبل البرنامج ) في حالة تحقق شرط معين ؟ مثلا : اريد ان يتم تنفيذ سكربت قمت بكتابته يقوم بجمع بعض البيانات في حالة كان اللود على السيرفر ( اللود الخاص ب 15 دقيقه ) اعلى من 10 ؟
ج7 : نعم :
كود PHP:
check system myhost.mydomain.tld
if loadavg (15min) > 10
then exec "/bin/myScript.sh"
س8 : عرفنا في الاعلى اني استطيع مراقبة حجم بارتشن معين ، لكن هل ستطيع مراقبة حجم ملف معين ؟
ج8 : نعم :
كود PHP:
check file squid.log with path "/var/log/squid.log"
if size > 500 MB
then alert
س9: هل استطيع مراقبة تصريح مجلد معين وملكيته ؟
ج9 : نعم :
كود PHP:
check directory etc with path "/etc"
if failed uid 0
then unmonitor
if failed gid 0
then unmonitor
if failed permission 0755
then unmonitor
اعتقد ان الفكره الان وصلت وبوضوح لكيفية كتابة القوانين او الاعدادت الخاصه ب monit .
س10 : املك سيرفر اخر واريد ان اقوم بمراقبته ، هل استطيع عمل ذلك ؟
ج10 : نعم ، ولكن ، انا انصح بشدة باستخدام برامج افضل مثل nagios او Zabbix ( على فكره ، ترى عمرو الجبالي " صديقي واخي في قسم الاستضافه في ابعاد المعلومات " يموت في البرنامج هذا ... Monit سيقوم بالواجب لعدد قليل من السيرفرات ولكن بامكانيات محدوده ...
نعود للجواب :
نفترض ان اسم السيرفر الخاص بك : 37.drdrm.com والاي بي الخاص به 123.456.78.90 وتريد مراقبة الخدمات التالية في ذلك السيرفر :
ping , apache, ssh , ftp , smtp, dns, pop
نقوم بكتابة القانون :
كود PHP:
check host 37.drm.com with address 123.456.78.90
if failed icmp type echo
with timeout 4 seconds
then alert
if failed port 21 type tcp protocol ftp
then alert
if failed port 80 type tcp protocol http
then alert
if failed port 25 type tcp protocol smtp
then alert
if failed port 22 type tcp protocol ssh
then alert
if failed port 53 type udp protocol dns
then alert
if failed port 110 type tcp protocol pop
then alert
س11: هل بالامكان مراقبة لود السيرفر ، كمية الرام المستخدمه وال CPU ؟
ج11: نعم :
كود PHP:
check system myhost.mydomain.tld
if loadavg (1min) > 10
then alert
if loadavg (5min) > 7 for 2 cycles
then alert
if loadavg (15min) > 5
then alert
if memory usage > 75% for 2 cycles
then alert
if cpu usage (user) > 70% for 2 cycles
then alert
if cpu usage (system) > 30% for 2 cycles
then alert
if cpu usage (wait) > 20% for 2 cycles
then alert
ثالثا : اعداد monit للعمل عن طريق المتصفح :
انا افضل وانصح بتفعيل monit عن طريق المتصفح لاسباب كثيره اولها سهولة مشاهدة ومراقبة حالة السيرفر\السيرفرات :
ان رغبنا في التفعيل نحتاج الى التعديل على ملف ال /etc/monit.conf :
باضافة التالي :
كود PHP:
set httpd port 2812
allow localhost
allow 123.123.123.12
allow admin:monit
الشرح :
السطر الاول : تفعيل التحكم ب monit عن طريق المتصفح ، بورت 2812
السطر الثاني والثالث : الاي بيات المسموح لها بالدخول .
السطر الرابع : اسم المستخدم وكلمة المرور ، بمعنى ان اسم المستخدم هنا هو admin وكلمة المرور monit .
الان ، تستطيع الدخول عن طريق اي بي السيرفر ، مثلا :
http://123.123.123.12:2812
رابعا : تطبيق الاعدادات المناسبة للعمل مع cPanel مع امثلة جاهزه :
- تشييك الخدمات :
الاباتشى :
كود PHP:
check process httpd with pidfile "/usr/local/apache/logs/httpd.pid"
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80 protocol http
then restart
if children > 300 for 2 cycles
then restart
if totalmem > 200.0 MB for 2 cycles
then restart
if cpu > 40% for 2 cycles
then restart
if 2 restarts within 5 cycles
then timeout
المايسقول :
كود PHP:
check process mysqld with pidfile "/path/to/$hostNAme.pid"
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306
then restart
if totalmem > 300.0 MB for 2 cycles
then restart
if cpu > 40% for 2 cycles
then restart
if 2 restarts within 5 cycles
then timeout
SSH :
كود PHP:
check process sshd with pidfile "/var/run/sshd.pid"
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed host 127.0.0.1 port 22 protocol ssh
then restart
if 2 restarts within 5 cycles
then timeout
Named :
كود PHP:
check process named with pidfile "/var/run/named/named.pid"
start program "/etc/init.d/named start"
stop program "/etc/init.d/named stop"
if failed host 127.0.0.1 port 53 protocol dns
then restart
if 2 restarts within 5 cycles
then timeout
Pure-FTPD :
كود PHP:
check process ftp with pidfile "/var/run/pure-ftpd.pid"
start program "/etc/init.d/pure-ftpd start"
stop program "/etc/init.d/pure-ftpd stop"
if failed host 127.0.0.1 port 21 protocol ftp
then restart
if 2 restarts within 5 cycles
then timeout
EXIM :
كود PHP:
check process exim with pidfile "/var/spool/exim/exim-daemon.pid"
start program "/etc/init.d/exim start"
stop program "/etc/init.d/exim stop"
if failed host 127.0.0.1 port 25 protocol smtp
then restart
if failed host 127.0.0.1 port 465 type TCPSSL protocol smtp
then restart
if 2 restarts within 5 cycles
then timeout
IMAP :
كود PHP:
check process imapd with pidfile "/var/run/imapd.pid"
start program "/usr/lib/courier-imap/libexec/imapd.rc start"
stop program "/usr/lib/courier-imap/libexec/imapd.rc stop"
if failed host 127.0.0.1 port 143 protocol imap
then restart
if 2 restarts within 5 cycles
then timeout
IMAP-SSL :
كود PHP:
check process imapd-ssl with pidfile "/var/run/imapd-ssl.pid"
start program "/usr/lib/courier-imap/libexec/imapd-ssl.rc start"
stop program "/usr/lib/courier-imap/libexec/imapd-ssl.rc stop"
if failed host 127.0.0.1 port 993 type TCPSSL protocol imap
then restart
if 2 restarts within 5 cycles
then timeout
POP3 :
كود PHP:
check process pop3d with pidfile "/var/run/pop3d.pid"
start program "/usr/lib/courier-imap/libexec/pop3d.rc start"
stop program "/usr/lib/courier-imap/libexec/pop3d.rc stop"
if failed host 127.0.0.1 port 110 protocol POP
then restart
if 2 restarts within 5 cycles
then timeout
POP3-SSL :
كود PHP:
check process pop3d-ssl with pidfile "/var/run/pop3d-ssl.pid"
start program "/usr/lib/courier-imap/libexec/pop3d-ssl.rc start"
stop program "/usr/lib/courier-imap/libexec/pop3d-ssl.rc stop"
if failed host 127.0.0.1 port 995 type TCPSSL protocol POP
then restart
if 2 restarts within 5 cycles
then timeout
- تشييك بعض الملفات والمجلدات المهمه
كود PHP:
check directory sbin with path "/sbin"
if failed permission 755
then unmonitor
if failed uid 0
then unmonitor
if failed gid 0
then unmonitor
check directory bin with path "/bin"
if failed permission 755
then unmonitor
if failed uid 0
then unmonitor
if failed gid 0
then unmonitor
check directory root with path "/root"
if failed permission 750
then unmonitor
if failed uid 0
then unmonitor
if failed gid 0
then unmonitor
check file my.cnf with path "/root/.my.cnf"
if failed permission 600
then unmonitor
if failed uid 0
then unmonitor
if failed gid 0
then unmonitor
check file shadow with path "/etc/shadow"
if failed permission 600
then unmonitor
if failed uid 0
then unmonitor
if failed gid 0
then unmonitor
ملاحظات :
عند قيامك بتفعيل monit عن طريق المتصفح ، تستطيع تنفيذ بعض الاوامر المهمه عن طريق الكوماند لاين مثل :
monit status
monit summary
عند قيامك بالتعديل ، لاتقم باعادة التشغيل ، قم بعمل reload :
monit reload
ان رغبت التاكد من ان ملف الاعدادات لديك سليم قم بتنفيذ الامر :
monit -t
سيقوم باخبارك ان كان ملف الاعداد لديك سليم .
الامثلة اعلاه خاصه بسيرفرات السي بنل ، قم بوضعها في داخل ملفات في المجلد :
/etc/monit.d ويكون اسمها مثلا : apache.conf ، sshd.conf ، لاننا قمنا في ملف الاعداد العام بعمل انكلود للملفات التي تنتهي بـ .conf .
المصادر :
موقع الشركة الرسمي :
http://www.tildeslash.com/monit/
قوقل :
http://www.google.com
صفحة المانيول :
man monit
خاتمة :
الموضوع يحمل اكثر مما ذكرت ، تغطية الموضوع بتفاصيل تقنية متقدمه يعتمد على نقاش الاعضاء وتبادلهم للخبرات .
طلب :
الله وحده يعلم قد ايش انا اتألم في اليوم والليله ... وقد ايش اخذ الموضوع مني كجهد .. ان اعجبك الموضوع واحسست باني قد افدتك بشيء ما ، ارجو ان تردد لي :
اللهم انه عبدك وبه املك فاجعل الشفاء في جسده واليقين في قلبه والنور في بصره والشكر في صدره .
للجميع التحية ،
علي حمد ،
أبعاد المعلومات ،
قسم الاستضافة .