Установка и настройка Monit в Debian Jessie
Dec 24, 2015 15:57 · 472 words · 3 minute read
Установка и настройка Monit в ОС Debian Jessie мало отличается от установки Monit в седьмой версии Debian (Wheezy), однако есть пару моментов, на которые стоит обратить внимание. Давайте разберемся!
Установка Monit с помощью менеджера пакетов:
sudo aptitude install monit
После успешной установки открываем конфигурационный файл /etc/monit/monitrc
и вносим следующие правки в секции Global
:
...
set daemon 10 #проверять сервисы с интервалом 10 секунд
...
...
set logfile /var/log/monit.log #писать логи в отдельный файл
...
...
set mailserver localhost #почтовый сервер для отправки алертов
...
...
set mail-format { from: monit@$HOST } #меняем формат получаемых алертов
set mail-format { Subject: monit alert -- $SERVICE - $EVENT -> $ACTION }
...
...
set alert alert@mydomain.com #ящик для получения алертов
...
...
set httpd port 2812 and #открываем доступ к web-интерфейсу
use address IP-ADDRESS #с адреса IP-ADDRESS
allow USER:PASSWORD #и для пользователя USER с паролем PASSWORD
...
В этом же конфигурационном файле /etc/monit/monitrc
можно описывать и сервисы, которые необходимо мониторить, но я предпочитаю помещать такие настройки в каталог /etc/monit/conf.d/
. Рассмотрим конкретный пример — мониторинг web-сервера apache
.
Переходим в каталог /etc/monit/conf.d/
:
cd /etc/monit/conf.d/
Создаем файл apache:
touch apache
И, следуя официальной документации, приводим его к следующему виду:
check process apache with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if totalmem > 1500.0 MB for 5 cycles then alert
if totalmem > 2000.0 MB for 5 cycles then restart
if children > 30 for 6 cycles then restart
Примечание. Не забываем убедиться, что .pid
-файл действительно находится в том месте, которое указано после параметра pidfile
.
Выполняем:
monit reload
И ожидаем, что все будет работать — ведь в Debian Wheezy это работало! Но когда требуется выполнить перезапуск web-сервера (в нашем примере — когда основной и дочерние процессы используют более 2 ГБ памяти либо когда дочерних процессов больше 30), то возникают проблемы — процесс переходит в состояние Active: active (exited)
вместо Active: active (running)
.
Примечание. Вот что говорит об этом Google: «State active (exited) means that systemd has successfully run the commands but that it does not know there is a daemon to monitor.»
Когда процесс находится в Active: active (exited)
— сайты работают, но остальные мониторинги (например, Zabbix) тревожно вопят, что web-сервер apache
не запущен — это как минимум раздражает. Выяснилось, что все дело в новой системе инициализации (systemd-sysv
) по умолчанию установленной в Debian Jessie.
Решается данная проблема довольно просто — приводим конфиг /etc/monit/conf.d/apache
к следующему виду:
check process apache with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if totalmem > 1500.0 MB for 5 cycles then alert
if totalmem > 2000.0 MB for 5 cycles then exec "/usr/local/sbin/apache2restart"
if children > 30 for 6 cycles then exec "/usr/local/sbin/apache2restart"
Создаем исполняемый файл /usr/local/sbin/apache2restart
со следующим содержанием:
#!/bin/bash
`systemctl restart apache2.service`
Не забываем выполнить:
monit reload
После этого web-сервер apache
корректно перезапускается и находится в «правильном» состоянии Active: active (running)
.