Всем привет!
Из академического интереса решил попробовать прикрутить график к Zabbix, который отображал бы количество подписчиков в группе в вконтакте.
И что из этого получилось:)
Все будет производится на сервере с операционной системой FreeBSD c настроенным zabbix fgent и zabbix server. Но все описанное применимо к любой конфигурации и к любой операционной системе, будь-то Linux или даже Windows.
Еще нам понадобится Python3, проверяем установлен ли он:
# python3 -V Python 3.6.1
Если нет, то бегом устанавливать:
# portsnap fetch update # cd /usr/ports/lang/python3 && make install clean
Создадим python скрипт на машине с настроенным zabbix agentd:
# vi /home/username/scripts/vk_group_zabbix.py #!/usr/local/bin/python3 import urllib.request import json data = urllib.request.urlopen(r'https://api.vk.com/method/groups.getMembers?group_id=76982440&v=5.52').read().decode('utf8') group_json = json.loads(data) print(group_json['response']['count'])
Где 76982440 — ID группы (Взял для теста группу https://meduza.io/)
Делаем скрипт исполняемым:
# chmod +x /home/username/scripts/vk_group_zabbix.py
Проверяем, что нам возвратит наш скрипт:
# /home/username/scripts/vk_group_zabbix.py 382494
Поздравляю, мы получили количество подписчиков в цифре 382494.
Теперь нам надо этот выхлоп получать в zabbix servere.
Мы его будем получать через пользовательские параметры в zabbix agent.
Пропишем наш UserParametrs в самом конце (в принципе пишите, где хотите:)) zabbix_zgentd.conf
# vi /usr/local/etc/zabbix34/zabbix_agentd.conf UserParameter=vk_group, /home/username/scripts/vk_group_zabbix.py $1
(zabbix34 — версия установленного zabbix agent, у вас может быть другая версия)
Где:
- vk_group — ключ, к которому мы будем обращаться с zabbix server.
- /home/username/scripts/vk_group_zabbix.py — команда которая будет выполнятся при обращении к ключу
- $1 — здесь будет полученное скриптом значение
Рестартуем zabbix agetnd:
# /usr/local/etc/rc.d/zabbix_agentd restart
На сервере zabbix проверяем доступность нашего пользовательского параметра командой zabbix_get:
# zabbix_get -s 10.200.6.35 -k vk_group
10.200.6.35 — IP адрес машины с zabbix agent, -k имя ключа
Должна вернуть количество подписчиков, если нет, то проверяйте выше по тексту
Осталось создать график, для этого вначале надо создать элемент данных для машины на которой мы создали пользовательский скрипт.
Переходим в веб-интерфейс zabbix сервера.
Настройка—>Узлы сети—>Выбираем Элементы данных нужного нам хоста—> Жмем Создать элемент данных
Заполняем:
- Имя «VK_GROUP_USER»
- Тип — Zabbix агент
- Интерфейс узла сети — должно быть уже заполнено
- Тип информации — числовой(целое положительное)
- Тип данных — десятичный
- Период хранения истории (в днях) — 90
- Период хранения динамики изменений (в днях) — 365
- Интервал обновления (в сек) — 3600 (раз в час, чаще дергать смысла особого нет)
- Хранение значения — как есть
- Отображение значения — как есть
- Группы элементов данных — Zabbix
Жмем добавить
Мы создали Элемент данных с названием VK_GROUP_USER, теперь нам осталось создать график.
Переходим на графики хоста и жмем «Создать график»
- Имя — к примеру VK_GROUP_USER_GRAF
- Длина, ширина и т.п. ка квам угодно
- Тип графика — нормальный
- Элементы данных — жмем на ссылку «Добавить«, где находим наш хост и выбираем нами созданный элемент данных «VK_GROUP_USER» и жмем Выбрать
- Жмем ссылку Предпросмотр, если все устраивает, то нажимаем Добавить
Вот собственно и все, в очередной раз убеждаюсь в гибкости Zabbix Сервера.
UPDATE
С мая 2018 для получения количество (метод groups.getMembers) подписчиков требуется сервисный ключ приложения, получить токен для группы можно на странице администрирования (раздел работа с API)
Строка вызова будет по типу https://api.vk.com/method/groups.getMembers?group_id=76982440&v=5.52&access_token=ВАШ_ТОКЕН