Передача событий Yandex Cloud Postbox в Yandex Data Streams и их анализ с помощью Yandex DataLens
В этом руководстве вы настроите передачу событий Yandex Cloud Postbox в Yandex Data Streams и визуализацию этих событий с помощью Yandex DataLens для последующего анализа. Источник событий — отправка электронных писем.
Вы сможете реализовать все представленные решения в консоли управления
Чтобы настроить передачу событий и их визуализацию:
- Подготовьте облако к работе.
- Настройте базу данных Managed Service for YDB.
- Создайте поток данных Data Streams.
- Подготовьте ресурсы Yandex Cloud Postbox и Cloud DNS.
- Подготовьте ресурсы Cloud Functions.
- Отправьте письма.
- Настройте визуализацию в DataLens.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за операции с YDB и хранение данных (см. тарифы Yandex Managed Service for YDB);
- плата за хранение данных Data Streams (см. тарифы Yandex Data Streams);
- плата за количество вызовов функции, вычислительные ресурсы, выделенные для выполнения функции, и исходящий трафик (см. тарифы Cloud Functions);
- плата за использование Yandex Cloud Postbox (см. тарифы Yandex Cloud Postbox);
- плата за тариф DataLens (см. тарифы Yandex DataLens).
Создайте сервисный аккаунт
- В консоли управления
выберите нужный каталог. - В списке сервисов выберите Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- Введите имя сервисного аккаунта:
yds-functions. - Нажмите кнопку
Добавить роль и выберите ролиyds.editorиfunctions.functionInvoker. - Нажмите кнопку Создать.
Настройте базу данных Managed Service for YDB
В качестве хранилища событий может использоваться любая подходящая для задач аналитики СУБД. В данном руководстве используется бессерверная база данных Managed Service for YDB. Для других СУБД SQL-запрос создания таблицы и код функции загрузки событий в нее могут отличаться.
Создайте базу данных
- В консоли управления
выберите нужный каталог. - Выберите сервис Managed Service for YDB.
- Нажмите кнопку Создать базу данных.
- Укажите Имя БД
postbox-events-ydb. - В блоке Тип базы данных выберите
Serverless. - Нажмите кнопку Создать базу данных.
Дождитесь запуска БД. В процессе создания БД будет иметь статус Provisioning, а когда станет готова к использованию, статус изменится на Running.
Создайте таблицу
-
На странице Базы данных выберите БД
postbox-events-ydb. -
Чтобы открыть корневую директорию БД, перейдите на вкладку
Навигация. -
Чтобы создать запрос к БД, в правом верхнем углу нажмите кнопку Новый SQL-запрос. Откроется страница Запрос.
-
В поле Запрос введите:
CREATE TABLE postbox_events ( saved_datetime Datetime NOT NULL, eventid String NOT NULL, eventtype String, mail_timestamp Timestamp, mail_messageid String, mail_ch_from String, mail_ch_to String, mail_ch_messageid String, mail_ch_subject String, delivery_timestamp Timestamp, delivery_time_ms Uint64, delivery_recipients String, bounce_bounceType String, bounce_bounceSubType String, bounce_bouncedRecipients String, bounce_timestamp Timestamp, -- message Json, PRIMARY KEY (saved_datetime, eventid) ) -
Нажмите кнопку
Выполнить.После выполнения запроса появится таблица
postbox_events.
Создайте поток данных Data Streams
Создайте поток данных для регистрации событий.
- В консоли управления
выберите сервис Data Streams. - Нажмите кнопку Создать поток.
- Укажите базу данных
postbox-events-ydb. - Введите имя потока данных
postbox-events-stream. - Выберите режим тарификации
По фактическому использованию. - Нажмите кнопку Создать.
Дождитесь запуска потока данных. Когда поток станет готов к использованию, его статус изменится с Creating на Active.
Подготовьте ресурсы Yandex Cloud Postbox и Cloud DNS
Создайте адрес для отправки писем, пройдите проверку владения доменом и настройте конфигурацию для регистрации событий в Data Streams.
Создайте адрес
-
На своем компьютере сгенерируйте ключ
privatekey.pemдля создания DKIM-подписи:Linuxopenssl genrsa -out privatekey.pem 2048 -
Создайте адрес:
Консоль управления- В консоли управления
выберите сервис Cloud Postbox. - Нажмите кнопку Создать адрес.
- В поле Домен укажите домен, с которого будете отправлять письма. Домен может быть любого уровня.
- В поле Селектор укажите селектор, например
postbox. Указанный селектор должен использоваться только в одной ресурсной записи — той, которую необходимо создать при прохождении проверки владения доменом. - В поле Приватный ключ скопируйте содержимое файла приватного ключа
privatekey.pem. - Нажмите кнопку Создать адрес.
- В консоли управления
Пройдите проверку владения доменом
Чтобы отправлять письма, подтвердите владение доменом. После создания адреса на его странице сформируются настройки DKIM-подписи. Их нужно указать в качестве значений ресурсной записи, которую необходимо добавить в вашу доменную зону. Вы можете добавить запись у вашего регистратора или в сервисе Yandex Cloud DNS, если вы делегировали ваш домен Yandex Cloud.
Пример создания ресурсной записи в Yandex Cloud DNS
-
В консоли управления
выберите каталог, в котором находятся адрес и ваша доменная зона.Если у вас еще нет публичной зоны DNS, создайте ее.
-
Выберите сервис Cloud DNS.
-
Выберите вашу доменную зону.
-
Нажмите кнопку Создать запись.
-
В поле Имя укажите часть имени, сгенерированного при создании адреса, без домена в формате
<селектор>._domainkey. Напримерpostbox._domainkey.Примечание
Для других DNS-сервисов может потребоваться скопировать запись целиком. Итоговая запись должна иметь вид
<селектор>._domainkey.<домен>., напримерpostbox._domainkey.example.com.. -
В поле Тип выберите
TXT. -
В поле Значение скопируйте содержимое поля Значение из блока Подтверждение подписи. Обратите внимание, что значение записи нужно взять в кавычки, например:
"v=DKIM1;h=sha256;k=rsa;p=M1B...aCA8" -
Нажмите кнопку Создать.
-
Перейдите в сервис Cloud Postbox.
-
Выберите созданный адрес.
-
Нажмите кнопку Проверить адрес. Если запись верна, статус проверки на странице адреса изменится на
Success.
Ответы DNS-сервера кешируются, поэтому возможны задержки при обновлении ресурсной записи.
Создайте конфигурацию
-
В консоли управления
выберите сервис Cloud Postbox. -
На панели слева выберите
Конфигурации. -
Нажмите кнопку Создать конфигурацию.
-
Введите имя конфигурации
postbox-events-config. -
В блоке Подписки нажмите Добавить:
- Введите название подписки
postbox-events-subscribe. - Выберите поток данных
postbox-events-stream. - Включите опцию Включено, чтобы активировать подписку.
- Введите название подписки
-
Нажмите кнопку Создать конфигурацию.
Подготовьте ресурсы Cloud Functions
Создайте функцию для отправки данных из потока данных в БД, а также триггер, который будет вызывать функцию при регистрации событий в потоке данных.
Получите код функции
Скачайтеpostbox-events.zip на свой компьютер. В архиве находятся файлы index.py и requirements.txt, содержащие код функции.
На своем компьютере выполните следующие операции:
-
Склонируйте репозиторий
с кодом функции:git clone https://github.com/yandex-cloud-examples/yc-postbox-events/blob/main/build/postbox-events.gitПерейдите в директорию с репозиторием. В ней должны появиться файлы
index.pyиrequirements.txt, содержащие код функции. -
Создайте архив с именем
postbox-events.zipи добавьте в него файлыindex.pyиrequirements.txt.
Получите реквизиты для подключения к БД
-
Перейдите в консоль управления
. -
Выберите каталог с вашей БД и перейдите в сервис Managed Service for YDB.
-
Выберите базу данных, для которой нужно получить эндпоинт и путь.
-
Эндпоинт БД указан в блоке Соединение в первой части значения поля Эндпоинт (часть до вхождения
/?database=):Например, эндпоинт для БД в режиме Serverless —
grpcs://ydb.serverless.yandexcloud.net:2135. -
Путь БД указан в блоке Соединение во второй части значения поля Эндпоинт (часть после вхождения
/?database=).Пример пути БД:
/ru-central1/b1gia87mbaom********/etnudu2n9ri3********.
-
Создайте функцию
Для создания функции вам потребуется код функции и реквизиты для подключения к БД.
-
В консоли управления
выберите сервис Cloud Functions. -
Создайте функцию:
- Нажмите кнопку Создать функцию.
- В поле Имя введите имя функции. Например,
postbox-events-function. - Нажмите кнопку Создать.
-
Создайте версию функции:
-
В открывшемся окне Редактор выберите
Python 3.12. -
Отключите опцию Добавить файлы с примерами кода.
-
Нажмите кнопку Продолжить.
-
В поле Способ выберите
ZIP-архив. -
Нажмите кнопку Прикрепить файл и выберите архив
postbox-events.zip. -
В поле Точка входа укажите
index.handler. -
В блоке Параметры укажите:
-
Таймаут —
10. -
Память —
128 МБ. -
Сервисный аккаунт —
yds-functions. -
Переменные окружения:
Ключ Описание Пример значения YDB_DATABASEПуть БД /ru-central1/b1go123e9vjq********/etnu15kr22********YDB_ENDPOINTЭндпоинт БД grpcs://ydb.serverless.yandexcloud.net:2135YDB_TABLEИмя таблицы postbox_events
-
-
Нажмите кнопку Сохранить изменения.
-
Создайте триггер
- В консоли управления
выберите сервис Cloud Functions. - На панели слева выберите
Триггеры. - Нажмите кнопку Создать триггер.
- В поле Имя введите имя триггера. Например,
postbox-events-trigger. - В поле Тип выберите
Data Streams. - В поле Запускаемый ресурс выберите
Функция. - В блоке Настройки Data Streams выберите поток данных
postbox-events-streamи сервисный аккаунтyds-functions. - В блоке Настройки функции выберите функцию
postbox-events-functionи сервисный аккаунтyds-functions. - Нажмите кнопку Создать триггер.
Отправьте письма
-
Создайте сервисный аккаунт
postbox-userc рольюpostbox.senderи статические ключи доступа. -
Отправьте несколько тестовых писем с использованием адреса, созданного ранее.
-
Убедитесь, что письма отправлены — проверьте почту, на которую отправлены письма.
-
Убедитесь, что данные поступают в сервисы:
Консоль управления-
Проверьте поток данных:
-
В консоли управления
выберите сервис Data Streams. -
Выберите поток данных
postbox-events-stream. -
Перейдите на вкладку
Просмотр данных.На графиках должна отобразиться отправка писем.
-
-
Проверьте БД:
-
В консоли управления
выберите сервис Managed Service for YDB. -
Выберите БД
postbox-events-ydb. -
Перейдите на вкладку
Навигация -
Выберите таблицу
postbox_events.В таблице должны появиться записи. В некоторых столбцах может быть значение
NULL— это зависит от типа уведомления, которое было получено от сервиса Yandex Cloud Postbox.
-
-
Настройте визуализацию в DataLens
Чтобы наблюдать за отправкой писем, настройте подключение, создайте датасет, чарты и дашборд.
Создайте подключение
-
Перейдите на главную страницу
DataLens. -
Нажмите кнопку Создать подключение.
-
Выберите коннектор YDB.
-
Укажите параметры подключения:
- Облако и каталог — выберите каталог, в котором выполняете руководство.
- Сервисный аккаунт —
yds-functions. - База данных —
postbox-events-ydb. - Время жизни кеша в секундах —
По умолчанию. - Уровень доступа SQL запросов —
Разрешить подзапросы из датасетов и запросы из чартов.
-
Нажмите кнопку Создать подключение.
-
Введите имя подключения
postbox-events-connectionи нажмите Создать.
Создайте датасет
- Перейдите на главную страницу
DataLens. - Нажмите кнопку Создать датасет.
- На панели слева нажмите
Добавить. - Выберите подключение
postbox-events-connection. - В меню слева выберите таблицу
postbox-eventsи перетащите ее вправо. - Нажмите кнопку Сохранить.
- В открывшемся окне укажите имя датасета
postbox-events-datasetи нажмите Создать.
Создайте чарты
В качестве примера приведено создание чартов Количество событий по дням и Список событий. Аналогичным способом вы можете создать и другие чарты.
Количество событий по дням
-
Перейдите на главную страницу
DataLens. -
Нажмите кнопку Создать чарт.
-
На панели слева нажмите
Выберите датасет и выберитеpostbox-events-dataset. -
Выберите тип чарта Столбчатая диаграмма.
-
Перетащите измерения:
delivery_timestampв секцию X — по оси X будут расположены даты;eventidв секцию Y — значение по оси Y будет соответствовать количеству событий;eventtypeв секцию Цвета — типы событий будут выделены на диаграмме разными цветами.
-
Нажмите кнопку Сохранить.
-
В открывшемся окне укажите имя чарта
Количество событий по днями нажмите Сохранить.
Список событий
-
Перейдите на главную страницу
DataLens. -
Нажмите кнопку Создать чарт.
-
На панели слева нажмите
Выберите датасет и выберитеpostbox-events-dataset. -
Выберите тип чарта Таблица.
-
Перетащите следующие измерения в секцию Столбцы:
saved_datetime— дата и время сохранения события;eventid— тип события;mail_ch_to— адрес получателя;delivery_timestamp— дата и время доставки письма;delivery_time_ms— время доставки в миллисекундах;mail_ch_subject— тема письма;bounce_bounceType— тип ошибки доставки;bounce_bounceSubType— сообщение недоставки.
-
Перетащите измерение
delivery_timestampв секцию Сортировка, чтобы отсортировать таблицу по времени доставки. -
Нажмите кнопку Сохранить.
-
В открывшемся окне укажите имя чарта
Список событийи нажмите Сохранить.
Создайте дашборд
-
Перейдите на главную страницу
DataLens. -
Нажмите кнопку Создать дашборд.
-
Добавьте на дашборд чарты
Количество событий по дням,Список событийи другие, которые вы создали ранее:- На нижней панели нажмите Чарт.
- В открывшемся окне в поле Чарт нажмите кнопку Выбрать и выберите
Количество событий по дням. - Нажмите кнопку Добавить.
- Повторите действия — добавьте другие чарты.
-
Измените размер и положение чартов.
-
Нажмите кнопку Сохранить.
-
В открывшемся окне введите название дашборда
postbox-events-dashboard. -
Нажмите кнопку Создать.
В результате выполнения руководства вы сможете анализировать события на графиках и в таблицах.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы: