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

Мониторинг микроклимата серверной комнаты при помощи графиков, отправляемых в Telegram

Мониторинг микроклимата серверной комнаты при помощи графиков, отправляемых в Telegram

Мы продолжаем публикацию цикла статей по реализации интеграции устройств мониторинга микроклимата серверных комнат и устройств удалённого распределения питания NetPing с мессенджером «Telegram». Ранее в нашем блоге мы достаточно подробно рассматривали процесс создания ботов для «Telegram», управление розетками IP PDU NetPingуправление кондиционером в серверной комнате и управление IO линиями устройства NetPing с помощью мессенджера «Telegram». В этой статье мы рассмотрим процесс создания средства удалённого мониторинга микроклимата серверной комнаты при помощи графиков, отправляемых в «Telegram».

Требуемое оборудование и подготовка к разработке решения:

  • Устройство мониторинга микроклимата серверной комнаты UniPing server solution v3 или UniPing server solution v3/SMS – 1 шт.;
  • Датчик температуры 1-Wire – 1 шт.;
  • Датчик влажности 1-Wire, (HS) – 1 шт.;
  • ПК или сервер с предустановленной операционной системой CentOS Linux release 7.4.1708 (Core) и развёрнутой системой мониторинга Zabbix версии 3.4.8 – 1 шт.;
  • Локальная сеть для связи между устройством UniPing server solution v3/SMS и ПК, на котором выполняется скрипт бота – 1 шт.;
  • Мессенджер «Telegram» на ПК или смартфоне с доступом к Интернет – 1 шт.;
  • Python 2.7.5 и менеджер пакетов pip – 1 шт.

В этой статье используется устройство мониторинга микроклимата серверной комнаты UniPing server solution v3/SMS, настроенное на работу с датчиками температуры и влажности. Подробнее с настройками устройства можно ознакомиться здесь. Устройство UniPing server solution v3/SMS должно быть подключено к системе мониторинга Zabbix 3.4.8. Подробнее о подключении можно прочитать здесь. Предполагается, что у вас созданы боты в соответствии с рекомендациями этой статьи. В данном примере мы создали бот с именем @NetPing_Graph_bot.

Интерпретатор языка программирования Python 2.7.5 установлен в системе CentOS Linux release 7.4.1708 (Core) по умолчанию. Установим менеджер пакетов pip при помощи следующих команд: «# cd /usr/src && wget https://bootstrap.pypa.io/get-pip.py» и «# python get-pip.py»:

CentOS загрузка Pip

CentOS установка Pip

Так же для работы необходим pip модуль «requests». Установим его командой «# pip install requests»:

CentOS установка requests

На сайте github.com в свободном доступе есть скрипт, который умеет отправлять в «Telegram» графики из системы мониторинга Zabbix. Скачиваем исходники скрипта и копируем в директорию «/usr/lib/zabbix/alertscripts» нашего сервера Zabbix файлы «zbxtg.py» и «zbxtg_settings.example.py» из скачанного с нашего сайта архива. Файл переименовываем «zbxtg_settings.example.py» в «zbxtg_settings.py». Приводим содержимое «zbxtg_settings.py» примерно к такому виду:

# -*- coding: utf-8 -*-

tg_key = "624993224:AAE74nYdfK3aDgej_AowQ0Gc0rXDFCSvZQk" # telegram bot api key

zbx_tg_prefix = "zbxtg" # variable for separating text from script info
zbx_tg_tmp_dir = "/var/tmp/" + zbx_tg_prefix # directory for saving caches, uids, cookies, etc.
zbx_tg_signature = False

zbx_tg_update_messages = True
zbx_tg_matches = {
  "problem": "PROBLEM: ",
  "ok": "OK: "
}

zbx_server = "http://192.168.1.211/zbx/" # zabbix server full url
zbx_api_user = "Admin"
zbx_api_pass = "12345"
zbx_api_verify = False # True - do not ignore self signed certificates, False - ignore

zbx_basic_auth = False
zbx_basic_auth_user = ""
zbx_basic_auth_pass = ""

proxy_to_zbx = None
proxy_to_tg = None

#proxy_to_zbx = "proxy.local:3128"
#proxy_to_tg = "proxy.local:3128"

google_maps_api_key = None # get your key, see https://developers.google.com/maps/documentation/geocoding/intro

#zbx_tg_daemon_enabled = False
#zbx_tg_daemon_wl_ids = [509559395, ]
#zbx_tg_daemon_wl_u = ["zeroxzed", ]

zbx_db_host = "localhost"
zbx_db_database = "zabbix"
zbx_db_user = "root"
zbx_db_password = "12"

emoji_map = {
  "OK": "✅",
  "PROBLEM": "❗",
  "info": "ℹ️",
  "WARNING": "⚠️",
  "DISASTER": "❌",
  "bomb": "💣",
  "fire": "🔥",
  "hankey": "💩",
}

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

