В данной статье мы рассмотрим настройку системы мониторинга Monit для работы с устройствами мониторинга серверных комнат NetPing. Monit — это легковесная система мониторинга серверов, которая устанавливается на сервер и обеспечивает возможность отправки уведомлений в случае обнаружения проблем. Кроме того, Monit может автономно выполнять определённое Вами действие в качестве реакции на заданные события. Она представляет из себя самостоятельный демон, работающий от пользователя root. Главным преимуществом используемой системы является её простота — в минимальной конфигурации достаточно исполняемого файла и файла конфигурации. Расширить функционал системы можно при помощи самописных скриптов.
Для реализации работы примера мониторинга серверной комнаты на основе Monit и устройств NetPing нам понадобятся:
- сервер с установленной системой мониторинга Monit;
- устройство мониторинга серверной комнаты UniPing server solution v3/SMS — 1 шт.;
- датчик температуры 1-Wire — 1 шт.;
- датчик влажности 1-Wire — 1 шт.;
- датчик открытия двери — 1 шт.;
- датчик наличия 220В — 1 шт.;
- датчик протечки — 1 шт.;
- датчик воздушного потока — 1 шт.
Настройка UniPing server solution v3/SMS и подключение к нему датчиков
Чтобы начать работу, нам необходимо выполнить базовую настройку оборудования:
- Переходим в раздел настроек устройства;
- Осуществляем базовую настройку сетевого интерфейса;
- Осуществляем базовую настройку параметров доступа (логин и пароль от Web-интерфейса, community чтения и записи, фильтр доступа по IP) при необходимости.
Подключение датчиков
Чтобы подключить 1-Wire датчик, нам нужно узнать его уникальный номер. Сам процесс подключения хорошо описан в этой статье. Таким образом подключаются датчики температуры 1-Wire и влажности 1-Wire.
За информацией о подключении и настройке датчиков можно обратиться к официальной документации.
Датчики влажности 1-Wire
Датчики наличия 220В, протечки, открытия двери и воздушного потока подключаются к IO линиям. Эти датчики являются датчиками типа «сухой контакт». В документации хорошо описана их настройка.
Установка и настройка Monit
В качестве первого шага нам необходимо скачать и установить систему мониторинга Monit, и установить дополнительные пакеты, необходимые для работы скриптов, на сервер с установленной ОС Ubuntu x64.
Скачиваем с официального сайта архив с Monit:
распаковываем его:
копируем в домашнюю папку и переименовываем:
создаём папки для своих конфигурационных файлов и скриптов:
Для первого тестового запуска системы необходимо сконфигурировать встроенный Web-сервер:
В файле /home/user/monit/conf/monitrc находим секцию, начинающуюся с set httpd port 2812 and, и приводим её к виду:
В конце файла настраиваем подключение пользовательских файлов конфигурации и указываем их местонахождение:
Устанавливаем пакеты SNMP и Curl. Для сбора показаний нам понадобится snmpget, а для записи данных в базу — curl.
Запускаем систему мониторинга. Чётко указываем пути до исполняемого файла и файла конфигурации при запуске.
Интерфейс системы ничем не примечателен и содержит минимум необходимых элементов. По умолчанию мы видим информацию по серверу, куда установлен Monit.
Для того, чтобы добавить новые элементы мониторинга, необходимо согласно документации указать в конфигурации сервисы для мониторинга. По умолчанию Monit не умеет считывать какие-либо показания по SNMP, но он умеет исполнять сторонние скрипты и на основании кода завершения предпринимать те или иные действия, что открывает простор для кастомизации — как мы и поступим.
Для мониторинга используемых в данном примере датчиков мы подготовили три скрипта, их нужно поместить в /home/user/monit/conf/scripts:
- get_io.sh — скрипт считывает состояние IO линии устройства мониторинга серверных комнат UniPing server solution v3/SMS, запускается с параметрами ./get_io.sh <номер IO линии> <нормальное значение> <значение тревоги> (например, для датчика наличия 220В, подключенного к IO1 — /get_io.sh 1 1 0). IP адрес устройства и community указываются в теле скрипта.
- get_relhumtemp1w.sh — скрипт считывает показания датчика относительной влажности и встроенного в него датчика температуры, запускается с параметром ./get_relhumtemp1w.sh <номер датчика>, верхнюю и нижнюю границы диапазона влажности и температуры скрипт берёт с UniPing server solution v3/SMS и на их основании выдаёт событие о тревоге. IP адрес устройства и community указываются в теле скрипта.
- get_temp1w.sh — скрипт считывает показания датчика температуры, запускается с параметром ./get_temp1w.sh <номер датчика>, верхнюю и нижнюю границы диапазона температуры скрипт берёт с UniPing server solution v3/SMS и на их сновании выдаёт событие о тревоге. IP адрес устройства и community указываются в теле скрипта.
Файл конфигурации (необходимо извлечь его из архива) помещаем в /home/user/monit/conf/user:
- netping.7z — в файле конфигурации настроен мониторинг доступности UniPing server solution v3/SMS (ping) и мониторинга показаний подключённых к нему датчиков.
После этого перезапускаем Monit:
И видим в web-интерфейсе системы мониторинга Monit информацию по датчикам, подключенных к устройству мониторинга серверной комнаты UniPing server solution v3/SMS:
На этом основная часть по настройке Monit и UniPing server solution v3/SMS для мониторинга серверной комнаты окончена. «Из коробоки» Monit не умеет рисовать графики, для этого дополнительно воспользуемся связкой InfluxDB + Grafana:
- InfluxDB — time-series база данных, по своей специфике схожа с RRD;
- Grafana — мощная и гибкая Dashboard.
Установка и настройка InfluxDB
Для установки InfluxDB переходим на официальный сайт в раздел загрузок. Ищем в списке нашу операционную систему — в примере используется Ubuntu x64:
Теперь нам нужно в файле конфигурации разрешить управление базой через HTTP API. Для этого в файле /etc/influxdb/influxdb.conf нужно раскоментировать строки:
Далее перезапускаем InfluxDB для применения новых настроек:
И создаём базу данных для хранения показаний датчиков:
С полной документацией на InfluxDB можно ознакомиться на официальном сайте.
Установка и настройка Grafana
Переходим на официальный сайт в раздел загрузок.
Согласно версии нашей ОС скачиваем и устанавливаем пакет:
Запускаем и конфигурируем для автозагрузки:
Затем редактируем файл /etc/grafana/grafana.ini
Перезапускаем:
Теперь, по адресу http://192.168.0.123:8484 мы можем увидеть web-интерфейс:
Вначале мы должны указать, где лежат сохраняемые нами показания датчиков, так называемый Data Source. Переходим по ссылке http://192.168.0.123:8484/datasources. Жмём Add data source:
Далее заполняем поля следующим образом:
- Type — InfluxDB (тип источника данных).
- Name — netping_ds (имя источника данных).
- URL — http://localhost:8086 (адрес подключения к базе данных).
- Database — netping (имя базы данных, созданной нами на этапе установки InfluxDB).
Ниже нажимаем Save & Test:
После этого в списке появится наш источник данных, база данных InfluxDB, где содержатся данные, собираемые с датчиков:
Процесс настройки Dashboard описан в документации. В рамках данной статьи мы не будем его разбирать. Вместо этого мы импортируем уже готовую Dashboard:
Скачиваем:
Переходим в:
Далее загружаем JSON файл.
Указываем желаемое имя нашей Dashboard и уникальный идентификатор (оставляем по умолчанию) и жмём Import:
И видим готовую Dashboard с отображением всех подключённых датчиков:
Вывод
Monit представляет из себя легковесную систему мониторинга, направленную, прежде всего, на мониторинг серверов, сети и различных служб. Сбор показаний датчиков при помощи этой системы нетривиален и требует навыков работы в командной строке и написании скриптов. Кроме того, система не позволяет «из коробки» строить графики, что создает некоторые сложности в работе. Несмотря на это, система полностью справляется с мониторингом отдельно взятого хоста и автоматизацией в принятии решений на основе данных мониторинга.