1. Введение


Eventarc упрощает подключение сервисов Google Cloud к событиям из различных источников. Он позволяет создавать архитектуры, управляемые событиями, в которых микросервисы слабо связаны и распределены. Он также берет на себя обработку событий, их доставку, обеспечение безопасности, авторизацию и обработку ошибок, что повышает гибкость разработчиков и отказоустойчивость приложений.
Datadog — это платформа мониторинга и безопасности для облачных приложений. Она объединяет сквозные трассировки, метрики и журналы, делая ваши приложения, инфраструктуру и сторонние сервисы наблюдаемыми.
В этом первом практическом занятии вы узнаете, как перенаправить простое оповещение мониторинга Datadog в Google Cloud с помощью Eventarc.
Что вы узнаете
- Как найти поставщика Datadog.
- Как настроить канал связи с провайдером Datadog.
- Как создать рабочий процесс для регистрации событий.
- Как создать триггер Eventarc с использованием канала.
- Как создать монитор Datadog.
- Как протестировать монитор Datadog, триггер Eventarc и рабочий процесс.
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



- Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы можете изменить её в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он останется неизменным на протяжении всего проекта. - К вашему сведению, существует третье значение — номер проекта , который используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
- Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить весь проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.
В консоли Google Cloud нажмите на значок Cloud Shell на панели инструментов в правом верхнем углу:

Подготовка и подключение к среде займут всего несколько минут. После завершения вы должны увидеть что-то подобное:

Эта виртуальная машина содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Вся работа в этом практическом задании может выполняться в браузере. Вам не нужно ничего устанавливать.
Настройте gcloud
В Cloud Shell задайте идентификатор проекта и сохраните его в качестве переменной PROJECT_ID .
Кроме того, установите переменную REGION в значение us-central1 . Это регион, в котором вы будете создавать ресурсы позже.
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
Включить API
Включите все необходимые службы:
gcloud services enable \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. Найдите поставщика Datadog.
Провайдер Eventarc — это сервис или организация, которая может отправлять события непосредственно в Google Cloud, откуда они затем направляются в ваш проект. Сторонние провайдеры, такие как Datadog, — это провайдеры, не относящиеся к Google Cloud, которые интегрированы с Google Cloud через Eventarc.
В Cloud Shell выполните следующую команду, чтобы увидеть список поставщиков услуг Google Cloud и сторонних компаний:
gcloud eventarc providers list
Здесь перечислены поставщики Google Cloud и сторонних сервисов, а также регионы, в которых они доступны:
NAME: storage.googleapis.com LOCATION: asia NAME: cloudaudit.googleapis.com LOCATION: asia NAME: pubsub.googleapis.com LOCATION: asia ...
С помощью этой команды вы можете сузить список до сторонних поставщиков:
gcloud eventarc providers list --filter='eventTypes.type!~^google*'
В списке вы должны увидеть Datadog:
NAME: datadog LOCATION: us-central1
Вы также можете описать поставщика Datadog, чтобы увидеть, какие события он поддерживает:
gcloud eventarc providers describe datadog --location $REGION displayName: Datadog eventTypes: - type: datadog.v1.alert name: projects/project-id/locations/us-central1/providers/datadog
4. Создайте канал
Для интеграции вашего проекта с поставщиком вам необходимо настроить канал. Это включает в себя создание канала, получение его данных и отправку этих данных поставщику. После того, как поставщик инициализирует соединение с каналом, он может начать отправлять события в ваш проект.
Создать канал
Вы можете создать канал для провайдера Datadog, используя gcloud :
CHANNEL_NAME=datadog-channel gcloud eventarc channels create $CHANNEL_NAME \ --provider datadog \ --location $REGION
Вы также можете создать его в разделе «Каналы» на странице Eventarc в консоли Google Cloud:

Получить сведения о канале
После создания канала получите его подробные сведения из gcloud :
gcloud eventarc channels describe $CHANNEL_NAME --location $REGION
Результат должен выглядеть примерно так:
activationToken: so5g4Kdasda7y2MSasdaGn8njB2 createTime: '2022-03-09T09:53:42.428978603Z' name: projects/project-id/locations/us-central1/channels/datadog-channel provider: projects/project-id/locations/us-central1/providers/datadog pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077 state: PENDING uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
Аналогичным образом, вы можете увидеть этот канал в консоли Google Cloud:

Состояние канала указывает на его статус. Оно может принимать одно из следующих значений:
-
PENDING— Канал успешно создан, и доступен токен активации для установления соединения с провайдером. Чтобы изменить состояние канала сPENDINGнаACTIVE, токен необходимо передать провайдеру и использовать для подключения канала в течение 24 часов с момента его создания. -
ACTIVE— Канал успешно подключен к провайдеру.ACTIVEканал готов к приему и маршрутизации событий от провайдера. -
INACTIVE— Канал не может получать события и не может быть повторно активирован. Поставщик либо отключен от этого канала, либо срок действия токена активации канала истек, и поставщик не подключен. Для восстановления связи с поставщиком необходимо создать для него новый канал.
Токен активации — это одноразовый, ограниченный по времени токен, используемый для установления связи между провайдером и проектом подписчика. Использовать токен может только конкретный провайдер, выбранный в процессе создания канала. Токен действителен в течение 24 часов после создания канала. По истечении 24 часов канал становится INACTIVE .
Отправьте данные канала провайдеру.
Необходимо отправить следующие данные канала поставщику Datadog:
- Название канала (например,
projects/project-id/locations/us-central1/channels/datadog-channel) - Токен активации (например,
so5g4Kdasda7y2MSasdaGn8njB2)
Войдите в Datadog, перейдите на страницу интеграций и убедитесь, что установлена интеграция с Google Eventarc:

В разделе настроек Google Eventarc введите полное название канала и токен активации:

Теперь вы должны увидеть канал в списке каналов, и через несколько секунд он также должен стать активным в консоли Google Cloud:

Теперь вы готовы использовать канал!
5. Создайте рабочий процесс.
Для получения событий от поставщика вам потребуется место назначения в Google Cloud. Eventarc поддерживает ряд мест назначения событий, таких как Cloud Run, рабочие процессы и сервисы Kubernetes. В этом случае разверните рабочий процесс для простой регистрации полученных событий.
Создайте файл workflow-datadog1.yaml со следующим содержимым:
main:
params: [event]
steps:
- logStep:
call: sys.log
args:
data: ${event}
Обратите внимание, что рабочий процесс получает событие в качестве параметра. Это событие поступает из системы мониторинга Datadog через Eventarc. После получения события рабочий процесс просто регистрирует его в журнале.
Разверните рабочий процесс:
WORKFLOW_NAME=workflow-datadog1 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog1.yaml \ --location $REGION
Рабочий процесс развернут, но пока не запущен. Он будет выполнен триггером Eventarc при получении оповещения от Datadog.
6. Создайте триггер Eventarc.
Теперь вы готовы связать события из поставщика Datadog с рабочими процессами с помощью триггера Eventarc.
Настройка учетной записи службы
Для создания триггера необходима учетная запись службы с ролью eventarc.eventReceiver . Вы можете либо создать отдельную учетную запись службы, либо использовать учетную запись службы вычислительных ресурсов по умолчанию.
Для простоты используйте учетную запись вычислительной службы по умолчанию и предоставьте роли eventarc.eventReceiver :
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
Создайте триггер
Создайте триггер с каналом Datadog, типом события и местом назначения рабочего процесса:
gcloud eventarc triggers create datadog-trigger1 \ --location $REGION \ --destination-workflow $WORKFLOW_NAME \ --destination-workflow-location $REGION \ --channel $CHANNEL_NAME \ --event-filters type=datadog.v1.alert \ --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com
Вы можете просмотреть список триггеров, чтобы убедиться, что созданный триггер активен:
gcloud eventarc triggers list --location $REGION NAME: datadog-trigger1 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog1 ACTIVE: Yes
7. Создайте монитор Datadog.
Теперь вам нужно создать монитор Datadog и подключить его к Eventarc.
Это будет монитор типа "Hello World" со значениями по умолчанию. Вам нужно будет вручную запускать его для генерации оповещений мониторинга, которые, в свою очередь, будут генерировать событие Eventarc в Google Cloud.
Чтобы создать монитор в Datadog, войдите в Datadog . Наведите курсор на Monitors в главном меню и нажмите New Monitor в подменю. Доступно множество типов мониторов. Выберите тип монитора Metric .
На странице New Monitor оставьте значения по умолчанию для шагов 1 и 2.
- На шаге 3 установите
Alert thresholdравным 1. - На шаге 4 установите в качестве имени монитора
Test monitor for Eventarcи настройтеNotify your teamна@eventarc_<your-project-id>_<your-region>_<your-channel-name>
Оставьте страницу с настройками монитора открытой для следующего шага, где вы проверите работу монитора.
8. Проверьте монитор и триггер.
Для проверки работы монитора Datadog и триггера Eventarc вам потребуется вручную запустить монитор.
В нижней части страницы создания монитора нажмите кнопку Test Notifications :

Затем нажмите кнопку Run Test :

Это должно имитировать переход состояния в мониторе и запустить событие Eventarc.
Проверьте рабочий процесс workflow-datadog1 . Вы должны увидеть новое выполнение:

Проверьте детали выполнения. Вы должны увидеть событие типа Datadog datadog.v1.alert , сгенерированное из оповещения мониторинга, как на входе рабочего процесса, так и в журналах:

9. Поздравляем!
Поздравляем, вы завершили практическое занятие! Теперь вы можете перейти ко второму практическому занятию, чтобы узнать, как реагировать на оповещения системы мониторинга Datadog с помощью рабочих процессов.
Что мы рассмотрели
- Как найти поставщика Datadog.
- Как настроить канал связи с провайдером Datadog.
- Как создать рабочий процесс для регистрации событий.
- Как создать триггер Eventarc с использованием канала.
- Как создать монитор Datadog.
- Как протестировать монитор Datadog, триггер Eventarc и рабочий процесс.