tg_key – токен, который выдал бот @BotFather при регистрации нового бота;
zbx_server – полный адрес сервера Zabbix;
zbx_api_user – логин учётной записи Zabbix;
zbx_api_pass – пароль учётной записи Zabbix;
zbx_db_database –  имя базы данных Zabbix;
zbx_db_user – пользователь для доступа к базе данных Zabbix;
zbx_db_password – пароль для доступа к базе данных Zabbix.

Делаем основной файл скрипта «zbxtg.py» исполняемым при помощи команды «# chmod +x /usr/lib/zabbix/alertscripts/zbxtg.py»

CentOS изменение прав на запуск скрипта

Настройка Zabbix на отправку уведомлений в «Telegram»

Переходим в web-интерфейс системы мониторинга Zabbix и добавляем новый способ оповещений. Для этого переходим в раздел «Administration Media types» и нажимаем кнопку «Create media type»:

Zabbix добавление нового типа оповещения

Заполняем поля:

Zabbix параметры оповещения

где:
Name – имя способа оповещения. В нашем примере «Telegram»;
Type – тип способа оповещения. Доступны типы: «Email», «Script», «SMS», «Jabber», «Ez Texting». Необходимо выбрать тип «Script»;
Script name – название файла скрипта для отправки SMS-уведомлений, расположенного по пути: «/usr/lib/zabbix/alertscripts». В нашем примере «zbxtg.py»;
Script parameters – Параметры скрипта. Прописываем параметры, как в нашем примере. В данном случае {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE} - это параметры, которые мы будем передавать скрипту.;
Enabled – чек-бокс для активации данного способа оповещения.

После заполнения всех настроек оповещения нажимаем кнопку «Add».

Затем переходим к настройкам пользователя Admin (Administration → Users) и добавляем новый способ оповещения на вкладке «Media». Нажимаем ссылку «Add» и в появившемся pop-up окне «Media» прописываем параметры как в нашем примере:

Zabbix добавление нового опевещения пользователю

Zabbix добавление нового оповещения пользователю. Заполнение параметров

где:
Type – параметр для выбора способов оповещений, созданных ранее в системе мониторинга Zabbix (Administration → Media Types). В нашем случае выбираем из списка тип оповещения «Telegram»;
Send to – указываем учётную запись «Telegram» получателя уведомлений. Можно указать текстовый логин или числовой ID. В нашем примере был указан текстовый логин;
When active – время срабатывания данного оповещения. Настройку можно оставить по умолчанию;
Use if severity – важность триггера, чек-боксы определяют, при какой важности триггера будет срабатывать данное оповещение. В примере установлены все чек-боксы для лучшей наглядности данного параметра;
Enabled – параметр для включения и отключения данного оповещения.

Сохраняем изменения нажатием кнопок «Add» и «Update».

Далее переходим к созданию действия, при выполнении которого будут отправляться сообщения в «Telegram». Переходим в раздел «Configuration → Action» и нажимаем кнопку «Create Action»:

Zabbix создание действия

В открывшемся окне на вкладке «Action» заполняем поля как в нашем примере. Здесь нам необходимо отсортировать триггеры, при срабатывании которых будут отправляться сообщения в «Telegram». Это действие будет выполняться при отклонении температуры от нормального диапазона.

Zabbix подбор триггеров для действия

где:
Name – уникальное имя действия. В нашем примере «temp_error»;
Type of calculation – тип логического правила для триггеров. В нашем примере «Custom expression»;
Conditions условия, при которых будет срабатывать действие. Имена триггеров, при срабатывании которых будет отправляться графическое сообщение в «Telegram», должны содержать фразы «Temperature Sensor» и одно из условий «Above Safe Range» или «Below Safe Range»;
New condition поле для создания нового условия. Добавление правил подтверждается нажатием на ссылку «Add» в поле «New condition»;
Enabled – параметр для включения и отключения данного действия.

Затем переходим на вкладку «Operations» и прописываем текст сообщения, которое будет отправлено в «Telegram» при срабатывании триггера, описанного на вкладке «Action»:

Zabbix настройка сообщения

где:
Default operation step duration – длительность одного шага операции. Например, длительность шага в один час означает, что, если первая операция в данном действии выполняется, то следующая операция начнётся спустя один час. В нашем примере операция отправки сообщения только одна, поэтому можно оставить значение по умолчанию;
Default subject – тема сообщения по умолчанию. В нашем примере «{{WARNING}} Problem: {TRIGGER.NAME}»;
Default message – сообщение по умолчанию. Сообщение может содержать макросы. В этом поле мы пишем текст сообщения, которое будет получать администратор системы мониторинга при срабатывании триггера.

Рассмотрим подробнее переменные, которые были указаны в сообщении:

