Настройка Monit в Linux


Настройка 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 находятся стандартные конфигурационные файлы для самых распространенных сервисов.


Система мониторинга на сервере, Monit в Linux


Чтобы включить один из сервисов на мониторинг достаточно скопировать конфигурационный файл и перезапустить сервис.



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, он предлагает существенно больше функционала.

Сказать спасибо