System administration
April 2014 22

Zabbix + Pushbullet: простой способ push-оповещения

У нас на предприятии, основным способом оповещения о событиях системы мониторинга Zabbix является email-рассылка. Jabber не прижился ввиду малой распространенности, а СМС устарел (хоть и весьма универсален). Хотелось предложить ещё одну альтернативу, которой и стали push-уведомления.

Сервис Pushbullet уже успел сделать себе имя на платформе Android, а с недавних пор пытается покорить и iOS. Pushbullet умеет слать «пуши» на телефоны, принимать их в браузере (Chrome и Firefox) и из него же снова отправлять. В общем очень удобный и полезный сервис, который плюс ко всему имеет открытый API. Посредством этого API мы и будем отправлять события Zabbix на телефоны сотрудников.



Шаг 1: Узнайте свой Pushbullet API


Предполагается, что у вас уже есть аккаунт на данном сервисе. В этом случае просто перейдите в настройки своего профиля.


Шаг 2: Создаём bash-скрипт


Вариант 1: Отправляем сообщения на все устройства

Создайте bash-скрипт для отправки push-уведомлений на все устройства. Назовите его pushbullet-all
#!/bin/bash
API_KEY="$1"
SUBJECT="$2"
MESSAGE="$3"

curl https://api.pushbullet.com/v2/pushes \
      -u $1: \
      -d type=note \
      -d title="$SUBJECT" \
      -d body="$MESSAGE" \
      -X POST

Где $N — переменные. $1 — уникальный API (позже указывается в профиле пользователей Zabbix), $2 — будет заголовком, $3 — станет телом сообщения. Подробнее в справке Zabbix.

Скрипт нужно скопировать в папку alertscripts вашего Zabbix-сервера (например: /usr/local/share/zabbix/alertscripts). Не забудьте сделать скрипт исполняемым (chmod +x pushbullet-all).

Вариант 2: Отправляем сообщения на конкретные устройства

Чуть позже, в комментариях, начали предлагать разные версии скриптов для отправки сообщений на конкретные устройства. В принципе, можно использовать данный способ как вместо, так и совместно с тем, что указан выше. Я решил добавить вариативности и использовать скрипты совместно. Назовите новый скрипт pushbullet-dev:
#!/bin/bash
API_KEY="${1%%_*}"
DEV_ID="${1#*_}"
SUBJECT="$2"
MESSAGE="$3"

curl https://api.pushbullet.com/v2/pushes \
      -u $API_KEY: \
      -d device_iden=$DEV_ID \
      -d type=note \
      -d title="$SUBJECT" \
      -d body="$MESSAGE" \
      -X POST

Скрипт нужно скопировать в папку alertscripts вашего Zabbix-сервера (например: /usr/local/share/zabbix/alertscripts). Не забудьте сделать скрипт исполняемым (chmod +x pushbullet-all).

Теперь, в поле «Отправить на» мы указываем не только API, но и идентификатор устройства. Узнать их перечень можно следующим способом:
curl -u <your api key here>: https://api.pushbullet.com/api/devices

Поле «Отправить на» у нас будет выглядеть так (разделитель "_"):
api_dev

Где api — Ваш API-ключ (api_key), а dev — Ваш идентификатор устройства (dev_iden).

Ниже будут скриншоты для 1 варианта, со вторым просто имейте ввиду, что имя скрипта — pushbullet-dev, а в поле «Отправить на» нужно указать как API так и ID.

Шаг 3: Настройка Zabbix


Создайте новый способ оповещения (Администрирование — Способы оповещений)



Создайте новое действие, на вкладке «Операции» определите новый тип уведомлений



В настройках профиля пользователя укажите Ваш API Key



Соответственно, каждый ответственный сотрудник указывает в своём профиле личный API и начинает получать уведомления.

Шаг 4: Наслаждайтесь




UPD_02.08.2014: Обновил статью. Добавил скрипт для отправки на конкретные устройства и с использованием API v2 от Pushbullet.
+25
31.9k 271
Comments 26
Top of the day