zbxtg;graphs — указывает, что будем отправлять график;
zbxtg;graphs_period – период времени, который будет отображён на графике. Время указывается в секундах;
zbxtg;itemid – параметр который определяет itemid для графика. Мы указали нужный itemid вручную;
zbxtg;title — задаёт имя для заголовка графика.

Чтобы определить требуемый вам itemid, перейдите на страницу «Configuration → Hosts →Items»:

Zabbix Configuration - Hosts - Items

И найдите интересующий вас параметр. Например, значение температуры на первом термодатчике устройства мониторинга микроклимата серверной комнаты UniPing server solution v3/SMS:

Zabbix выбор параметра

Откройте свойства нужного вам параметра. Значение itemid будет в адресной строке браузера:

Zabbix свойства параметра


В поле «Operations» нажимаем ссылку «New» и заполняем развернувшуюся форму описания действия как в нашем примере. Добавляем пользователя «Admin» в поле «Sent to Users». В поле «Send only to» выбираем из списка тип уведомления «Telegram». Подтверждаем изменения нажатием ссылки «Add» (1):

Zabbix форма описания действия

Подтверждаем создание нового действия нажатием кнопки «Add» (2).

Теперь повторяем создание действия для событий датчика влажности. Переходим в раздел «Configuration → Action» и нажимаем кнопку «Create Action»:

Zabbix создание действия

В открывшемся окне на вкладке «Action» заполняем поля как в нашем примере:

Zabbix подбор триггеров для действия

Затем переходим на вкладку «Operations» и прописываем текст сообщения, которое будет отправлено в «Telegram» при срабатывании триггера, описанного на вкладке «Action»:

Zabbix форма описания действия

Подтверждаем создание нового действия нажатием кнопки «Add».

В результате этих настроек администратор системы будет получать такие сообщения в «Telegram»:

Telegram Общий вид сообщений с графиками

Если кликнуть по картинке с графиком мышкой, то она откроется в большем размере:

Telegram увеличенное сообщение

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


  • Устройство UniPing server solution v3
  • Устройство UniPing server solution v3/SMS

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


Каталог устойств мониторинг серверных комнат и шкафов
Все устройства
Устройство 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
Блок питания 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
Устройство NetPing 2/PWR-220 v4/SMS
Устройство UniPing server solution v4/SMS
Устройство NetPing 8/PWR-220 v4/SMS
VT592 кабельный датчик протечки
WLC10 кабель протечки
NetPing Connection board v2 (коммутационная плата для UniPing v3)
Инжектор питания POE (стандарта 802.3af)
NetPing датчик наличия электропитания 995S1
Устройство NetPing 2/PWR-220 v12/ETH
Устройство NetPing 2/PWR-220 v13/GSM3G
Датчик наличия 220В (мод. HRS05005), 1.5м
NetPing удлинитель-разветвитель 1-wire на 5 портов, модель R912R1
NetPing датчик качества электропитания 1-wire 910S20
▼ Все теги
Новинки
PLController BM8070D силовое реле 15A/250В на DIN-рейку
Силовое реле в корпусе для крепления на DIN-рейку предназначено для удаленной коммутации мощной нагрузки.Напряжение подробнее...

Цена: 1 429 руб.

NetPing адаптер датчиков с аналоговым интерфейсом 0-20мА, модель 886A01
Адаптер предназначен для подключения аналоговых датчиков, способен измерять протекающий ток, напряжение подробнее...

Цена: 3 354 руб.

NetPing датчик качества электропитания 1-wire 910S20
Датчик предназначен для мониторинга качества электропитания в розетке. Датчик должен быть подключен подробнее...

Цена: 2 240 руб.

NetPing удлинитель-разветвитель 1-wire на 5 портов, модель R912R1
Активный удлинитель-разветвитель для подключения датчиков 1-wire к устройствам NetPing5 портов для подключения подробнее...

Цена: 1 400 руб.

Устройство NetPing 2/PWR-220 v12/ETH
Управляемый блок удаленного распределения питания по сети Ethernet/Internet (IP PDU)2 независимые управляемые подробнее...

Цена: 8 157 руб.

Устройство NetPing 2/PWR-220 v13/GSM3G
Управляемый блок удаленного распределения питания по сети Ethernet/Internet (IP PDU) c поддержкой управления подробнее...

Цена: 15 700 руб.

NetPing датчик наличия электропитания 995S1
Датчик позволяет определить наличие напряжения в розетке питания. Выполнен в корпусе блока питания с подробнее...

Цена: 1 224 руб.

WLC10 кабель протечки
Чувствительный кабель для использования совместно с датчиком VT592. Может быть смонтирован в труднодоступных подробнее...

Цена: 6 700 руб.

VT592 кабельный датчик протечки
Датчик предназначен для работы совместно с кабелем протечки WLC10. Возможность подключения датчика как подробнее...

Цена: 3 800 руб.

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

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