Создание событий Datadog из результатов dbt
Введение
Это руководство научит вас, как создать и разместить базовое Python‑приложение, которое будет отправлять события выполнения заданий dbt в Datadog. Для этого, когда задание dbt завершается, приложение будет создавать запись лога для каждого узла, который был выполнен, включая всю информацию об узле, предоставляемую Discovery API.
В этом примере мы будем использовать fly.io для хостинга и запуска сервиса. fly.io — это платформа для запуска полнофункциональных приложений без необходимости настраивать серверы и сопутствующую инфраструктуру. Такой уровень использования без проблем укладывается в рамки бесплатного тарифа. Вы также можете использовать альтернативные инструменты, такие как AWS Lambda или Google Cloud Run.
Предварительные требования
В этом руководстве предполагается, что вы уже знакомы со следующим:
- dbt Webhooks
- CLI-приложения
- Развёртывание кода в serverless-исполнителях, таких как fly.io или AWS Lambda
Клонирование репозитория dbt-cloud-webhooks-datadog
Этот репозиторий содержит пример кода для проверки вебхука и создания логов в Datadog.
Установка flyctl и регистрация на fly.io
Следуйте инструкциям для вашей операционной системы в документации fly.io, затем выполните следующие команды в командной строке:
Перейдите в директорию, содержащую клонированный вами репозиторий на шаге 1:
#пример: замените на ваш фактический путь
cd ~/Documents/GitHub/dbt-cloud-webhooks-datadog
Зарегистрируйтесь на fly.io:
flyctl auth signup
Ваша консоль должна показать successfully logged in as YOUR_EMAIL, когда вы закончите, но если этого не произошло, войдите в fly.io из командной строки:
flyctl auth login
Запуск вашего приложения на fly.io
Запуск вашего приложения публикует его в интернете и делает готовым к приему событий вебхуков:
flyctl launch
-
Вы увидите сообщение о том, что найден существующий файл
fly.toml. Введитеy, чтобы скопировать его конфигурацию в ваше новое приложение. -
Выберите имя приложения по вашему выбору, например,
YOUR_COMPANY-dbt-cloud-webhook-datadog, или оставьте поле пустым, и имя будет сгенерировано автоматически. Обратите внимание, что имя может содержать только цифры, строчные буквы и дефисы. -
Выберите регион для развертывания и запомните сгенерированное имя хоста (обычно
APP_NAME.fly.dev). -
Когда вас спросят, хотите ли вы настроить базы данных Postgresql или Redis, введите
nдля каждого. -
Введите
y, когда вас спросят, хотите ли вы развернуть приложение сейчас.
Пример вывода мастера настройки:
joel@Joel-Labes dbt-cloud-webhooks-datadog % flyctl launch
An existing fly.toml file was found for app dbt-cloud-webhooks-datadog
? Would you like to copy its configuration to the new app? Yes
Creating app in /Users/joel/Documents/GitHub/dbt-cloud-webhooks-datadog
Scanning source code
Detected a Dockerfile app
? Choose an app name (leave blank to generate one): demo-dbt-cloud-webhook-datadog
automatically selected personal organization: Joel Labes
Some regions require a paid plan (fra, maa).
See https://fly.io/plans to set up a plan.
? Choose a region for deployment: [Use arrows to move, type to filter]
? Choose a region for deployment: Sydney, Australia (syd)
Created app dbtlabs-dbt-cloud-webhook-datadog in organization personal
Admin URL: https://fly.io/apps/demo-dbt-cloud-webhook-datadog
Hostname: demo-dbt-cloud-webhook-datadog.fly.dev
? Would you like to set up a Postgresql database now? No
? Would you like to set up an Upstash Redis database now? No
Wrote config file fly.toml
? Would you like to deploy now? Yes
4. Создание API-ключа Datadog
Создайте API-ключ для вашего аккаунта Datadog и запомните его и ваш сайт Datadog (например, datadoghq.com) для дальнейшего использования.
Настройка нового вебхука в dbt
- См. Создание подписки на вебхук для получения полных инструкций. Ваше событие должно быть Run completed.
- Установите URL вебхука на имя хоста, которое вы создали ранее (
APP_NAME.fly.dev). - Запомните секретный ключ вебхука для дальнейшего использования.
Не тестируйте конечную точку; она не будет работать, пока вы не сохраните ключи аутентификации (следующий шаг).
Хранение секретов
Приложению требуется задать четыре секрета, используя следующие имена:
DBT_CLOUD_SERVICE_TOKEN: персональный токен доступа или токен сервисного аккаунта для dbt с как минимум разрешениемMetdata Only.DBT_CLOUD_AUTH_TOKEN: секретный ключ (Secret Key) для вебхука dbt, который вы создали ранее.DD_API_KEY: API-ключ, который вы создали ранее.DD_SITE: сайт Datadog для вашей организации, напримерdatadoghq.com.
Установите эти секреты следующим образом, заменив abc123 и т.д. на фактические значения:
flyctl secrets set DBT_CLOUD_SERVICE_TOKEN=abc123 DBT_CLOUD_AUTH_TOKEN=def456 DD_API_KEY=ghi789 DD_SITE=datadoghq.com
Развертывание вашего приложения
После того как вы зададите свои секреты, fly.io выполнит повторное развертывание вашего приложения. Когда оно успешно завершится, вернитесь в настройки вебхука dbt и нажмите Test Endpoint.