2008-11-21

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

Ссылки: