Настройка Monit выполняется в конфигурационном файле пакета. Присутствуют стандартные метрики с примерами. Также можно добавить дополнительные проверки.
Monit предназначен для мониторинга состояния системы и отдельных ее компонентов. В отличие от Nagios и Zabbix Monit отличается простотой конфигурации.
Он применяется для мониторинга того сервера, на котором установлен. Для распространенных систем стоит использовать другие решения.
Monit присутствует в стандартных репозиториях (Debian/Ubuntu):
apt-get install monit
Настройка Monit на сервере
Основной конфигурационный файл пакета /etc/monit/monitrc
Сделаем его копию для того чтобы всегда можно было вернуться к документации — конфигурационный файл содержит комментарии и примеры конфигурации
cp /etc/monit/monitrc /etc/monit/monitrc_orig
Откроем оригинальный файл
vi /etc/monit/monitrc
Для удобства удалим из него все закомментированные строки
:g/^#/d
Настройка отправки писем администратору Monit
В конфигурационном файле определяется почтовый сервер, который будет использоваться для отправки сообщений о недоступности сервисов и других произошедших событиях
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: alert@$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: alert@$example.com } set alert info@$example.com # receive all alerts set alert info@$example.com not on { instance, action } include /etc/monit/conf.d/*
Задается формат письма, который будет использоваться для отправки писем, также указывается ящик отправителя и ящик на который будут отправляться письма.
За счет директивы set alert info@$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 означает, что письмо отправляется на контактный адрес администратора, в данном случае это info@$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 поддерживает, но не очень хорошо масштабируется. Поэтому он не находит применения в больших системах.
Уведомление, отправляемое по почте администратору является самой востребованной функцией. Для наиболее ответственных серверов письма можно отправлять на отдельные ящики для которых настроено дублирование в виде СМС сообщений.
Администратору будет получать СМС на мобильный телефон каждый раз когда на сервере произошла та или иная непредвиденная ситуация требующая его участия.
Для мониторинга крупных проектов чаще используется Zabbix, он предлагает существенно больше функционала.