Интеграция Яндекс.Метрики c Yandex Cloud (Метрика Про)
В этом руководстве подробно описан процесс настройки интеграции Яндекс.Метрики с базой данных ClickHouse, созданной в Yandex Cloud, чтобы вы смогли получать неагрегированные данные вашего счетчика с рядом преимуществ по сравнению с Logs API.
... ClickHouse, Yandex Cloud, Logs API, неагрегированные данные, интеграция - что это такое и зачем все это нужно? Действительно, с первых строк для простого обывателя материал уже может показаться запутанным и неактуальным. И этот первичный страх перед неизведанным (новыми терминами, определениями, инструментами) заставляет сразу же закрыть вкладку браузера и уйти, так и не дочитав публикацию до конца. Но с другой стороны, новый функционал Яндекс.Метрики должен побудить некоторых энтузиастов и владельцев счетчиков разобраться в том, как устроена интеграция Метрики с Яндекс Облаком, входящая в пакет Метрика Про.
Надеюсь, вы относитесь именно ко второй категории! Если да, тогда поехали!
Агрегированные и неагрегированные (сырые) данные
Владелец сайта после установки счетчика Яндекс.Метрики, как правило, работает в интерфейсе сервиса. Он использует отчеты, просматривает графики, анализирует данные в таблицах, меняет параметры и показатели, накладывает фильтры, сравнивает сегменты и аудитории за разные диапазоны дат, и многое другое.
В Яндекс.Метрике ключевую роль играют параметры (группировки) и показатели, потому что любые отчеты, которые вы используете при решении задач, состоят из целого набора различных метрик. В интерфейсе Метрики вы видите, так называемые, агрегированные (суммарные или обобщенные) данные:
Характерная строка Итого и средние над таблицей свидетельствует об этом. Это означает, что со статистикой в отчете уже были совершены определенные действия. Как правило, это простые арифметические операции - сложение, вычитание, умножение и деление. То есть над ними поработали за вас. А вы в отчетах видите уже готовые, обобщенные наборы данных, посчитанные заранее.
Агрегированные данные рассчитываются для определенной группы визитов. Например, метрика Время на сайте вычисляется для всех переходов из какого-либо источника трафика, всех визитов от посетителей мужского пола или всех визитов с планшетов. Именно с агрегированными данными вы всегда работаете в интерфейсе Яндекс.Метрики.
Но если агрегированная статистика - это уже переработанные самой Метрикой данные, то что является основой таких расчетов? Какие данные и в каком виде Яндекс.Метрика использует для того, чтобы рассчитать Итого и средние и остальные показатели в отчетах?
Основой для этих расчетов служат сырые данные - записи об отдельных визитах или просмотрах. Например, вот так выглядят данные по моему счетчику за несколько дней:
Таблицу с такими записями можно получить через Logs API. Вы делаете запрос на те данные, которые хотите выгрузить, и вам выдается список тех посещений пользователей, которые были на вашем сайте. Можно увидеть идентификатор визита, Client ID пользователя, время его пребывания на сайте, просмотры страниц, регион, источник перехода, достижение целей, браузер, модель мобильного телефона и многое другое.
Сырые данные необходимы, чтобы получить новую статистику помимо той, что доступна в отчетах. Данные можно загрузить в свою базу данных и далее гибко ими управлять, а также объединять данные Яндекс.Метрики с другими источниками. Хранить и управлять полученными данными можно с помощью ClickHouse.
Статистику вашего счетчика Метрики Яндекс хранит тоже в ClickHouse, но доступ к базе данных есть только у него. А вы можете создать свой собственный ClickHouse-кластер и загрузить в него данные Яндекс.Метрики с помощью Logs API.
Какие задачи можно решать с помощью сырых данных?
Например:
- построить воронки на любых событиях, в том числе для электронной торговли (в Метрике воронки частично реализованы через Составную цель. Однако у нее есть недостатки - все шаги в составной цели должны быть выполнены в рамках одного визита посетителя, также в качестве шага нельзя использовать офлайн-конверсии, например, звонки);
- настроить передачу данных в режиме реального времени на любые реакции, изменения алертов, триггеров, адаптив контента, запуск цепочек коммуникаций на вашем сайте и многое другое;
- создать различные карты (путей пользователей от страницы к странице, по событиям, по источникам трафика и т.д.);
- проанализировать возвращаемость пользователей, оценить удержание клиентов, построить когортный анализ;
- создать собственные модели атрибуции, увидеть ассоциированные конверсии;
- обогатить события на сайте данными из других систем, то есть построить сквозную аналитику, объединив информацию из разных источников;
- воссоздать любые базовые отчеты - посещаемость, по utm_меткам, популярные страницы и прочее;
- построить различные дашборды в Yandex DataLens и связать статистику Метрики с другими наборами данных вашей организации или вообще с данными, которые могут находиться вне вашей базы данных (например, объединение информации о ваших заказах с информацией о погоде, чтобы узнать, как дождь влиял на итоговое количество обращений и выручку компании).
С неагрегированными данными можно работать очень гибко. Именно поэтому все крупные организации и компании при построении своей собственной аналитики используют сырые данные и Logs API. А благодаря новой Метрике Про и готовой интеграции с Yandex Cloud вы сможете сделать не только все вышеперечисленное, но еще и будете обладать рядом преимуществ по сравнению с существующим способом выгрузки данных по LogsAPI, который доступен для всех нас.
Преимущества готовой интеграции Яндекс.Метрики для Yandex Cloud
К таким преимуществам можно отнести следующий функционал:
- потоковая передача данных в реальном времени (задержка от момента события до появления записи о нем в ClickHouse до 15 минут);
- расширенный набор полей по контентной аналитике, данным о клиентах и заказах из CRM, дополнительные данные о ecommerce-событиях, например, просмотр товара и добавление в корзину, идентификатор рекламного клика Директа (yclid), показатель наличия параметра у хита для подсчета количества хитов (см. ниже).
Для электронной торговли - это:
- тип события
- список, в который входят товары, связанные с транзакцией
- позиция товара в списке или коллекции
- бренд, к которому относится товар
- купон, погашенный при транзакции
Для контентной аналитики:
- тематики и авторы статьи
- источник трафика для статьи
- перешел ли посетитель на другую статью на сайте
- идентификатор статьи, с которой перешли на текущую
- время, в течение которого пользователь видел статью
- доскроллы статьи
Детализация источников:
- идентификатор рекламного клика Директа (yclid)
- идентификатор рекламного объявления
- тип Турбо (является ли страница турбо или нет)
- площадка размещения
- идентификатор мессенджера
- рекомендательная система
- переход по qr-коду
Данные о клиентах и заказах из CRM:
- Hash OrderID и Hash UserID
- версия заказа
- время создания и время изменения заказа
- статус заказа
- названия и количество товаров в заказе
Все эти поля даже при выгрузке из Logs API не будут вам доступны. Они есть только в новой интеграции.
Полный список выгружаемых полей данных на уровне визитов и просмотров (хитов) для новой интеграции размещен в официальной документации Яндекса по этой ссылке, а для Logs API - здесь:
Хит — это событие, которое учитывается Метрикой. Такими событиями являются:
- просмотры страниц;
- достижение любой цели, созданной в счетчике, включая JavaScript-события;
- отправка параметров визитов.
Хитом не считаются события, которые передаются при инициализации счетчика.
Примечание: вышеперечисленные поля в Метрике Про будут доступны вам в том случае, если у вас произведены соответствующие настройки в Яндекс.Метрике (отслеживание электронной торговли, контентной аналитики и т.д.).
Как попробовать интеграцию?
У вас появилось желание попробовать новую интеграцию в пакете Метрика Про? Тогда вы можете перейти по ссылке ниже и оставить заявку на подключение коннектора Яндекс.Метрики c Yandex Cloud к своему счетчику. Тестовый период составляет 1 месяц. Приобрести пакет Метрика Про можно у партнеров Яндекса.
Команда Яндекса с радостью предоставит вам тестовый период, чтобы вы смогли самостоятельно пройтись по этому руководству и выполнить все шаги настройки.
Попробовать новую интеграцию
Последовательность настройки
Теперь перейдем к тому, что вам предстоит сделать. Вы, как владелец счетчика Метрики (или пользователь, у которого есть права на редактирование) с расширенными возможностями пакета Метрика Про, должны выполнить следующие действия:
- создать облако в Yandex Cloud;
- добавить платежный аккаунт;
- создать каталог;
- создать кластер ClickHouse;
- настроить подключение к созданному кластеру;
- в сервисе Yandex Data Transfer подключить источник данных, выбрав соответствующие типы данных (хиты / визиты) и указав требуемый набор полей, а также добавить сам счетчик Яндекс.Метрики, из которого нужно выгружать статистику, и OAuth-токен посетителя, у которого есть доступ к счетчику на редактирование;
- связать источник (вашу Яндекс.Метрику) и приёмник (созданный кластер ClickHouse), образовав трансфер;
- запустить трансфер.
Поскольку данная интеграция позволяет передавать данные практически в real-time (в реальном времени), то в ней есть свои особенности. Потоковая передача подразумевает изменение данных в визитах по мере поступления новых событий, поэтому в выгружаемых данных будут разные версии одного визита. Это нужно учитывать при построении аналитики.
Сам принцип работы интеграции представлен в виде схемы в официальной документации Яндекса:
Основной элемент схемы - сервис Yandex Data Transfer, который предназначен для логического переноса данных между источниками и приёмниками. С одной стороны настраивается подключение к Яндекс.Метрике (источник), а с другой - кластер ClickHouse (приёмник) в Yandex Cloud. Именно благодаря Data Transfer после настройки связи данные счетчика сначала записываются в Logbroker и во внутреннее хранилище сервиса, а затем оттуда с помощью все того же Data Tranfer переносятся в вашу базу данных ClickHouse.
После этого вы можете работать с неагрегированными данными и расширенным набором полей Яндекс.Метрики очень гибко, используя SQL-команды и создавая дашборды в Yandex DataLens для системного управления вашей организацией.
Теперь давайте разбираться во всех тонкостях и нюансах интеграции.
Создание облака в Yandex Cloud
Yandex Cloud – облачная платформа, где каждый может создавать и совершенствовать свои цифровые сервисы, используя инфраструктуру и уникальные технологии Яндекса.
В состав Yandex Cloud входят инфраструктурные сервисы, сервисы для управления данными, инструменты для разработки облачных приложений и моделей машинного обучения и собственные сервисы на основе ML.
В состав Яндекс.Облака входит бесплатный сервис визуализации и анализа данных Yandex DataLens, который вы сможете использовать в связке с базой данных ClickHouse после выполненной интеграции, и создать на основе ваших сырых данных Яндекс.Метрики абсолютно любые дашборды для принятия управленческих решений.
Чтобы начать работу в Yandex Cloud, вам необходим аккаунт Яндекса. Это может быть тот же самый логин, на котором у вас есть доступ к счетчику Яндекс.Метрики. После авторизации перейдите по адресу cloud.yandex.ru и нажмите на кнопку Подключиться:
Затем вам необходимо создать рабочее пространство. По умолчанию будет создана новая организация с префиксом organization- и названием вашего аккаунта. Вы можете создать новую организацию, а также изменить название облака.
Проделав это, нажмите кнопку Создать:
При регистрации в Yandex Cloud для пользователя будет создано облако – отдельное рабочее пространство, для которого этот пользователь будет назначен владельцем. В облаке будет создан каталог default и сеть default.
Создание платежного аккаунта
Для новых клиентов Yandex Cloud предоставляется пробный период. Он позволяет вам получить практический опыт использования Яндекс.Облака, не оплачивая потребленные ресурсы. В рамках пробного периода вашему платежному аккаунту выдается грант сроком действия 60 дней.
Вы можете воспользоваться пробным периодом, если вы:
- никогда не приобретали услуги Yandex Cloud;
- ранее не активировали пробный период.
Этого гранта должно быть достаточно, чтобы вы смогли попробовать настроить интеграцию Яндекс.Метрики с Yandex Cloud, используя кластер ClickHouse.
После того, как вы создали свое первое облако, добавьте платежный аккаунт, нажав на кнопку Создать аккаунт:
Все расчеты в Yandex Cloud будут вестись в рублях. При выборе оплаты банковской картой используйте карты, выпущенные российскими банками. При заполнении платежного аккаунта укажите страну, резидентом которой вы являетесь. Все плательщики, привязанные к одному аккаунту на Яндексе, должны быть с одинаковым резидентством: плательщики должны являться или резидентами РФ или РК, или только нерезидентами РФ и РК.
Укажите имя платежного аккаунта. Имя будет отображаться в списке ваших платежных аккаунтов и поможет выбрать нужный.
Если ваш аккаунт на Яндексе привязан к личному кабинету Яндекс.Баланса, в блоке Плательщики будет показан список доступных плательщиков. Выберите нужного. Если нужного в списке нет, выберите опцию Новый плательщик.
Плательщик – физическое лицо, ИП или организация, которое оплачивает потребленные ресурсы сервисов Yandex Cloud. Фактически, плательщик — это платежные реквизиты, используемые при регистрации договоров, выставлении счетов или списании средств с банковской карты.
Выберите тип плательщика: Физическое лицо или Юридическое лицо или ИП. Если плательщик – нерезидент РФ или РК, доступен только один тип плательщика Юридическое лицо (нерезидент РФ).
Выбрав тип Физическое лицо, укажите ваши фамилию, имя, отчество, почтовый адрес и привяжите банковскую карту. нажав кнопку Добавить карту. Укажите данные карты: 16-значный номер, срок действия, код CVV (с обратной стороны карты):
Принимаются банковские карты Visa, MasterCard и МИР.
- Резиденты РФ ведут расчеты в RUB и могут использовать для оплаты карты, выпущенные только российскими банками;
- Резиденты РК ведут расчеты в KZT и могут использовать для оплаты карты, выпущенные только нероссийскими банками;
- Резиденты других стран ведут расчеты в USD и могут использовать для оплаты карты, выпущенные только нероссийскими банками.
Заполнив данные, нажмите кнопку Привязать. Для проверки валидности карты на вашем счету будет заблокирована незначительная сумма (~ 11 рублей). Эти средства не списываются и будут снова доступны после завершения проверки и разблокировки. Срок разблокировки несписанных средств зависит от условий работы вашего банка.
Если карта прошла валидацию, вы увидите ее в списке привязанных:
Если вы выбрали тип Юридическое лицо или ИП, тогда вам потребуется указать данные плательщика (название организации, почтовый индекс, фактический и юридический адреса, ИНН, КПП, БИК, расчетный счет). При выборе способа оплаты Банковский перевод платежный аккаунт будет создан в статусе «Не подтвержден». На вашу почту, указанную в аккаунте Яндекса или Яндекс.Коннекта, будет отправлено письмо с описанием дальнейших действий. Активация платежного аккаунта может занять до трех рабочих дней.
Привязка банковской карты необходима только для создания платежного аккаунта. Средства с привязанной карты могут быть списаны, только если активна платная версия и вы пользовались сервисами Yandex Cloud. В любой момент после создания платежного аккаунта вы можете изменить способ оплаты.
На последнем шаге заполните контактные данные – электронную почту и телефон:
Эта информация нужна не только для связи с вами, но и для выставления счетов и финансовых документов.
Новым клиентам Yandex Cloud доступен стартовый грант. Он может быть выдан физическому или юридическому лицу только один раз, если ранее вы:
- никогда не приобретали услуг Yandex Cloud;
- не активировали пробный период.
Если это ваш первый платежный аккаунт в Yandex Cloud, вам будет доступно подключение пробного периода. Для этого обязательно поставьте галочку Включить пробный период:
После создания платежного аккаунта пробный период активируется автоматически.
Примечание: включение пробного периода происходит только на этапе создания первого платежного аккаунта в консоли управления Yandex Cloud.
Стартовый грант действует 60 дней. Размер и валюта гранта зависят от страны, в которой вы проживаете:
- для резидентов РФ размер гранта составляет не менее 4000 ₽, с учетом НДС;
- для резидентов РК размер гранта составляет не менее 24 000 ₸, с учетом НДС;
- для нерезидентов РФ размер гранта составляет не менее 50 $, без учета налогов и сборов.
Подключая пробный период, помните, что после его завершения ваши ресурсы будут приостановлены. Для возобновления работы потребуется перейти на платную версию.
Если не подключать пробный период на данном этапе, ваш аккаунт будет создан с платным потреблением. Об этом будет свидетельствовать другое уведомление:
В завершение нажмите кнопку Создать:
После этого вас перенаправит на страницу Биллинга, на которой будут отображены ваши платежные реквизиты и уведомление об активированном пробном периоде:
На электронную почту также придет письмо о завершении регистрации и активации пробного периода. А информация о стартовом гранте и вашем балансе будет представлена чуть ниже:
А статус вашего платежного аккаунта будет Active:
Этот грант в дальнейшем вы можете использовать для сервиса Yandex Managed Service for ClickHouse и создания кластера ClickHouse (см. ниже).
Создание каталога
Каталог – это пространство, в котором создаются и группируются ресурсы Yandex Cloud.
Чтобы создать новый каталог, перейдите по ссылке console.cloud.yandex.ru в консоль управления и напротив вашего облака нажмите на иконку с тремя точками и выберите Создать каталог:
Введите имя каталога (например: yandex-metrika). Требования к имени:
- длина – от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ – буква. Последний символ – не дефис.
Описание можно оставить пустым. В настройках Дополнительно оставьте активной галочку Создать сеть по умолчанию:
Будет создана сеть с подсетями в каждой зоне доступности. Также в этой сети будет создана группа безопасности по умолчанию, внутри которой весь сетевой трафик разрешен.
Облачная сеть – это аналог традиционной локальной сети в дата-центре. Облачные сети создаются в каталогах и используются для передачи информации между облачными ресурсами и связи ресурсов с интернетом. Для виртуальных машин Yandex Compute Cloud и хостов баз данных доступ из интернета и в интернет открыт через публичные IP-адреса.
В завершение нажмите кнопку Создать.
Создание кластера ClickHouse
После добавления каталога необходимо создать кластер ClickHouse. Он нужен для хранения и управления полученными данными из Яндекс.Метрики с помощью Yandex Data Transfer. Фактически, это ваша база данных, в которой будут размещаться неагрегированные данные Яндекс.Метрики с нужным вам перечнем полей.
Выделите свой каталог, созданный на предыдущем шаге, и в правой части окна в разделе Все сервисы выберите Managed Service for ClickHouse:
Yandex Managed Service for ClickHouse помогает разворачивать и поддерживать кластеры баз данных ClickHouse в инфраструктуре Yandex Cloud. ClickHouse идеально подходит для выполнения аналитических запросов на структурированных больших данных в режиме реального времени.
Каждый кластер состоит из одного или нескольких хостов БД – виртуальных машин с развернутыми СУБД. Вы сами определяете количество хостов в кластере, технические характеристики и зону доступности для каждого хоста, размер хранилища.
Чтобы начать работу, просто нажмите кнопку Создать кластер ClickHouse:
На открывшейся странице настроек кластера заполните все необходимые данные.
Введите имя кластера в поле Имя кластера. Оно должно быть уникальным в рамках каталога:
При желании вы можете добавить описание. Допустимая длина – до 256 символов.
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
- PRODUCTION – для стабильных версий ваших приложений;
- PRESTABLE – для тестирования, в том числе самого сервиса Managed Service for ClickHouse. В Prestable-окружении раньше появляются новая функциональность, улучшения и исправления ошибок. При этом не все обновления обеспечивают обратную совместимость.
Я рекомендую выбирать сразу PRODUCTION:
Теперь выберите версию ClickHouse, которую будет использовать кластер Managed Service for ClickHouse:
- для большинства кластеров рекомендуется выбрать самую новую LTS-версию;
- для кластеров, в которых планируется использовать гибридное хранилище, рекомендуется выбрать версию не ниже 22.8.
Из выпадающего списка Версия выберите самую новую/последнюю LTS-версию:
На момент публикации этого руководства последняя LTS-версия 23.3.
На следующем шаге необходимо выбрать платформу, тип виртуальной машины и класс хостов – он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД.
Примечание: все доступные варианты перечислены в разделе Классы хостов.
При изменении класса хостов для кластера меняются характеристики всех уже созданных экземпляров. Для тестовых версий, небольших баз данных и рекламных аккаунтов, в которых не так много статистики в Яндекс.Директе, должно хватить и самой простой машины.
В блоке Ресурсы из выпадающего списка Платформы выберите Intel Cascade Lake:
А тип виртуальной машины – burstable:
А класс хоста – b2.medium:
В дальнейшем вы сможете увеличить вычислительные мощности при необходимости.
В блоке Размер хранилища можно выбрать тип хранилища:
- Network SSD – быстрые сетевые диски;
- Network HDD – стандартные сетевые диски.
От выбранного типа дисков зависит, с каким шагом можно будет изменить размер хранилища:
- хранилище на локальных SSD-дисках для платформ Intel Broadwell и Intel Cascade Lake – с шагом 100 ГБ;
- хранилище на локальных SSD-дисках для платформы Intel Ice Lake – с шагом 368 ГБ;
- хранилище на нереплицируемых SSD-дисках – с шагом 93 ГБ.
Поскольку вы создаете свой первый кластер ClickHouse для настройки интеграции с Яндекс.Метрикой, вы можете взять самый простой тип диска (network-hdd) и минимальное по объему хранилище (на 10 ГБ). Это позволит вам удешевить итоговый тариф на аренду вычислительных ресурсов:
Но это лишь рекомендация, и итоговой размер диска будет зависеть от количества данных вашего счетчика Яндекс.Метрики, которые вы будете хранить в ClickHouse. У одних проектов их может быть менее 10 ГБ, у кого-то гораздо больше. Сложно оценить заранее объем дискового пространства, так как в параметры визитов, например, можно отправлять разное. На начальном этапе (во время тестирования) вы можете приобрести конфигурацию поменьше, потом посмотреть сколько за день или неделю данных по объему у вас накапливается и исходя из этого покупать дополнительное место. Меньше 10 ГБ кластер в любом случае не собрать, поэтому в этом руководстве я выбираю самую простую и недорогую конфигурацию кластера ClickHouse. Вы можете поступить точно так же.
Выбрав данную конфигурацию, справа вы увидите итоговую стоимость обслуживания (аренды):
Вышеприведенная конфигурация не является официальной рекомендацией команды Яндекса. Я привел настройки исходя из своей практики. Вы можете ориентироваться на другие настройки кластера ClickHouse. Если с этими данными планируется работа - конфигурацию нужно увеличивать соразмерно объему обрабатываемых данных. Если необходима дополнительная отказоустойчивость - необходимо настраивать шардирование.
Пропустите блок Хосты и сразу же переходите к настройкам СУБД.
- Управление пользователями через SQL – Выключено;
- Управление базами данных через SQL – Выключено (автоматически);
- Имя пользователя – владелец базы данных, от имени которого создаются остальные пользователи. Допустимая длина — от 1 до 32 символов;
- Пароль – минимум 8 символов;
- Имя БД – допустимая длина – от 1 до 63 символов. Должно удовлетворять регулярному выражению;
- Гибридное хранилище – нет.
Настройки в интерфейсе будут выглядеть так:
Сохраните данные Имя пользователя, Пароль и Имя БД. Они вам понадобятся при настройке трансфера.
Сетевые настройки оставьте без изменений. В сервисных настройках кластера обязательно поставьте галочки напротив:
- Доступ из DataLens – разрешает анализировать данные из кластера в сервисе Yandex DataLens;
- Доступ из консоли управления – разрешает выполнять SQL-запросы к базам кластера из консоли управления Yandex Cloud;
- Доступ из Data Transfer в режиме Serverless - разрешает доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме.
В завершение нажмите кнопку Создать кластер:
Поздравляю! Вы только что создали кластер базы данных ClickHouse в Yandex Cloud. После этого вас перенаправит на страницу со всеми созданными кластерами:
Подождите, пока кластер будет создан. Это займет несколько минут.
Когда кластер будет создан, в столбце Доступность статус с Creating изменится на Alive.
Теперь вы можете настроить подключение к созданному кластеру.
Создание трансфера
Перейдите в облако по ссылке console.cloud.yandex.ru и в сервисах выберите свой собственный кластер ClickHouse (Managed Service for ClickHouse):
Нажмите на имя кластера, чтобы провалиться внутрь его настроек:
На открывшейся странице прокрутите в самый низ, до раздела Трансферы. Выберите его:
Перейти в сервис Yandex Data Transfer можно было и напрямую из каталога сервисов Yandex Cloud, как вы это делали с Managed Service for ClickHouse.
Создайте трансфер:
Он позволит вам передавать неагрегированные данные из Яндекс.Метрики в созданный кластер ClickHouse. Но для этого нужно будет настроить эндпоинты:
- БД-источник (счетчик Яндекс.Метрики);
- БД-приёмник (кластер ClickHouse).
Эндпоинт-источник описывает настройки базы данных, из которой будет передаваться информация с помощью Data Transfer, а эндпоинт-приёмник - базы, в которую будет производиться перенос. Вы можете создать, изменить, клонировать или удалить такие эндпоинты. Подробнее про их управление читайте в официальной справке Yandex Cloud.
На странице создания трансфера задайте ему название (например, metrika-transfer):
Метки и описание можно не добавлять, а сразу перейти к созданию эндпоинтов. Напротив источника нажмите Создать новый:
Эндпоинт-источником будет являться ваш счетчик Яндекс.Метрики, поэтому в его названии вы можете задать metrica-endpoint:
В качестве типа базы данных из выпадающего списка выберите Metrica:
Вам откроются параметры эндпоинта, где вам необходимо задать номер счетчика Яндекс.Метрики, для которого у вас есть доступ к пакету Метрика Про, а также токен пользователя, у которого есть доступ к счетчику на редактирование.
Чтобы найти идентификатор счетчика, перейдите по ссылке и скопируйте значение напротив нужного счетчика:
В параметрах эндпоинта нажмите +Счетчик и вставьте в поле скопированный идентификатор:
Чтобы получить токен, нажмите на иконку с вопросительным знаком и перейдите по ссылке:
У вас должно открыться окно авторизации для аккаунта Яндекс.Метрики. Нажмите кнопку Войти как… и тогда сервис Yandex Data Transfer получит доступы к созданию счетчиков, изменению параметров своих и доверенных счетчиков, а также получению статистики, чтению параметров своих и доверенных счетчиков.
На следующей странице отобразится ваш OAuth-токен. Он будет также добавлен в адресную строку:
Сохраните его и вставьте в поле параметра эндпоинта:
Никому не показывайте и никогда не передавайте OAuth-токен третьим лицам. С его помощью можно получить доступ к данным вашего счетчика Яндекс.Метрики.
Теперь осталось выбрать перечень полей (группировок и метрик), которые вы хотите передавать из Яндекс.Метрики. Как вы уже знаете, они бывают уровня Хиты (Просмотры) и Визиты. В зависимости от того, какие данные вы хотите выгрузить, в настройках эндпоинта вы выбираете нужные параметры и показатели:
В качестве примера я выберу оба уровня - и Визиты, и Хиты. Для этого поочередно измените значение с Выключено на Включено:
Ниже вам откроется список полей, которые нужно экспортировать. Помимо выбранных полей из данного списка, всегда экспортируются несколько обязательных полей.
Проделайте тоже самое для другого уровня:
На момент написания данного руководства вы можете выгрузить 101 поле на уровне хитов и 218 полей на уровне визитов:
При выборе полей обязательно учитывайте объем ваших данных, хотя бы примерный. Ведь чем больше статистики из Яндекс.Метрики вы будете выгружать, чем больше полей в настройках трансфера укажите, тем больше нужен объем файлового хранилища в ClickHouse. А он, в свою очередь, влияет на итоговую конфигурацию кластера и ежемесячную плату в Yandex Cloud.
После все проделанных настроек нажмите кнопку Создать.
Теперь в настройках трансфера добавьте новый приёмник:
Эндпоинт-приёмником будет являться ваш кластер ClickHouse, поэтому в его названии вы можете задать clickhouse-endpoint:
В качестве типа базы данных из выпадающего списка выберите ClickHouse:
Задайте следующие настройки подключения:
- Тип подключения - Кластер Managed Service for ClickHouse;
- Кластер Managed Service for ClickHouse - ваш кластер;
- База данных, Пользователь, Пароль - данные, которые вы вводили при настройке кластера ClickHouse;
- Политика очистки - Drop (используйте эту опцию, чтобы при любой активации трансфера в базу-приемник всегда передавалась самая последняя версия схемы таблиц из источника);
- Шардирование - Без шардирования;
- Расширенные настройки оставьте без изменений.
В завершение нажмите кнопку Создать. Вас перенаправит на страницу создания трансфера. Там вы должны увидеть следующие данные:
В параметрах трансфера тип трансфера должен быть задан как Репликация, то есть непрерывное получение изменений из источника и применение их на приемнике. Для выбранных эндпоинтов ваш трансфер должен находиться в стадии Preview.
Сервисы на стадии Preview подойдут для разработчиков, которые готовы использовать их в разработке своих приложений или в тестовом окружении. Для Preview-сервисов не действует соглашение об уровне обслуживания (SLA), и их использование не тарифицируется.
В параметрах трансфера вы также можете указать список объектов для переносов и трансформацию данных, то есть при выгрузке данных из Яндекс.Метрики сразу же их преобразовывать, чтобы в ClickHouse они уже были видоизмененные.
Поскольку нам это делать не нужно, и мы хотим получить сырые, неагрегированные данные без каких-либо искажений, то просто завершите создание трансфера с помощью кнопки Создать:
После этого вам откроется страница со всеми вашими созданными трансферами:
Статус Создан не означает, что он автоматически начнет загрузку данных из Яндекс.Метрики в ваш кластер ClickHouse. Для его запуска трансфер необходимо активировать. Для этого нажмите на иконку с тремя точками и выберите Активировать:
После этого статус изменит с Создан на Создается:
А еще через некоторое время трансфер активируется, и статус изменится на Реплицируется:
Он будет свидетельствовать о том, что трансфер начал получать данные из вашего счетчика Яндекс.Метрики по выбранным полям, обрабатывать их и складывать в указанный кластер ClickHouse.
Важно: исторические данные вашего счетчика выгружаться с помощью трансфера не будут. В ClickHouse будут передаваться только те данные, которые появились в Яндекс.Метрике после настройки интеграции с Yandex Cloud, то есть после создания трансфера.
Вы также можете столкнуться со статусом Ошибка. Например, когда я впервые настраивал связь, то столкнулся с таким статусом error: "failed to execute metrika activate hook: error activating metrika transfer: error creating/syncing metrika cloud export: error syncing counters for metrika export: error adding counter 33437348 to export: Access is denied"
Это ошибка говорит о том, что у вас доступ к счетчику не с правами на редактирование. Обязательно проверьте, чтобы в интерфейсе Метрики к той учетной записи, к которой вы получали OAuth-токен на шаге выше для пользователя был доступ на редактирование:
Проверка интеграции
Отлично! Интеграцию Яндекс.Метрики с Yandex Cloud настроили. Но как проверить корректность передачи данных и узнать, передаются ли вообще данные в кластер ClickHouse? Для мониторинга процесса передачи в Data Transfer доступны метрики и логи. Чтобы увидеть, какую работу он выполняет, перейдите на страницу Yandex Data Transfer с вашим созданными трансфером и нажмите на него:
На открывшейся странице вы увидите меню из следующих разделов - Обзор, Логи, Операции и Мониторинг:
Вы можете открыть поочередно эти раздела. Например, Логи:
В них будут отображаться различные статусы работы Yandex Data Transfer, такие как DEBUG, INFO, WARN, ERROR и подробная информация о каждом действии в отдельной записи журнала. Если среди таких записей нет ошибок, то значит трансфер работает в штатном режиме. Ваша задача - просто проверить логи на наличие ошибок, и в случае их частого появления, связаться с техподдержкой Яндекс.Метрики или командой Yandex Cloud. Сведения в логах - технические, предназначены для разработчиков, поэтому что-либо расшифровать самостоятельно вам вряд ли получится. При создании тикета обязательно подробно опишите проблему и приложите код ошибки, время, а также детальную информацию из журнала записи.
Также вы можете отключить трансфер, его модифицировать или вообще удалить. Для этого перейдите на вкладку Обзор и в правом верхнем углу выберите нужную опцию:
Проверить передачу данных можно и по-другому. Если кластер ClickHouse является приёмником, значит после трансфера статистика Яндекс.Метрики должна оказаться в созданной базе данных. Вы можете перейти в сервис Yandex Managed Service for ClickHouse из своего облака:
И нажать на созданный кластер, провалившись в него:
Точно так же, как и у Yandex Data Transfer, на открывшейся странице вы увидите меню из разных разделов:
Однако их здесь значительно больше. Есть Логи, Мониторинг и Операции, а еще есть Хосты, Шарды, Группы шардов, Базы данных, Словари, Машинное обучение, SQL, DataLens и многое другое.
Поскольку Yandex Data Transfer передает данные потоково практически в реальном времени (задержка от момента события до появления записи о нем в ClickHouse до 15 минут), то подключившись к собственной базе данных, вы можете увидеть созданные таблицы с выбранным количеством полей Метрики.
Для этого перейдите в раздел SQL и подключитесь к своему базе данных ClickHouse, введя Имя пользователя БД и Пароль:
После подключения выберите из списка свою базу данных (=Имя БД, которое вы сохраняли при создании кластера ClickHouse):
Если вы так же, как и я, настроили трансфер на оба уровня - и Визиты, и Хиты, то внутри вашей базы данных будет храниться два файла с префиксами hits_ и visits_ соответственно:
Нажмите на саму таблицу. Тогда вы провалитесь внутрь нее и сможете увидеть перечень столбцов и строк, которые вы указали при настройке трансфера. И как только в Яндекс.Метрике будут зарегистрированные новые данные, они сразу же будут отправлены в ClickHouse из Яндекс.Метрики с помощью Yandex Data Transfer:
Посмотреть объем выгруженных данных можно через SQL, а можно через DBeaver (там сразу отображается размер таблиц). Но самым простым способом является мониторинг загрузки в разделе Хосты вашего кластера ClickHouse:
Яндекс рекомендует, чтобы значение в столбце Диск не превышало 80%. Мой проект не может похвастаться большим количеством данных, так как он всего лишь является блогом со статьями. Но если для вашей организации слова "big data" значат больше, чем просто "большие данные", и при этом вы выгружаете из Яндекс.Метрики в ClickHouse множество полей с хитами и визитами, то на начальном этапе при оценке кластера ориентируетесь на 1 ГБ в сутки, чтобы впоследствии не получилось такого, что ваш диск заполнится до того, как вы поймете сколько вообще данных загружается ежедневно.
Как работать с данными?
Что делать дальше после настройки интеграции Яндекс.Метрики с Yandex Cloud? Во-первых, чтобы трансфер работал постоянно, не забудьте следить за конфигурацией своего кластера ClickHouse и объемом жесткого диска, а также своевременно производить оплату облака.
А во-вторых, в разделе SQL справа от таблицы размещен редактор SQL-запросов, который позволит вам гибко управлять сырыми данными Яндекс.Метрики. Примеры некоторых запросов размещены в официальной справке Яндекса. Делать это можно в разделе SQL или непосредственно в DataLens, если вы сразу хотите создать QL-чарт (визуализации на основе SQL-запросов) и разместить его на дашборде.
Работу с неагрегированными (сырыми) данными я подробно рассмотрю в другом материале своего блога.