среда, 14 января 2015 г.

Linux. Resources (Memory, CPU, swap) monitoring with notifications

Нехватка ресурсов на сервере (RAM, место на жестком диске, загрузка CPU), может привести к плохим последствиям. Чтобы быстро узнать об этом и принять меры, можно настроить мониторинг ресурсов и оповещение в случае опасности.

Для этого существует множество сервисов, которые можно найти в сети.
В этой статье описано, как настроить мониторинг системы через сервис monit (http://mmonit.com/monit/), а именно:
1. Мониторинг загруженности CPU, swap и оперативной памяти.
2. Оповещение на email в случае достижения загрузки предельного значения.

Краткое описание




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

Программа имеет следующую функциональность:
  • Отслеживание состояния серверов (доступность, потребление ресурсов).
  • Мониторинг демонов (состояние, потребляемые ресурсы, количество child-process и многое другое).
  • Мониторинг сетевых сервисов (возможность подключения и корректность ответа).
  • Выполнение встроенных или собственных (с помощью скриптов) действий при достижении определенных событий.
  • Отправка уведомлений на Email или в централизованный web-интерфейс M\Monit.

Поддерживаются ОС GNU\LinuxFreeBSDOpenBSDSolarisMac OS XAIX.

Установка


Здесь все проще простого. Выполняем:
sudo apt-get install monit

Доступ к настройкам


Настройка поведения monit осуществляется через консоль или файл настроек. Опции, заданные через консоль, перегружают настройки из файла.

Настройки содержатся в файле monitrc, который, по умолчанию, должен находиться в ~/.monitrc.

Однако, после установки, он находился в /etc/monit/monitrc.

Чтобы проверить файл на синтаксические ошибки, выполните команду:
monit -t

Структура файла настроек


Файл настроек включает в себя следующие категории:
1. Глобальные значения (Global Section)
2. Сервисы (Services)
3. Подключаемые модули (Includes)

Глобальные значения, это опции поведения программы (Период проверки, путь к лог файлу, список адресов для рассылки и т.д.).

Они задаются следующим образом:
set option_name parameters

Некоторые значения заданы в файле по умолчанию, например:
set daemon 120 

Значение 120 означает, что демон будет запускать проверку системы каждые 120 секунд.

Сервисы, это то, что monit будет делать во время проверки (Проверить состояние процессора, памяти, какого-либо процесса и т.д.)

Они задаются следующим образом:
check category parameters

Подключаемые модули позволяют разделить файл настроек на несколько файлов. По умолчанию в файле настроек есть строка:
include /etc/monit/conf.d/*

Настройка


И так, откройте файл настроек для редактирования:
vim /etc/monit/monitrc

Ниже приведен список опций для решения поставленной задачи.
Добавьте недостающие опции в файл настроек.
# Периодичность проверки в секундах
set daemon 120
# Путь к лог файлу. Оставил без изменений
set logfile /var/log/monit.log
# Путь к уникальному идентификатору. Оставил без изменений
set idfile /var/lib/monit/id
# Путь к состоянию. Оставил без изменений
set statefile /var/lib/monit/state
# Email адрес, с которого производить рассылку оповещений
set mailserver smtp.gmail.com port 587
    username "EmailAccount" password "email_password"
    using tlsv1
# Очередь событий. Оставил без изменений
set eventqueue
      basedir /var/lib/monit/events
      slots 100
# Адреса, куда присылать уведомления
set alert 4ybakut2004@gmail.com
set alert ExtraEmail@gmail.com

Так же есть возможность настроить web интерфейс, но в рамках решаемой задачи это не нужно.

Далее приведен сервис для проверки состояния CPU, swap и RAM.
Пропишите его в файле настроек.
check system ServiceName
      if memory usage > 10% then alert
      if swap usage > 25% then alert
      if cpu usage (user) > 70% then alert
      if cpu usage (system) > 30% then alert
      if cpu usage (wait) > 20% then alert

Здесь ServiceName - любое имя. Оно будет использоваться в email уведомлениях.
system - Категория проверки. Каждая категория имеет собственный набор настроек, которые можно посмотреть на официальной странице. В данном случае мониторится система.

Синтаксис довольно понятный и не нуждается в объяснении. 
Всякий раз, когда возникает alert, monit записывает данные об этом в лог, а так же отправляет email на указанные адреса.

Запуск


Чтобы запустить monit, выполните команду:
sudo monit

При этом запустится демон, выполняющий все описанные сервисы.
Если напечатать команду еще раз, сервисы запустятся немедленно вне очереди.

Чтобы прекратить мониторинг, выполните:
sudo monit quit

Полный список опций программы доступен здесь:

Комментариев нет:

Отправить комментарий