Примеры применения
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
Устройство 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
Устройство NetPing 2/PWR-220 v4/SMS
▼ Все теги
Новинки
Устройство NetPing 2/PWR-220 v4/SMS
Устройство удалённого управления розетками электропитания по сети Ethernet/Internet (IP PDU) c поддержкой подробнее...

Цена: 12 955 руб.

Датчик воздушного потока (модель АМС520)
Датчик воздушного потока позволяет контролировать наличие или отсутствие напора воздушного потока. Содержит подробнее...

Цена: 2 846 руб.

ИКС-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 руб.

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

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