Что нам потребуется?
- Существующий аккаунт в vk (от его имени будут рассылаться уведомления)
- Создать свое приложения в vk
- Получить access_token (через Implicit Flow)
- Написать alertscript для отправки сообщений (через messages.send)
- Запилить его в 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»:
#!/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 будет искать в alertscrits;
Параметры — те самые три параметра, которые на вход принимает скрипт.
Добавляем!
Переходим на вкладку Настройка -> Действия, где создадим новое действие в 3 этапа:
- Подраздел «Действие»
Имя — произвольное имя. - Подраздел «Операции»
Здесь описываются действия при срабатывании триггера
Тема по умолчанию — формат темы (передается скрипту в событии оповещения {ALERT.SUBJECT});
Сообщение по умолчанию — формат сообщения (передается скрипту в событии оповещения {ALERT.MESSAGE}).
Далее, необходимо добавить операцию (Жмем линк «Новый»):
Обозначаем, кого будем оповещать (группы и\или пользователи);
Устанавливаем в поле «Отправлять только через» наше «VKontakte».
Жмем на ссылочку (не кнопочку) «Добавить» :) - Подраздел «Операции восстановления»
Здесь описываются действия при восстановлении триггера
По аналогии с подразделом «Операции», форматируем тему и тело сообщения.
Все остальное ставится по умолчанию. Жмем кнопку «Добавить»!
Действие готово!
И напоследок, прилепим оповещение в пользователю.
Переходим в раздел Администрирование -> Пользователи, жмем на конкретного пользователя, переходим в подраздел «Оповещения», жмем «Добавить».
Тип оповещения — «VKontakte»;
Отправлять на — вставляем ИД пользователя в ВК.
Жмем «Добавить».
Готово!
Итог
В результате, все пользователи, у которых «тип» оповещения установлен в «VKontakte» и задан ID пользователя, будут получать что-то вроде:
Спасибо все сделал как и написано, все работает.
Но есть вопрос как сделать так что бы сообщения отправлялись в диалог (vk).
Разобрался, все элементарно.
Привет, сделал все по инструкции, в интерфейсе пишет, отправлено, но в vk сообщения нету. Пробовал несколько раз. Может кто помочь?
для тех у кого ругается на версию апи в конец запроса вставить
&v=5.80
Cтранно,все по инструкции-сообщения не шлет.Хотя в тесте уходят нормально » Media type test successful.» никто не сталкивался?мб что в вк намудрили ?
VK API закрыли приложениям доступ к сообщениям. Теперь придётся переезжать на чат ботов