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

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

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

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

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

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

UniPing настройка

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

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

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

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

UniPing настройка

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

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 представляет из себя легковесную систему мониторинга, направленную, прежде всего, на мониторинг серверов, сети и различных служб. Сбор показаний датчиков при помощи этой системы нетривиален и требует навыков работы в командной строке и написании скриптов. Кроме того, система не позволяет «из коробки» строить графики, что создает некоторые сложности в работе. Несмотря на это, система полностью справляется с мониторингом отдельно взятого хоста и автоматизацией в принятии решений на основе данных мониторинга.

?
×

    Получите бесплатную консультацию по выбору оптимального оборудования

    Наши операторы свяжутся с вами при первой возможности

    ×

      Обращение в техническую поддержку

      Сформулируйте, пожалуйста, тему и текст вашего обращения. Вам ответят в течении рабочего дня.

      ×
      Ваша заявка отправлена. Мы свяжемся с вами при первой возможности.