Поиск по сайту:

Начало работы с Monit для мониторинга сервера


Monit — это программа мониторинга сервера, которая может проверять процессы, запущенные в вашей системе, чтобы убедиться, что они всегда подключены к сети и работают с разумными ограничениями ЦП и памяти. Он также поставляется с веб-интерфейсом для мониторинга вашей системы.

Что делает Монит?

По сути, Monit будет проверять данный процесс каждые две минуты (по умолчанию), чтобы узнать, как он работает. Он ведет журнал использования ресурсов и может принять меры в случае возникновения ошибки. Это включает в себя повторный запуск аварийных процессов и перезапуск процессов, использующих слишком много ресурсов.

Monit полностью определяет свое поведение через конфигурационные файлы. Вот конфигурация по умолчанию для MySQL в качестве примера:

check process mysql
  with pidfile /var/run/mysqld/mysqld.pid
  start program = "/usr/sbin/service mysql start" with timeout 60 seconds
  stop program = "/usr/sbin/service mysql stop" with timeout 60 seconds
  if totalmem > 400 MB for 5 cycles then alert
  if totalmem > 600 MB for 5 cycles then restart
  if cpu > 50% for 5 cycles then alert
  if cpu > 90% for 5 cycles then restart
  if 3 restarts within 5 cycles then timeout

Monit настроен для мониторинга запущенного процесса MySQL. Если он выйдет из строя, он может запустить его снова, используя конфигурацию start program = . Если MySQL начнет использовать слишком много ресурсов, она может быть перезапущена автоматически, хотя сначала вы получите предупреждение по электронной почте.

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

check system wp01
  if loadavg(5min) > 1 then alert
  if memory usage > 90% for 5 cycles then alert
  if cpu usage (user) > 90% for 5 cycles then alert

Все, что мониторит Monit, доступно для просмотра через веб-интерфейс, который по умолчанию работает через порт 2812.

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

Установка и настройка Monit

Установите Monit из менеджера пакетов вашего дистрибутива; для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt-get install monit

Monit должен поставляться с конфигурацией по умолчанию, обычно расположенной в ~/.monitrc. Если это не так (как в случае с установкой macOS), вы можете найти файлы конфигурации по умолчанию здесь.

Веб-интерфейс Monit настроен для работы на порту 2812. Это нормально, но по умолчанию он полностью открыт с паролем по умолчанию. Мы хотим заблокировать его до авторизованного IP-адреса и

set httpd port 2812
    allow your_ip
    allow admin:password

Измените этот пароль, конечно. Есть еще несколько вариантов конфигурации для веб-интерфейса, но пока это хорошо.

Затем Monit можно настроить для мониторинга отдельных процессов. Обычно это делается с помощью файла PID процессов (часто находится в /var/run/), в котором хранится текущий PID работающего экземпляра этого процесса, поскольку PID будет меняться при каждом перезапуске процесса.

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

Вам нужно будет передать Monit команду для запуска и остановки вашего процесса. Он должен автоматически перезапускаться, если процесс прерывается, без дополнительной настройки, но если вы хотите перезапустить на основе использования ресурсов, вам нужно будет указать это самостоятельно с помощью нескольких операторов if :

check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx start"
    stop program = "/etc/init.d/nginx stop"
    if totalmem > 600 MB for 5 cycles then restart
    if cpu > 90% for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout

Monit будет отправлять оповещения всякий раз, когда что-то перезапускается, поэтому вы будете уведомлены, когда что-то пойдет не так.

Как только вы закончите с конфигурацией, перезагрузите демон monit с помощью:

monit reload

И начните мониторинг с:

monit start all

Это также должно запустить веб-интерфейс, который вы можете использовать для проверки правильности работы Monit, обычно работающего на порту 2812.

Это базовая конфигурация для запуска Monit из коробки, но у Monit намного больше синтаксиса. Вы можете прочитать полное руководство по всем возможностям Monit, чтобы узнать больше.

Настройка оповещений

Monit можно настроить на отправку предупреждений по электронной почте при возникновении серьезных проблем или при перезапуске процессов. Вам нужно будет добавить конфигурацию для вашего почтового сервера:

set mailserver smtp.gmail.com
  port 587
  username "yourserver@gmail.com"
  password "secret"
  with timeout 60 seconds

set eventqueue
  basedir /var/lib/monit/events
  slots 100

Первый блок определяет используемый почтовый сервер. Самый простой способ — просто использовать smtp.gmail.com с учетной записью Gmail, хотя вы можете установить Postfix на свой сервер для локального запуска или использовать корпоративную почтовую службу.

Вторая строка указывает Monit поставить оповещения в очередь, если почтовый сервер по какой-либо причине недоступен.

Очевидно, вам также необходимо установить адрес электронной почты, на который он отправляет:

set alert youremail@gmail.com

Кроме того, поскольку Monit может запускать сценарии с помощью команды exec , вы можете настроить собственные оповещения по своему усмотрению. Например, вы можете настроить скрипт для отправки вам уведомлений Slack, сохранить его как /usr/local/bin/slack-webhook.sh и запускать его всякий раз, когда nginx меняет PID или перезапускается Monit. :

check process nginx with pidfile /var/run/nginx.pid
  start program = "/etc/init.d/nginx start"
  stop program = "/etc/init.d/nginx stop"
  if changed pid then exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"
  if 1 restart within 1 cycle then exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"

Обратите внимание, что все пути должны быть полными, включая /bin/bash и пути к исполняемым файлам в вашем локальном bin. И после того, как вы закончите изменять файлы конфигурации, вам нужно будет снова перезагрузить Monit.