Мой сервер иногда подвисает и почему-то из коробки не перезагружается. Хотя под рукой есть другой сервер, изначально работающий на ISPManager, вообще не виснет. А иногда при падении и сам перезагружается. С другой стороны, был другой сервер на ISPManager, который меня вообще откровенно достал и я от него ушел (но там скорее аппаратная проблема какая-то была). Так вот, для таких случаев придумали полезную вещь — Monit, скрипт, который занимается мониторингом сервера и при появлении проблем перезагружает службы (services), а в крайнем случае — и весь сервер. Сейчас вместе с вами попробуем его установить.
На всякий случай выпишу характеристики своего сервера, потому что, как я заметил, в разных постах в интернете написаны разные команды и разные способы настройки серверов. И не все они срабатывали у меня. Поэтому свой метод гарантировать не смогу, но наверняка, при аналогичных характеристиках сервера, по моему методу у вас тоже все получится ;-)
Конфигурация моего сервера:
2-ядерный процессор 2 x 2,7 ГГц
Объем оперативной памяти: 1 Гб
5 Гб SSD
ОС: CentOS 6
Панель управления: VestaCP
PHP 5.6.29
Apache+NGINX
Акселераторы: ZendOPcache+Memcached
И так, приступаем к собственно установке. Вводим данные команды через SSH под root (то есть, после авторизации на сервере с логином root):
Проверяем наличие EPEL в репозитории (у меня уже был):
rpm -Uvh http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
Устанавливаем скрипт Monit
yum -y install monit
Далее. Ставим его в автозагрузку:
chkconfig —levels 235 monit on
Затем редактируем файл настроек monit.conf на сервере в папке /etc/ (я работаю с файловой системой через WinSCP).
Прямо перед последней строчкой «include /etc/monit.d/*» добавляем следующий код:
set logfile /var/log/monit.log
set mailserver localhost
set mail-format {
from: ПОЧТА-СЕРВЕРА@ДОМЕН.COM
subject: $SERVICE $EVENT at $DATE
message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}
set alert ПОЧТА-ДЛЯ-УВЕДОМЛЕНИЙ
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = «/etc/init.d/httpd start»
stop program = «/etc/init.d/httpd stop»
if totalcpu > 90% for 2 cycles then alert
if totalcpu > 90% for 5 cycles then restart
if loadavg(5min) greater than 3 then alert
if loadavg(5min) greater than 5 then restart
if failed host «site.ru» port 80 protocol http then restart
if 2 restarts within 2 cycles then timeout
check process nginx with pidfile /var/run/nginx.pid
start program = «/etc/init.d/nginx start»
stop program = «/etc/init.d/nginx stop»
if children > 10 then restart
if totalcpu > 90% for 2 cycles then alert
if totalcpu > 90% for 5 cycles then restart
if loadavg(5min) greater than 3 then alert
if loadavg(5min) greater than 5 then restart
if failed host «site.ru» port 80 protocol http and request «/robots.txt» then restart
if 2 restarts within 2 cycles then timeout
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = «/etc/init.d/mysqld start»
stop program = «/etc/init.d/mysqld stop»
if failed host «site.ru» port 3306 protocol mysql then restart
if failed unixsocket /var/run/mysqld/mysqld.sock then restart
if 2 restarts within 2 cycles then timeout
service monit start