Home » Zabbix » Работа с API Яндекс метрики в Zabbix

Работа с API Яндекс метрики в Zabbix

Ранее я уже рассказывал, как работать с API от Google и Telegram, теперь поделюсь тем же самым, только для Яндекса. Я покажу, как забирать данные из api яндекс.метрики в сервер мониторинга Zabbix. У Яндекса доступ к api значительно проще, хотя используется тот же самый протокол OAuth 2.0.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Работа с API Яндекс метрики в Zabbix

 

Введение

Я не буду подробно останавливаться на том, зачем может понадобиться забирать данные из метрики в Zabbix, если в самой метрике есть отличный интерфейс с возможностью быстро создавать отчеты на любой вкус. Дублировать функционал метрики нет никакого смысла. Лично я использую самые простые данные о посещаемости сайтов на своем дашборде, чтобы не ходить за ними в метрику, так как там тяжелый интерфейс, который долго грузится. Раньше я для этих целей использовал виджеты на главной Яндекса, но они закрыли этот функционал, чтобы ты быстрее постиг помойку Дзена, который они всячески пихают на главной.

Получение доступа к API Яндекс

Для того, чтобы получить доступ к API Яндекса, вам надо добавить новое приложение по ссылке - https://oauth.yandex.ru. Нажимайте Зарегистрировать новое приложение.

Создание приложения для доступа к api

Вам нужно будет заполнить несколько обязательных полей:

  1. Название приложения.
  2. В качестве платформы указать Веб-сервисы.
  3. Callback URI установить - https://oauth.yandex.ru/verification_code.
  4. В Доступах указать: Яндекс.Метрика, Получение статистики, чтение параметров своих и доверенных счетчиков.

Включение доступа к яндекс метрики через api

Все остальное можно не указывать. Вы должны получить ID приложения и Пароль.

Приложение с доступом к api

Подставляя свой ID, переходите по ссылке https://oauth.yandex.ru/authorize?response_type=token&client_id=[client_id]. Вместо [client_id] напишите свой ID приложения. Если вы не авторизованы в Яндекс, вам предложат это сделать. После этого будет запрос на доступ к вашим данным в Яндексе.

Разрешение на доступ к api

После разрешения, вы получите токен, с помощью которого можно подключаться к api.

Токен доступа oauth

Используя этот токен, можно получать данные из Метрики через API. Для примера зайдем на сервер мониторинга и через консоль запросим данные о посещаемости сайта. Для этого нам нужно узнать номер его id в метрике. Можно это сделать прямо в ней же.

id сайта в метрике

Далее формируем запрос через curl с указанием токена в header.

# curl --header "Authorization: OAuth AgAAaaaaaaaaaaaDDDDDDDDDddd" --header "Content-Type: application/x-yametrika+json" -X GET "https://api-merika.yandex.ru/stat/v1/data?&ids=23506456&metrics=ym:s:users,ym:s:visits,ym:s:pageviews&dimensions=&date1=today&pretty=true"

В данном запросе я указал:

  • AgAAAAAAGk3WAAaaYZaUSgzNyU7uvqAKCGwDSro - токен;
  • ids=23506456 - id сайта в метрике;
  • metrics=ym:s:users,ym:s:visits,ym:s:pageviews - запрошенные метрики - пользователи, визиты, просмотры страниц;
  • date1=today - дата, сегодняшний день в данном случае;
  • pretty=true - вывести в формате удобочитаемого json.

curl запрос к api яндекса

Получили ответ в виде подробного json. Он отлично подходит для zabbix, так как последний умеет из коробки парсить json. У вас есть 2 варианта дальнейшей настройки мониторинга:

  1. Сделать скрипт на сервере, который будет слать запросы в api яндекса и передавать полученное значение в zabbix с помощью агента. Плюс решения в том, что нагрузка на сервер мониторинга минимальная. Неудобство в том, что нужно куда-то добавлять скрипт.
  2. Слать запросы к api напрямую с zabbix сервера с помощью HTTP Агента. И сразу там же парсить полученный ответ. Плюс этого подхода в том, что все настройки хранятся в шаблоне и легко сохраняются или переносятся через экспорт шаблона. Минус в том, что все вычисления и запросы выполняются самим заббиксом.
    Я обычно иду по второму пути, потому что так удобнее.

В таком виде это можно отправлять в Zabbix, чем мы далее и займемся.

Сбор данных из Яндекс Метрики в Zabbix

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Далее все стандартно для Zabbix Server. Создаем новый шаблон и добавляем элемент данных.

Запрос к яндекс api через http агент zabbix

Урл указываем, как в примере выше, только заменяем id сайта на макрос, чтобы удобнее было управлять.

https://api-metrika.yandex.ru/stat/v1/data?&ids={$SITE_ID}&metrics=ym:s:users,ym:s:visits,ym:s:pageviews&dimensions=&date1=today&accuracy=full&limit=100&proposed_accuracy=false&pretty=true

Тип информации - текст. Мы не будем сразу парсить вывод, чтобы не делать лишнюю работу. Распарсим его на нужные данные с помощью зависимых элементов данных.

Добавьте сразу макросы, чтобы не забыть потом это сделать.

Макросы шаблона

Далее создаем зависимый элемент данных. Покажу на одном примере для подсчета уникальных посетителей. В запросе они значатся как users.

Парсинг ответа от yandex api в зависимом элементе заббикса

Делаем ему стандартную предобработку на основе JSONPath и обрезаем лишние символы.

Предобработка json ответа от метрики

Для остальных метрик все будет то же самое, только JSONPath другой. Для визитов - $.body.data[*].metrics[1], для просмотра страниц - $.body.data[*].metrics[2]. Дальше можете добавлять любые необходимые запросы к api и метрики, на их основе. Вот мой пример шаблона, на основе которого написана статья - zabbix-metrika.xml

Вот, что получилось в итоге на примере моего сайта.

Дашборд в zabbix с данными из метрики

На этом у меня все по сбору данных из Яндекс API в Zabbix.

Заключение

Надеюсь, мой опыт работы с различными api в Zabbix окажется полезен кому-то еще. Будут еще похожие статьи со сбором данных по api из внешних сервисов.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.