Настройка Monit выполняется в конфигурационном файле пакета. Присутствуют стандартные метрики с примерами. Также можно добавить дополнительные проверки.
Monit предназначен для мониторинга состояния системы и отдельных ее компонентов. В отличие от Nagios и Zabbix Monit отличается простотой конфигурации.
Он применяется для мониторинга того сервера, на котором установлен. Для распространенных систем стоит использовать другие решения.
Monit присутствует в стандартных репозиториях (Debian/Ubuntu):
apt-get install monit
Настройка Monit на сервере
Основной конфигурационный файл пакета /etc/monit/monitrc
Сделаем его копию для того чтобы всегда можно было вернуться к документации — конфигурационный файл содержит комментарии и примеры конфигурации
cp /etc/monit/monitrc /etc/monit/monitrc_orig
Откроем оригинальный файл
mcedit /etc/monit/monitrc
Для удобства удалим из него все закомментированные строки
:g/^#/d
Настройка отправки писем администратору
В конфигурационном файле определяется почтовый сервер, который будет использоваться для отправки сообщений о недоступности сервисов и других произошедших событиях
set daemon 120 # check services at 2-minute intervals set logfile /var/log/monit.log set idfile /var/lib/monit/id set statefile /var/lib/monit/state set mailserver mail.example.com, # primary mailserver set eventqueue basedir /var/lib/monit/events # set the base directory where events will be stored slots 100 # optionally limit the queue size set mail-format { from: [email protected]$example.com subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Your faithful employee, Monit } set mail-format { from: [email protected]$example.com } set alert [email protected]$example.com # receive all alerts set alert [email protected]$example.com not on { instance, action } include /etc/monit/conf.d/*
Задается формат письма, который будет использоваться для отправки писем, также указывается ящик отправителя и ящик на который будут отправляться письма.
За счет директивы set alert [email protected]$example.com not on { instance, action } устанавливается отсутствие необходимости отправлять на почту сообщения о текущих событиях. Ценности они в большинстве случаев не представляют.
Последней директивой подключаются все файлы в каталоге conf.d
Мониторинг сервисов
В /etc/monit/monitrc.d находятся стандартные конфигурационные файлы для самых распространенных сервисов.
Чтобы включить один из сервисов на мониторинг достаточно скопировать конфигурационный файл и перезапустить сервис.
cp /etc/monit/monitrc.d/mysql /etc/monit/conf.d/mysql
/etc/init.d/monit restart
Теперь monit наблюдает за сервером баз данных. Конфигурация всех файлов типовая
less /etc/monit/conf.d/mysql
check process mysqld with pidfile /var/run/mysqld/mysqld.pid group database group mysql start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then alert if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then alert if 5 restarts with 5 cycles then timeout depend mysql_bin depend mysql_rc check file mysql_bin with path /usr/sbin/mysqld group mysql include /etc/monit/templates/rootbin check file mysql_rc with path /etc/init.d/mysql group mysql include /etc/monit/templates/rootbin
Для данной службы Monit слушает порт 3306, если 3 из 4 тестовых пакета не получили ответа — посылается сигнал alert, такое же правило действует для сокета.
alert означает, что письмо отправляется на контактный адрес администратора, в данном случае это [email protected]$example.com. Сервис перезапускается.
Настройка Monit может задаваться довольно гибко, есть возможность останавливать, запускать и перезапускать сервисы, контролировать одновременно несколько параметров работы той или иной службы.
Monit может проверять права доступа на файл и владельца (оказывается полезно для системных разделов, которые при неполадках с железом могут переводиться системой в read-only).
Также с помощью пакета возможно отслеживать состояние сервера в динамике — контролировать рост нагрузки на CPU или диск, при необходимости отмонтировать разделы.
Кастомизация Monit
Можно создавать и свои конфигурационные файлы в которые прописывать настройки.
Например, так может выглядеть конфигурационный файл, контролирующий основные параметры системы такие как LA и потребление CPU:
check system 123.123.123.123 if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if memory usage > 75% then alert if cpu usage (user) > 90% then alert if cpu usage (system) > 40% then alert if cpu usage (wait) > 20% then alert if space usage > 90% then alert
В качестве хоста можно указывать IP адрес или доменное имя (example.com). Хост может быть и удаленным.
Мониторинг удаленной машины Monit поддерживает, но не очень хорошо масштабируется. Поэтому он не находит применения в больших системах.
Уведомление, отправляемое по почте администратору является самой востребованной функцией. Для наиболее ответственных серверов письма можно отправлять на отдельные ящики для которых настроено дублирование в виде СМС сообщений.
Администратору будет получать СМС на мобильный телефон каждый раз когда на сервере произошла та или иная непредвиденная ситуация требующая его участия.