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

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

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

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

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

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

Готово!

Получаем acces_token

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

Для получения токена, перейдем по ссылке, вида:
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». В моем случае — я разрешил все.Прикручиваем к Zabbix оповещения в VKontakte

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

Готово!

Пишем alertscript

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

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

#!/bin/sh

# Input params from zabbix
vk_user_id=$1
vk_subject=$2
vk_message=$3

vk_full_message="[$vk_subject]%0A$vk_message%0A[/$vk_subject]"

# Access token from vk app
vk_access_token="**************************************************"

# URL for VK.API method
vk_api_method_url="https://api.vk.com/method/messages.send"

# Request
curl -d "access_token=$vk_access_token&user_id=$vk_user_id&message=$vk_full_message" $vk_api_method_url

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

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

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

chmod +x /usr/lib/zabbix/alertscripts/zabbix_vk_alert.sh

Готово!

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

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

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

  1. Подраздел «Действие»
    Прикручиваем к Zabbix оповещения в VKontakte
    Имя — произвольное имя.
  2. Подраздел «Операции»
    Здесь описываются действия при срабатывании триггера
    Прикручиваем к Zabbix оповещения в VKontakte
    Тема по умолчанию — формат темы (передается скрипту в событии оповещения {ALERT.SUBJECT});
    Сообщение по умолчанию — формат сообщения (передается скрипту в событии оповещения {ALERT.MESSAGE}).
    Далее, необходимо добавить операцию (Жмем линк «Новый»):
    Прикручиваем к Zabbix оповещения в VKontakte
    Обозначаем, кого будем оповещать (группы и\или пользователи);
    Устанавливаем в поле «Отправлять только через» наше «VKontakte».
    Жмем на ссылочку (не кнопочку) «Добавить» :)
  3. Подраздел «Операции восстановления»
    Здесь описываются действия при восстановлении триггера
    Прикручиваем к Zabbix оповещения в VKontakte
    По аналогии с подразделом «Операции», форматируем тему и тело сообщения.
    Все остальное ставится по умолчанию. Жмем кнопку «Добавить»!

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

И напоследок, прилепим оповещение в пользователю.
Переходим в раздел Администрирование -> Пользователи, жмем на конкретного пользователя, переходим в подраздел «Оповещения», жмем «Добавить».
Прикручиваем к Zabbix оповещения в VKontakte
Тип оповещения — «VKontakte»;
Отправлять на — вставляем ИД пользователя в ВК.
Жмем «Добавить».
Готово!

Итог

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Комментарии: 6
  1. Иван

    Спасибо все сделал как и написано, все работает.
    Но есть вопрос как сделать так что бы сообщения отправлялись в диалог (vk).

    1. Иван

      Разобрался, все элементарно.

  2. Alex

    Привет, сделал все по инструкции, в интерфейсе пишет, отправлено, но в vk сообщения нету. Пробовал несколько раз. Может кто помочь?

  3. фывафыафыва

    для тех у кого ругается на версию апи в конец запроса вставить
    &v=5.80

  4. Виталик

    Cтранно,все по инструкции-сообщения не шлет.Хотя в тесте уходят нормально » Media type test successful.» никто не сталкивался?мб что в вк намудрили ?

  5. Василий

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

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

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.