Направляйте оповещения мониторинга Datadog в Google Cloud с помощью Eventarc (часть 1)

1. Введение

cb762f29e9183a3f.png3c7ca8629bc25d9c.png

Eventarc позволяет легко подключать сервисы Google Cloud к событиям из различных источников. Он позволяет создавать управляемые событиями архитектуры, в которых микросервисы слабо связаны и распределены. Он также позаботится о приеме событий, их доставке, безопасности, авторизации и обработке ошибок, что повышает гибкость разработчиков и устойчивость приложений.

Datadog — это платформа мониторинга и безопасности облачных приложений. Он объединяет сквозные трассировки, метрики и журналы, чтобы сделать ваши приложения, инфраструктуру и сторонние сервисы видимыми.

В этой первой лаборатории вы узнаете, как направить простое оповещение мониторинга Datadog в Google Cloud с помощью Eventarc.

Что вы узнаете

  • Как узнать поставщика Datadog.
  • Как настроить канал к провайдеру Datadog.
  • Как создать рабочий процесс для регистрации событий.
  • Как создать триггер Eventarc с каналом.
  • Как создать монитор Datadog.
  • Как протестировать монитор Datadog, триггер Eventarc и рабочий процесс.

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.

Настройка 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 Console:

d03a7173b25e5ea6.png

Получить информацию о канале

После создания канала получите подробную информацию о канале из 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 Console:

80d8b2b6a46cb4c5.png

Состояние канала указывает состояние канала. Это может быть одно из следующих:

  • PENDING —Канал успешно создан, и доступен токен активации для создания соединения с провайдером. Чтобы изменить состояние канала с PENDING на ACTIVE , токен необходимо передать провайдеру и использовать для подключения канала в течение 24 часов с момента создания канала.
  • ACTIVE —Канал успешно подключен к провайдеру. ACTIVE канал готов принимать и маршрутизировать события от провайдера.
  • INACTIVE —Канал не может получать события и не может быть повторно активирован. Либо провайдер отключен от этого канала, либо срок действия токена активации канала истек и провайдер не подключен. Чтобы восстановить соединение с провайдером, необходимо создать новый канал для провайдера.

Токен активации — это одноразовый токен с ограничением по времени, используемый для создания соединения между провайдером и проектом подписчика. Использовать токен может только конкретный провайдер, выбранный в процессе создания канала. Токен действителен в течение 24 часов после создания канала. По истечении 24 часов канал становится INACTIVE .

Отправьте информацию о канале провайдеру

Вам необходимо отправить следующие данные канала провайдеру Datadog:

  • Название канала (например, projects/project-id/locations/us-central1/channels/datadog-channel )
  • Токен активации (например, so5g4Kdasda7y2MSasdaGn8njB2 )

Войдите в Datadog, перейдите на страницу интеграций и убедитесь, что интеграция с Google Eventarc установлена:

9736bd517e1fa19a.png

В разделе конфигурации Google Eventarc введите полное имя канала и токен активации:

a17f522075cdd92e.png

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

8399d528ccbd4c20.png

Теперь вы готовы использовать канал!

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 :

32ccf1cc47b01150.png

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

7f2ff70ec673007b.png

Это должно имитировать переход состояний в мониторе и вызвать событие Eventarc.

Проверьте workflow-datadog1 . Вы должны увидеть, что появилось новое выполнение:

adf7cd97ca2e8da7.png

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

dc78fd8460e5fc0e.png

9. Поздравления

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

Что мы рассмотрели

  • Как узнать поставщика Datadog.
  • Как настроить канал к провайдеру Datadog.
  • Как создать рабочий процесс для регистрации событий.
  • Как создать триггер Eventarc с каналом.
  • Как создать монитор Datadog.
  • Как протестировать монитор Datadog, триггер Eventarc и рабочий процесс.