Примеры применения
27.07.2018

Пример мониторинга серверной комнаты на основе Monit, InfluxDB, Grafana и устройств NetPing

Пример мониторинга серверной комнаты на основе Monit, InfluxDB Grafana и устройств NetPing

В данной статье мы рассмотрим настройку системы мониторинга Monit для работы с устройствами мониторинга серверных комнат NetPing. Monit - это легковесная система мониторинга серверов, которая устанавливается на сервер и обеспечивает возможность отправки уведомлений в случае обнаружения проблем. Кроме того, Monit может автономно выполнять определённое Вами действие в качестве реакции на заданные события. Она представляет из себя самостоятельный демон, работающий от пользователя root. Главным преимуществом используемой системы является её простота - в минимальной конфигурации достаточно исполняемого файла и файла конфигурации. Расширить функционал системы можно при помощи самописных скриптов.

Для реализации работы примера мониторинга серверной комнаты на основе Monit и устройств NetPing нам понадобятся:

Настройка UniPing server solution v3/SMS и подключение к нему датчиков

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

  1. Переходим в раздел настроек устройства;
  2. Осуществляем базовую настройку сетевого интерфейса;
  3. Осуществляем базовую настройку параметров доступа (логин и пароль от Web-интерфейса, community чтения и записи, фильтр доступа по IP) при необходимости. 

Подключение датчиков

Чтобы подключить 1-Wire датчик, нам нужно узнать его уникальный номер. Сам процесс подключения хорошо описан в этой статье. Таким образом подключаются датчики температуры 1-Wire и влажности 1-Wire.

За информацией о подключении и настройке датчиков можно обратиться к официальной документации

Датчики температуры 1-Wire

UniPing настройка

Датчики влажности 1-Wire

UniPing настройкаUniPing настройка

Датчики наличия 220В, протечки, открытия двери и воздушного потока подключаются к IO линиям. Эти датчики являются датчиками типа "сухой контакт". В документации хорошо описана их настройка.

UniPing настройка

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

В качестве первого шага нам необходимо скачать и установить систему мониторинга Monit, и установить дополнительные пакеты, необходимые для работы скриптов, на сервер с установленной ОС Ubuntu x64.

Скачиваем с официального сайта архив с Monit:

wget https://mmonit.com/monit/dist/binary/5.25.2/monit-5.25.2-linux-x64.tar.gz

распаковываем его:

tar xvf monit-5.25.2-linux-x64.tar.gz

копируем в домашнюю папку и переименовываем:

cp -R monit-5.25.2-linux-x64 /home/user/monit

создаём папки для своих конфигурационных файлов и скриптов:

mkdir /home/user/monit/conf/user

mkdir /home/user/monit/conf/scripts

Для первого тестового запуска системы необходимо сконфигурировать встроенный Web-сервер:

В файле /home/user/monit/conf/monitrc находим секцию, начинающуюся с set httpd port 2812 and, и приводим её к виду:

set httpd port 2812 and #при необходимости меняем порт сервера на нужный
    use address 192.168.0.123 #указываем адрес, на котором будет сервер ожидать входящие подключения
    allow admin:monit # учетные данные для входа в Web-интерфейс

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

