Прикручиваем к Zabbix оповещения в VKontakte

Что нам потребуется?

  1. Существующий аккаунт в vk (от его имени будут рассылаться уведомления)
  2. Создать свое приложения в vk
  3. Получить access_token (через Implicit Flow)
  4. Написать alertscript для отправки сообщений (через messages.send)
  5. Запилить его в Zabbix

Создаем новое приложение в vk

Перейдем в раздел VK Developers -> Мои приложения и жмем кнопку «Создать приложение». Платформа нашего приложения — «Standalone-приложение», название — придумайте любое (Например, my_access_token). Жмем «Подключить приложение».

Далее, будет необходимо подтвердить данное действие. Мне удобнее это сделать по SMS. Получаем код подтверждения СМСкой и вбиваем его в соответствующее поле, все просто. После чего нас редиректит в раздел управления приложением.

Готово!

Получаем acces_token

В разделе редактирования приложения, перейдем на вкладку «Настройки» и скопируем «ID приложения».

Для получения токена, перейдем по ссылке, вида:
https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

Само собой, на место «ID_ПРИЛОЖЕНИЯ» — подставляем ID нашего приложения. «scope» — права доступа приложения к соответствующим разделам. Если необходимо только слать сообщения — можно обойтись разделом «messages». В моем случае — я разрешил все.

В браузере, переходим по получившейся ссылке и разрешаем доступ приложения к запрошенным разделам. После чего нас перекинет на api.vk.com/blank.html и, о чудо (!!!), в адресной строке браузера, мы видим наш access_token. Копируем его к себе, и никому не показываем! С помощью данного токена, приложение может выполнять любые (разрешенные) запросы к API от имени пользователя под кем генерировался токен.

Готово!

Пишем alertscript

Все alertscript’ы zabbix’а лежат в отдельной директории, путь до которой указывается в переменной AlertScriptsPath, в zabbix_server.conf. 

Создаем скрипт в данной директории, назовем его, допустим — «zabbix_vk_alert.sh»:

$1, $2, $3 — входные параметры, с которыми zabbix будет дергать скрипт;
vk_full_message — полный текст сообщения;
%0A — перенос строки;
vk_access_token — наш токен (не забудьте подставить).

P.S. возможно придется указать полный путь до CURL

Даем права на запуск:

Готово!

Настраиваем оповещение в zabbix

На страничке нашего zabbix’а переходим на вкладку Администрирование -> Способы оповещений, где создаем новое оповещение:
Имя — произвольное имя;
Имя скрипта — правильное имя файла, которое zabbix будет искать в alertscrits;
Параметры — те самые три параметра, которые на вход принимает скрипт.
Добавляем!

Переходим на вкладку Настройка -> Действия, где создадим новое действие в 3 этапа:

  1. Подраздел «Действие»

    Имя — произвольное имя.
  2. Подраздел «Операции»
    Здесь описываются действия при срабатывании триггера

    Тема по умолчанию — формат темы (передается скрипту в событии оповещения {ALERT.SUBJECT});
    Сообщение по умолчанию — формат сообщения (передается скрипту в событии оповещения {ALERT.MESSAGE}).
    Далее, необходимо добавить операцию (Жмем линк «Новый»):

    Обозначаем, кого будем оповещать (группы и\или пользователи);
    Устанавливаем в поле «Отправлять только через» наше «VKontakte».
    Жмем на ссылочку (не кнопочку) «Добавить» :)
  3. Подраздел «Операции восстановления»
    Здесь описываются действия при восстановлении триггера

    По аналогии с подразделом «Операции», форматируем тему и тело сообщения.
    Все остальное ставится по умолчанию. Жмем кнопку «Добавить»!

Действие готово!

И напоследок, прилепим оповещение в пользователю.
Переходим в раздел Администрирование -> Пользователи, жмем на конкретного пользователя, переходим в подраздел «Оповещения», жмем «Добавить».

Тип оповещения — «VKontakte»;
Отправлять на — вставляем ИД пользователя в ВК.
Жмем «Добавить».
Готово!

Итог

В результате, все пользователи, у которых «тип» оповещения установлен в «VKontakte» и задан ID пользователя, будут получать что-то вроде:

Добавить комментарий