Альтернативная доставка оповещений: настраиваем ntfy в NetPing Monitoring Server 90Z04

Введение

Сервер мониторинга NetPing 90Z04 — это готовое решение для развертывания системы контроля инфраструктуры в серверной комнате или центре обработки данных. Устройство поставляется с предустановленными операционной системой Ubuntu 20.04 LTS и платформой Zabbix, что позволяет приступить к мониторингу сразу после подключения к локальной сети.

Рис. 1. Netping Monitoring Server 90Z04

Одним из ключевых требований к системе мониторинга является своевременная доставка оповещений — сигналов о нештатных ситуациях: отключении питания, превышении температурных порогов, срабатывании датчиков протечки, потере сетевой связности. Стандартные каналы оповещения (электронная почта, SMS) не всегда обеспечивают моментальную доставку уведомлений и требуют отдельной инфраструктуры.

В данной статье рассматривается интеграция сервера мониторинга NetPing 90Z04 с сервисом ntfy — простым и бесплатным инструментом для отправки push-уведомлений на смартфон или рабочий стол через обычный HTTP-запрос.

При использовании публичного сервера ntfy.sh устройство NetPing 90Z04 должно иметь исходящий доступ в интернет по протоколу HTTPS. Если объект работает в изолированной сети, серверную часть сервиса ntfy можно развернуть локально.

Что такое ntfy?

Рис. 2. Главная страница сервиса ntfy.sh

ntfy (произносится «notify») — это открытый HTTP-сервис для отправки push-уведомлений. Он работает по модели публикации и подписки (pub-sub): отправитель публикует сообщение в именованный топик, а подписчики получают его в режиме реального времени. Сервис не требует регистрации для базового использования.

Принцип работы

Взаимодействие с ntfy осуществляется через стандартные HTTP-запросы — PUT или POST. Топик создается автоматически в момент первой публикации или подписки. При использовании публичного сервера ntfy.sh доступ к уведомлениям на практике определяется знанием имени топика, поэтому рекомендуется использовать сложные и трудно угадываемые названия. Для корпоративной среды с повышенными требованиями к защите лучше использовать собственный сервер ntfy и механизмы аутентификации.

Пример минимальной команды для отправки уведомления:

curl -d «Температура в стойке превышена!» ntfy.sh/my-secret-topic-name

Рис. 3. Пример тестового уведомления

Получить уведомление можно несколькими способами:

  • мобильное приложение для Android (Google Play или F-Droid) и iOS (App Store);
  • веб-интерфейс по адресу ntfy.sh/app;
  • десктопное приложение (PWA);
  • командная строка (ntfy CLI).

Возможности сервиса

Помимо базовой отправки текста, сервис поддерживает расширенные параметры, которые задаются через HTTP-заголовки запроса:

Параметр (заголовок) Описание
Title Заголовок уведомления
Priority Приоритет: min, low, default, high, urgent
Tags Теги и эмодзи для классификации уведомлений
Actions Кнопки действий в уведомлении
Attach Вложение файла (изображение, документ и т. д.)

Сервис ntfy является программным обеспечением с открытым исходным кодом. Публичный сервер ntfy.sh доступен бесплатно. При необходимости сервис можно развернуть самостоятельно — на любом сервере с поддержкой Linux, что делает его применимым в закрытых корпоративных сетях без выхода в интернет.

Интеграция с сервером мониторинга NetPing 90Z04

Сервер мониторинга NetPing 90Z04 работает под управлением Ubuntu 20.04 LTS и имеет подключение к сети Ethernet. Это позволяет использовать любые инструменты командной строки, в том числе curl, для отправки HTTP-запросов к сервису ntfy.

Подготовка к работе

Перед настройкой интеграции выполните следующие шаги:

  • Установите мобильное приложение ntfy на смартфон (Android или iOS);
  • Придумайте уникальное имя топика, например: netping-dc01-alerts-x7k9m;
  • Подпишитесь на этот топик в приложении;
  • Убедитесь, что на устройстве NetPing 90Z04 установлен пакет curl. Для проверки подключитесь к устройству по SSH (порт 22) и выполните:
    curl —version

Примечание. Подключение к SSH выполняется по адресу <ip-address>:22. Логин по умолчанию: visor, пароль: ping. На устройстве доступны права root.

Проверка отправки уведомлений

Для проверки работоспособности канала отправьте тестовое уведомление с устройства через SSH:


curl \
  -H "Title: Тест NetPing" \
  -H "Priority: default" \
  -H "Tags: white_check_mark" \
  -d "Тестовое оповещение от NetPing 90Z04" \
  ntfy.sh/ваш-топик

Если уведомление появилось на смартфоне, канал работает корректно.

Рис. 4. Пример тестового уведомления

Настройка оповещений в Zabbix

Платформа Zabbix, предустановленная на сервере NetPing 90Z04, поддерживает отправку уведомлений через Webhook — встроенный механизм HTTP-интеграции, не требующий написания внешних скриптов. Веб-интерфейс Zabbix доступен по адресу http://<ip-address>:80.

Шаг 1. Создание Media type

Перейдите в Alerts → Media types → Create media type. Заполните поля на вкладке Media type:

  • Name — ntfy
  • Type — Webhook
  • Parameters — добавьте три параметра: Message = {ALERT.MESSAGE}, Subject = {ALERT.SUBJECT}, URL = https://ntfy.sh/ваш-топик (укажите полный URL вашего топика, например https://ntfy.sh/netping-dc01-alerts-x7k9m )
  • Script — JS-код webhook, который выполняет POST-запрос к ntfy. Нажмите на иконку редактирования и вставьте следующий код:
    
    try {
      var params = JSON.parse(value);
      var req = new HttpRequest();
      req.addHeader('Title: ' + params.Subject);
      var resp = req.post(params.URL, params.Message);
      if (req.getStatus() != 200) {
        throw 'ntfy error: ' + req.getStatus() + ' ' + resp;
      }
      return 'OK';
    } catch (e) {
      throw e;
    }
    

Сохраните media type, нажав Update.

Рис. 5. Создание Media type

Шаг 2. Настройка шаблонов сообщений

Перейдите на вкладку Message templates. Для корректной отправки уведомлений через media type необходимо добавить шаблоны сообщений для событий Problem и Problem recovery. Без этого уведомления не будут сформированы в ожидаемом виде.

Шаблон 1 — Problem (тревога):

Рис. 6. Создание шаблона сообщений

Шаблон 2 — Problem recovery (восстановление):

Рис. 7. Создание шаблона сообщений

Шаг 3. Привязка media type к пользователю

Перейдите в Users → Users, откройте профиль нужного пользователя, вкладка Media → Add. Заполните поля:

Рис. 8. Привязка media type к пользователю

Шаг 4. Создание Action

Перейдите в Alerts → Actions → Trigger actions → Create action. На вкладке Action задайте имя, например ntfy_alerts, и убедитесь, что включен чекбокс Enabled. На вкладке Operations:

Рис. 9. Создание Action
  • В блоке Operations нажмите Add. Откроется диалог Operation details: Operation = Send message, Send to users — выберите нужного пользователя (например visor), Send only to — выберите ntfy. Нажмите Update.
  • В блоке Recovery operations нажмите Add и настройте аналогично — это обеспечит отправку уведомления при восстановлении после тревоги.
Рис. 10. Настройка Action

Нажмите Update для сохранения Action. После этого при срабатывании любого триггера Zabbix будет отправлять push-уведомление в приложение ntfy на смартфоне.
Наличие action обязательно: именно оно определяет, кому и через какой media type отправлять уведомления при срабатывании триггеров.

Шаг 5. Тестирование media type

Вернитесь в Alerts → Media types, откройте ntfy и нажмите кнопку Test в строке списка. В открывшемся диалоге поля Message и Subject заполнены автоматически макросами, а поле URL содержит адрес вашего топика из параметра. Нажмите Test — если все настроено верно, уведомление мгновенно придет в приложение ntfy на вашем смартфоне.

Рис.11. Тест media type

Результат настройки

После выполнения всех шагов система мониторинга NetPing 90Z04 с предустановленным Zabbix будет отправлять push-уведомления через сервис ntfy при срабатывании триггеров.
Ниже приведен пример того, как выглядят уведомления на стороне получателя. Внешний вид уведомлений зависит от настроенных шаблонов сообщений в Zabbix.

Рис. 12. Пример уведомления о проблеме
Рис. 13. Пример уведомления о восстановлении

Уведомления доставляются мгновенно после срабатывания триггера и отображаются в приложении ntfy на мобильном устройстве или в веб-интерфейсе.

Заключение

Использование сервиса ntfy в связке с сервером мониторинга NetPing 90Z04 обеспечивает простой и надежный канал доставки push-уведомлений. Интеграция не требует сложной настройки: достаточно создать webhook media type в Zabbix, задать шаблоны сообщений и настроить действие на отправку уведомлений.

Ключевые преимущества описанного подхода:

  • отправка уведомлений осуществляется одной командой curl — без установки дополнительного ПО;
  • сервис ntfy бесплатен и работает без регистрации в базовом режиме;
  • поддерживаются приоритеты сообщений, теги и эмодзи для быстрой визуальной идентификации типа события;
  • при необходимости сервис можно развернуть на собственном сервере, что исключает зависимость от внешних ресурсов;
  • в статье рассмотрен сценарий отправки уведомлений именно через платформу Zabbix, предустановленную на сервере мониторинга NetPing 90Z04.

Для повышения безопасности рекомендуется использовать сложные непредсказуемые имена топиков. При работе в корпоративной среде с повышенными требованиями к конфиденциальности рассмотрите вариант самостоятельного развертывания сервера ntfy в пределах локальной сети.

Подробная документация по настройке платформы Zabbix и встроенного ПО NetPing доступна на сайте производителя: https://netping.ru/products/netping-monitoring-server-90z04/