include /home/user/monit/conf/user/*

Устанавливаем пакеты SNMP и Curl. Для сбора показаний нам понадобится snmpget, а для записи данных в базу - curl.

apt-get install snmp curl

Запускаем систему мониторинга. Чётко указываем пути до исполняемого файла и файла конфигурации при запуске.

/home/user/monit/bin/monit -c /home/user/monit/conf/monitrc    

Интерфейс системы ничем не примечателен и содержит минимум необходимых элементов. По умолчанию мы видим информацию по серверу, куда установлен Monit.

NetPing Monit Dashboard

Для того, чтобы добавить новые элементы мониторинга, необходимо согласно документации указать в конфигурации сервисы для мониторинга. По умолчанию 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:

/home/user/monit/bin/monit -c /home/user/monit/conf/monitrc reload all

И видим в web-интерфейсе системы мониторинга Monit информацию по датчикам, подключенных к устройству мониторинга серверной комнаты UniPing server solution v3/SMS:

NetPing Monit Dashboard с датчиками

На этом основная часть по настройке Monit и UniPing server solution v3/SMS для мониторинга серверной комнаты окончена. "Из коробоки" Monit не умеет рисовать графики, для этого дополнительно воспользуемся связкой InfluxDB + Grafana:

  • InfluxDB - time-series база данных, по своей специфике схожа с RRD;
  • Grafana - мощная и гибкая Dashboard.

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

Для установки InfluxDB переходим на официальный сайт в раздел загрузок. Ищем в списке нашу операционную систему - в примере используется Ubuntu x64:

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.5.4_amd64.deb
sudo dpkg -i influxdb_1.5.4_amd64.deb

Теперь нам нужно в файле конфигурации разрешить управление базой через HTTP API. Для этого в файле /etc/influxdb/influxdb.conf нужно раскоментировать строки:

enabled = true
bind-address = "localhost:8086"

Далее перезапускаем InfluxDB для применения новых настроек:

service influxdb restart

И создаём базу данных для хранения показаний датчиков:

curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE netping"

С полной документацией на InfluxDB можно ознакомиться на официальном сайте.

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

Переходим на официальный сайт в раздел загрузок.

Согласно версии нашей ОС скачиваем и устанавливаем пакет:

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.2.1_amd64.deb
dpkg -i grafana_5.2.1_amd64.deb

Запускаем и конфигурируем для автозагрузки:

service grafana-server start
update-rc.d grafana-server defaults

Затем редактируем файл /etc/grafana/grafana.ini

htpp_addr = 192.168.0.123 #интерфейс, на котором веб-сервер будет ожидать входящих подключений

http_port = 8484 #порт, на котором веб-сервер будет ожидать входящих подключений

Перезапускаем:

service grafana-server start

Теперь, по адресу http://192.168.0.123:8484 мы можем увидеть web-интерфейс:

Grafana Home

Вначале мы должны указать, где лежат сохраняемые нами показания датчиков, так называемый Data Source. Переходим по ссылке http://192.168.0.123:8484/datasources. Жмём Add data source:

Grafana добавление источника данных

Далее заполняем поля следующим образом:

  • Type - InfluxDB (тип источника данных).
  • Name - netping_ds (имя источника данных).
  • URL - http://localhost:8086 (адрес подключения к базе данных).
  • Database - netping (имя базы данных, созданной нами на этапе установки InfluxDB).

Grafana добавление источника данных

Ниже нажимаем Save & Test:

Grafana save DS

После этого в списке появится наш источник данных, база данных InfluxDB, где содержатся данные, собираемые с датчиков:

Grafana источник данных NetPing

Процесс настройки Dashboard описан в документации. В рамках данной статьи мы не будем его разбирать. Вместо этого мы импортируем уже готовую Dashboard:

Скачиваем:

Переходим в:

Grafana import NetPing Dasboard

Далее загружаем JSON файл.

Grafana import NetPing Dashboard

Указываем желаемое имя нашей Dashboard и уникальный идентификатор (оставляем по умолчанию) и жмём Import:

Grafana import NetPing Dashboard

И видим готовую Dashboard с отображением всех подключённых датчиков:

Grafana NetPing Dashboard

Вывод

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


  • Все устройства

Основные теги


Каталог устойств мониторинг серверных комнат и шкафов
Все устройства
Устройство UniPing v3
Устройство UniPing server solution v3/SMS
Устройство NetPing 2/PWR-220 v1/SMS
Устройство NetPing IO v2
Устройства NetPing
Каталог датчиков для устройств NetPing
Устройство NetPing 8/PWR-220 v3/SMS
Устройство NetPing 2/PWR-220 v3/ETH
Устройство NetPing 2/PWR-220 v2/SMS
Устройство NetPing 4/PWR-220 v3/SMS
Устройство NetPing SMS
Устройство NetPing /PWR-220 v3/ETH
Адаптер WiFi VAP11N
Коммутатор PS104GT
Устройство NetPing Mini-UPS
Коммутатор NP-SM4
Сплиттер POE 12В (стандарта 802.3af)
IRC-TR v2 (ИК модуль расширения)
Каталог устройств удалённого управления и распределения электропитания NetPing
Устройство UniPing server solution
Устройство UniPing server solution v3
Датчик разбития стекла (Стекло-3 ИО 329-4), 2м
Переходник для NetPing IO v2
Устройство NetPing PWR68-01
Датчик мониторинга 220В 1-wire
Адаптер DKST910.8
Устройство NetPing DKST61-01
Блок питания 48В 1,5А (мод.HRS20005)
Датчик температуры TS, 1м
Датчик температуры, (T811), 2м
Датчик температуры WT, 1м
Датчик протечки, модель 2605, 2м
Датчик протечки H2О
Датчик температуры 1-wire, (THS), 2м
МАЯК-12-СТ
Датчик движения (PYRONIX COLT QUAD PI ПИК детектор), 2м
Датчик движения (SWAN-QUAD ИК детектор квадросенсор), (2м)
BM8070D Силовое реле 16А/250В на DIN-рейку
MP701 Исполнительный элемент (4 независимых канала по 2 кВт 10А)
Датчик дыма комбинированный (дым/тепло) ИП 212/101-2М-A1R с базой Е412NL
МОЛЛЮСК-12/1,5
Внешний ИБП SKAT-12DC-1.0 Li-ion
ИКС-1 извещатель охранный инфракрасный активный однолучевой
Датчик охранный (Извещатель охранный ИО102-20/Б2П, 2м)
Блок розеток SNR-PDU-08S-1
▼ Все теги
Новинки
Датчик воздушного потока (модель АМС520)
Датчик воздушного потока позволяет контролировать наличие или отсутствие напора воздушного потока. Содержит подробнее...

Цена: 2 587 руб.

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

Цена: 3 854 руб.

Внешний ИБП SKAT-12DC-1.0 Li-ion
Малогабаритный источник бесперебойного питания (ИБП) со встроенной Li-Ion АКБ. Для питания устройств подробнее...

Цена: 3 200 руб.

МОЛЛЮСК-12/1,5
Малогабаритный блок питания с выходным напряжением 12 В. Имеет уникальный корпус, который позволяет подробнее...

Цена: 950 руб.

Датчик дыма комбинированный (дым/тепло) ИП 212/101-2М-A1R с базой Е412NL
Комбинированный извещатель предназначен для обнаружения возгораний в помещениях различных зданий и сооружений подробнее...

Цена: 2 098 руб.

MP701 Исполнительный элемент (4 независимых канала по 2 кВт 10А)
Силовой модуль коммутации предназначен для обеспечения управления при помощи устройств NetPing силовыми подробнее...

Цена: 1 400 руб.

BM8070D Силовое реле 16А/250В на DIN-рейку
Блок реле для удалённой коммутации мощной нагрузки при помощи устройств NetPing. Изготавливается в корпусе подробнее...

Цена: 1 350 руб.

Датчик движения (SWAN-QUAD ИК детектор квадросенсор), (2м)
Пассивный инфракрасный детектор движения позволяет регистрировать любое движение в зоне до 18 метров. подробнее...

Цена: 1 516 руб.

МАЯК-12-СТ
Оповещатель охранно-пожарный световой стробоскопический предназначен для выдачи световых стробоскопических подробнее...

Цена: 385 руб.

Датчик протечки H2О
Датчик протечки позволяет определить наличие воды в точке установки датчика. Устанавливается в нескольких подробнее...

Цена: 1 450 руб.

-+ руб. руб.
Итого руб.

Данные о заказе