Monit: простое средство мониторинга

Monit - достаточно простое, но одновременно удобное, достаточно мощное и надежное средство для мониторинга ваших серверов.
Monit умеет мониторить:

  • процессы (наличие, количество потребляемых ресурсов)
  • файлы, директории и файловые системы на изменения (дата создания/изменения, изменения размера и контрольной суммы)
  • сетевые хосты (пинг и коннект на определенный порт по определенному протоколу)
При возникновении проблемы monit отправляет e-mail (шаблоны можно модифицировать) и может перезапустить сервис.
В monit встроен простенький веб-сервер, который позволяет посмотреть состояние объектов мониторинга, включить/выключить определенный объект.
Monit умеет перезапускать сервисы если они падают или не выполняется какое-то условие.

Monit построен с идеей того что система мониторинга должна быть максимально надежной и простой. И это действительно выполняется: на monit можно положиться.

Конечно из-за своей простоты monit не обладает тем количеством возможностей, которыми обладают Enterptise-системы мониторинга. Однако существует дополнение к monit под названием M/Monit, которое позволяет управлять несколькими серверами с monit из одного места. К сожалению, M/Monit распространяется под коммерческой лицензией и за деньги.

Посмотрим что он умеет:

Установка проста:

emerge -av monit

После этого вам необходимо отредактировать файл /etc/monitrc. Он достаточно хорошо документирован и там много примеров, вот еще несколько:

/etc/monitrc

set daemon  120 # проверять объекты каждые 2 минуты
set logfile syslog facility log_daemon

set mailserver localhost # тут для большей надежности можно указать несколько smtp-серверов
set eventqueue # задаем очередь сообщений - чтобы monit мог отправить алерт позже, если в данный момент почтовый сервер не доступен
basedir /var/monit
slots 10
set mail-format { from: monit@ myserver.com }
set alert admin1 admin2 # список получателей алертов

# конфигурация встроенного http сервера
set httpd port 2812 and
use address 0.0.0.0
allow 1.2.3.4
allow admin:password

include /etc/monit.d/*

/etc/monit.d/system
# проверка общих ресурсов сервера
check system myserver
if loadavg (1min) > 30 then alert
if loadavg (5min) > 20 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert

# проверка apache2:
check process apache with pidfile /var/run/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if totalmem > 500.0 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 30 for 8 cycles then stop
if failed host myserver.com port 80 protocol http
and request "/index.html"
then restart
if failed port 443 type tcpssl protocol http
with timeout 15 seconds
then restart
if 3 restarts within 5 cycles then timeout


# проверка свободного места на фс
check device data with path /dev/sdb1
start program = "/bin/mount /data"
stop program = "/bin/umount /data"
if space usage > 80% for 5 times within 15 cycles then alert
if inode usage > 80% then alert
group server

Ссылки:

Комментарии