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

 

Откроем оригинальный файл

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: 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 поддерживает, но не очень хорошо масштабируется. Поэтому он не находит применения в больших системах.

 

Уведомление, отправляемое по почте администратору является самой востребованной функцией. Для наиболее ответственных серверов письма можно отправлять на отдельные ящики для которых настроено дублирование в виде СМС сообщений.

Администратору будет получать СМС на мобильный телефон каждый раз когда на сервере произошла та или иная непредвиденная ситуация требующая его участия.