Настройка тревог PagerDuty при сбоях в dbt Cloud
Введение
Это руководство научит вас создавать и размещать базовое приложение на Python, которое будет отслеживать задания dbt Cloud и создавать тревоги PagerDuty в случае сбоя. Для этого, когда задание dbt Cloud завершится, оно будет:
- Проверять наличие любых неудачных узлов (например, не пройденных тестов или моделей с ошибками), и
- создавать тревогу PagerDuty на основе этих узлов, вызывая API событий PagerDuty. События дублируются по ID запуска.
В этом примере мы будем использовать fly.io для размещения/запуска сервиса. fly.io — это платформа для запуска полнофункциональных приложений без необходимости настройки серверов и т.д. Этот уровень использования должен комфортно вписываться в бесплатный тариф. Вы также можете использовать альтернативные инструменты, такие как AWS Lambda или Google Cloud Run.
Предварительные требования
Это руководство предполагает, что вы знакомы с:
- Вебхуками dbt Cloud
- CLI приложениями
- Размещением кода на серверных платформах, таких как fly.io или AWS Lambda
Клонирование репозитория dbt-cloud-webhooks-pagerduty
Этот репозиторий содержит пример кода для проверки вебхука и создания событий в PagerDuty.
Установка flyctl
и регистрация на fly.io
Следуйте инструкциям для вашей операционной системы в документации fly.io, затем выполните следующие команды в командной строке:
Перейдите в каталог, содержащий клонированный вами репозиторий на шаге 1:
#пример: замените на ваш фактический путь
cd ~/Documents/GitHub/dbt-cloud-webhooks-pagerduty
Зарегистрируйтесь на 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-pagerduty
, или оставьте поле пустым, и оно будет сгенерировано автоматически. Обратите внимание, что ваше имя может содержать только цифры, строчные буквы и дефисы.
Выберите регион для развертывания и запомните сгенерированное имя хоста (обычно APP_NAME.fly.dev
).
Когда вас спросят, хотите ли вы настроить базы данных Postgresql или Redis, введите n
для каждого.
Введите y
, когда вас спросят, хотите ли вы развернуть приложение сейчас.
Пример вывода мастера настройки:
joel@Joel-Labes dbt-cloud-webhooks-pagerduty % flyctl launch
An existing fly.toml file was found for app dbt-cloud-webhooks-pagerduty
? Would you like to copy its configuration to the new app? Yes
Creating app in /Users/joel/Documents/GitHub/dbt-cloud-webhooks-pagerduty
Scanning source code
Detected a Dockerfile app
? Choose an app name (leave blank to generate one): demo-dbt-cloud-webhook-pagerduty
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-pagerduty in organization personal
Admin URL: https://fly.io/apps/demo-dbt-cloud-webhook-pagerduty
Hostname: demo-dbt-cloud-webhook-pagerduty.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
Создание интеграционного приложения PagerDuty
См. руководство PagerDuty для получения полных инструкций.
Запомните ключ интеграции для дальнейшего использования.
Настройка нового вебхука в dbt Cloud
См. Создание подписки на вебхук для получения полных инструкций. Ваше событие должно быть Run completed.
Установите URL вебхука на имя хоста, которое вы создали ранее (APP_NAME.fly.dev
).
Запомните секретный ключ вебхука для дальнейшего использования.
Не тестируйте конечную точку; это не сработает, пока вы не сохраните ключи аутентификации (следующий шаг).
Хранение секретов
Приложение требует установки трех секретов с использованием следующих имен:
DBT_CLOUD_SERVICE_TOKEN
: персональный токен доступа или токен учетной записи сервиса dbt Cloud с как минимум разрешениемMetdata Only
.DBT_CLOUD_AUTH_TOKEN
: секретный ключ для вебхука dbt Cloud, который вы создали ранее.PD_ROUTING_KEY
: ключ интеграции для интеграции PagerDuty, которую вы создали ранее.
Установите эти секреты следующим образом, заменив abc123
и т.д. на фактические значения:
flyctl secrets set DBT_CLOUD_SERVICE_TOKEN=abc123 DBT_CLOUD_AUTH_TOKEN=def456 PD_ROUTING_KEY=ghi789
Развертывание вашего приложения
После установки секретов, fly.io повторно развернет ваше приложение. Когда это будет успешно завершено, вернитесь к настройкам вебхука dbt Cloud и нажмите Test Endpoint.