Статистика подписчиков в вконтакте

Всем привет!
Из академического интереса решил попробовать прикрутить график к 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=ВАШ_ТОКЕН

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :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.