در دسترس بودن سروس ها و یا به اصطلاح uptime بالای سرویس ها/سرورها یکی از دغدغه های مدیران سیستم می باشد.یک راه حل جهت مانیتورینگ و کنترل سرویس ها استفاده از ابزار بسیار سودمند Monit می باشد.Monit ابزاری open source و کم حجم می باشد که به وسیله ی آن می توان سرویس های گوناگونی را مانیتور کرد.
در ادامه روش نصب،پیکربندی و اضافه کردن چند سرویس توضیح داده خواهد شد.
گام 0 :
نصب Monit بر روی Fedora/CentOS/RHEL :
برای نصب بر روی فدورا این دستور را اجرا کنید :
#yum install monit
برای نصب بر روی CentOS ابتدا مخازن EPEL را به سیستم اضافه کنید و سپس دستور بالا را اجرا کنید.
نصب Monit بر روی Ubuntu/Debian :
برای نصب کافیست تا این دستور را اجرا نمایید :
#apt-get install monit
گام 1 : پیکربندی Monit
فایل تنظیمات Monit در توزیع های Fedora/CentOS/RHEL در مسیر زیر قرار دارد :
/etc/monitrc
در توزیع های ubunt/debian در مسیر زیر می باشد :
/etc/monit/monitrc
اکنون برای پیکربندی Monit کافیست تا فایل تنظیمات Monit را باز کنید.به عنوان نمونه در توزیع هایی که بر پایه فدورا هستند این دستور را اجرا نمایید:
#nano /etc/monitrc
و در توزیع های Ubuntu/Debian این دستور را وارد نمایید :
#nano /etc/monit/monitrc
بعد از باز کردن فایل تنظیمات Monit می توان تنظیمات مورد نظر (تنظیمات عمومی) را انجام داد.به عنوان نمونه برای فعال کردن پنل تحت وب Monit کافیست تا این خطوط را به انتهای فایل اضافه کنید :
set httpd port 2812
use address 192.168.10.72 # only accept connection from localhost
allow 0.0.0.0/0.0.0.0 # allow localhost to connect to the server and
allow admin:hos7ein # require user ‘admin’ with password ‘monit’
توضیحات :
– خط اول که پورت مربوط به پنل وب Monit می باشد که اگر از Firewall استفاده می کنید،حتما این پورت را باید باز کنید.
– خط دوم باید IP سرور را وارد کنید.
ـ خط سوم رنج IP هایی که اجازه دسترسی به پنل وب Monit را خواهند داشت، وارد کنید.
– خط چهارم نام کابری و پسورد جهت ورود به پنل وب Monit را وارد کنید.
اگه قصد دارید تا هر رخدادی را از طریق ایمیل به شما اطلاع دهد این خطوط را نیز به انتهای فایل اضافه کنید :
set mailserver localhost
set mail-format { from: monit@MyHostname }
set alert root@localhost
set alert hos7ein@MyDomain.com
نکته اینکه به جای MyHostname نام Host سیستم خود را وارد کنید و به جای hos7ein@MyDoamain.com ایمیل مورد نظر خود را وارد کنید.اگر قصد دارید تا چند اکانت ایمیل وارد کنید کافیست تا همان خط مربوط به set alert را به همراه ایمیل خود را چند بار بنویسید.
گام 2 : اضافه کردن سرویس ها جهت مانیتورینگ
در این قسمت قصد داریم تا چند سرویس را به Monit جهت مانیتورینگ معرفی کنیم.اگر به انتهای فایل در توزیع های Fedora/CentOS/RHEL توجه کنید خط زیر را نیز مشاهده می کنید :
include /etc/monit.d/*
در توزیع های Ubuntu/Debian این خط را خواهید دید :
include /etc/monit/conf.d/*
در واقع مسیری می باشد که می توانید فایل های تنظیمات و مانیتور کردن سرویس مورد نظر خود را در آن قرار دهید.بنابراین برای اضافه کردن سرویس های مورد نظر خود کافیست بر اساس توزیع خود در مسیر گفته شده فایلی با نام سرویس خود ایجاد کنید و تنظیمات را درون آن وارد نمایید.
اضافه کردن سرویس آپاچی (httpd) برای توزیع های Fedora/CentOS/RHEL :
check process httpd with pidfile /var/run/httpd.pid
group apache
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 5 restarts within 5 cycles then timeout
اضافه کردن سرویس Apache2 برای توزیع های Ubuntu/Debian :
check process apache with pidfile /run/apache2.pid
start program = “/etc/init.d/apache2 start” with timeout 60 seconds
stop program = “/etc/init.d/apache2 stop”
اضافه کردن سرویس Ngnix :
check process nginx with pidfile /var/run/nginx.pid
start program = “/etc/init.d/nginx start”
stop program = “/etc/init.d/nginx stop”
اضافه کردن سرویس MySQL :
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = “/etc/init.d/mysqld start”
stop program = “/etc/init.d/mysqld stop”
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
اضافه کردن سرویس SSHD :
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 5 restarts within 5 cycles then timeout
اضافه کردن سرویس Asterisk :
# Asterisk Monitoring rule
check process asterisk with pidfile /var/run/asterisk/asterisk.pid
start program = “/etc/init.d/asterisk start” with timeout 60 seconds
stop program = “/etc/init.d/asterisk stop”
# Check uptime via Asterisk Manager Interface (AMI) port 5038
if failed host 127.0.0.1 port 5038 then restart
if 5 restarts within 5 cycles then timeout
اکنون پس از اضافه کردن سرویس ها و پیکربندی Monit جهت بررسی تنظیمات و پیکربندی می توانید از این دستور استفاده کنید :
#monit -t
سپس برای start کردن سرویس Monit بر اساس توزیع خود از یکی از دستور های پایین استفاده کنید :
#sytemctl start monit
#service monit start
جهت restart کردن سرویس Monit بر اساس توزیع خود از یکی از دستورهای پایین استفاده کنید :
#sytemctl restart monit
#service monit restart
جهت stop کردن سرویس Monit بر اساس توزیع خود از یکی از دستورهای پایین استفاده کنید :
#sytemctl stop monit
#service monit restart
برای فعال کردن سرویس Monit هنگام Boot شدن سیستم در توزیع های Fedora/CentOS/RHEL از یکی از دستورهای پایین استفاده کنید :
#systemctl enable monit
#chkconfig monit on
برای غیر فعال کردن سرویس Monit هنگام Boot شدن سیستم در توزیع های Fedora/CentOS/RHEL از یکی از دستورهای پایین استفاده کنید :
# systemctl disable monit
#chkconfig monit off
جهت بررسی وضعیت Monit می توانید از این دستور استفاده کنید :
#monit status
جهت دیدن خلاصه وضعیت سرویس های تحت کنترل از این دستور استفاده کنید :
# monit summary
جهت دیدن log file سرویس Monit از این دستور استفاده کنید :
# tail -f /var/log/monit.log
اگر روی سیستم از دیوار آتش استفاده می کنید نیاز هست تا پورت که برای پنل وب Monit وارد کردید را در فایروال خود باز کنید.
برای باز کردن پورت در Firewalld از این دستورها استفاده کنید :
#firewall-cmd
--
zone=public--
add-port=2812/tcp--
permanent
#firewall-cmd
--
reload
برای باز کردن پورت در IPtables از این دستورها استفاده کنید :
#iptables -A INPUT -p tcp --
dport 2812 -j ACCEPT
#service iptables save
#service iptables restart
اکنون برای دیدن پنل وب Monit کافیست تا IP یا Domain سیستم را به همراه پورت تعیین شده (2812) را در مرورگر وب خود وارد نمایید.در پایین تصاویری از پنل تحت وب Monit را مشاهده می کنید :