Мониторинг состояния VDS. Перезагрузка при падении. CentOS 6

Мой сервер иногда подвисает и почему-то из коробки не перезагружается. Хотя под рукой есть другой сервер, изначально работающий на 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 ПОЧТА-ДЛЯ-УВЕДОМЛЕНИЙ
не забыв поменять на свои ПОЧТА-СЕРВЕРА@ДОМЕН.COM и ПОЧТА-ДЛЯ-УВЕДОМЛЕНИЙ. Проверьте, чтобы строчка «set daemon 60» уже находилась чуть выше.
Теперь открываем файл server (так и есть, без расширений типа .txt, просто server) в папке /etc/monit.d/ (у меня файла не было, я создавал).  Добавляем в него код:
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
 В коде выше везде переписываем кавычки (иначе код может не сработать), проверяем на месте ли указанные pid-файлы (если нет, указываем нужные пути) и меняем «site.ru» на свой домен либо IP (в формате 127.0.0.1).
И последней командой запускаем Monit 
service monit start
После этого все должно работать. Если появилась ошибка запуска, в первую очередь проверяем код в файле server.
Поделитесь этой статьей с друзьями:



Присоединяйтесь к нам Вконтакте, чтобы получить более оперативные ответы на свои вопросы, ПЕРВЫМИ читать новые статьи и обмениваться информацией с другими участниками группы!





Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Навигация