mount /dev/brain || tail -f /var/log/thoughts >> /home/DeNn/blog

Monit: сделим за демонами.

Monit — это бесплатное приложение с открытым исходным кодом, обеспечивающее комплексный мониторинг UNIX-like систем.
С его помощью мы можем мониторить:

  • Состояние серверов (доступность, потребление ресурсов).
  • Мониторинг демонов.
  • Мониторинг сетевых сервисов (возможность подключения и корректность ответа).
  • Выполнение встроенных (запуск\остановка\перезапуск) или собственных (скрипты).
  • Уведомление на email или в централизованный web-интерфейс M\Monit.
  • Поддерживаются все unix-like системы: ОС GNU\Linux (есть в большинстве пакетных систем), FreeBSD (есть в портах), OpenBSD, Solaris, MacOS X.

    Установка и настройка займет не более 15 — 20 мин.
    И так приступим:

    cd /usr/ports/sysutils/monit
    make install clean

    Переименовываем конфиг:

    mv /usr/local/etc/monitrc.sample /usr/local/etc/monitrc

    и расскоментируем лишь одну строчку include /usr/local/etc/monit.d/*
    Теперь все файлы конфигурации из /usr/local/etc/monit.d/ будут автоматически подхватыватся monit-ом.
    Для удобства разобьем конфигурационный файл на main.conf (общие настройки) и с названием сервиса (к примеру monit-nginx.conf, monit-exim.conf и т.д.)

    main.conf это минимальный конфиг

    set daemon  120 # Частота проверки сервисов.
    set logfile syslog facility log_daemon # IP\hostname почтового сервера, через который пойдут уведомления.
    set mailserver localhost,
    set eventqueue # Разрешить очередь уведомлений.
            basedir /var/log/monit # путь к каталогу, где будут храниться уведомления.
            slots 100 # Максимальное количество уведомлений в очереди.
    set mail-format { from: monit@youserver.com } # От какого имени рассылать уведомления.
    set alert admin@youserver.com #куда сваливать все уведомления
    #set alert support@youserver.com { timeout } # Ящик для критических уведомлений (падение сервера\демонов).
    

    monit-apache.conf

    check process apache with pidfile /var/run/httpd.pid # Название и PID
    start program = "/usr/local/etc/rc.d/apache22 start" # Команда запуска.
    stop program  = "/usr/local/etc/rc.d/apache22 stop" # Команда остановки.
            if cpu > 60% for 2 cycles then alert # Если в течение двух циклов потребление CPU > 60% - уведомить.
            if cpu > 80% for 5 cycles then restart # А если за 5 циклов больше 80% - перезапустить.
    

    monit-ssh.conf

    check process sshd with pidfile /var/run/sshd.pid
    start program = "/etc/rc.d/sshd start"
    stop program  = "/etc/rc.d/sshd stop"
    

    Это минимум, что можно описать, по этой логике пишется такой блок под каждый демон, который нужно мониторить. Полее подробно можно почитать в он-лайн доке
    Разрешаем запуск monit’a в rc.conf и запускаем:

    echo 'monit_enable="YES"' >> /etc/rc.conf
    /usr/local/etc/rc.d/monit start

    Теперь выключаем апач и наблюдаем за логом:

    /usr/local/etc/rc.d/apache22 stop
    tail -f /var/log/messages
    Dec  4 18:15:21 ua monit[696]: 'apache' process is not running

    После чего на почту приходит одно письмо с тем, что Apache не запущен и еще одно с уведомлением, что Apache был запущен

    Related posts:

    1. Критическая локальная уязвимость во FreeBSD 7.1, 7.2, 8.0

    This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

    1 Comment to Monit: сделим за демонами.

    1. 8 декабря 2009 at 16:00 | Permalink

      О да, эта система меня периодически выручает сильно.

    Leave a Reply

    You must be logged in to post a comment.