1. Введение
Eventarc позволяет легко подключать сервисы Google Cloud к событиям из различных источников. Он позволяет создавать управляемые событиями архитектуры, в которых микросервисы слабо связаны и распределены. Он также позаботится о приеме событий, их доставке, безопасности, авторизации и обработке ошибок, что повышает гибкость разработчиков и устойчивость приложений.
Datadog — это платформа мониторинга и безопасности облачных приложений. Он объединяет сквозные трассировки, метрики и журналы, чтобы сделать ваши приложения, инфраструктуру и сторонние сервисы видимыми.
Рабочие процессы — это полностью управляемая платформа оркестрации, которая выполняет службы в определенном вами порядке, который называется рабочим процессом. Эти рабочие процессы могут сочетать сервисы, размещенные в Cloud Run или Cloud Functions, облачные сервисы Google, такие как Cloud Vision AI и BigQuery, а также любой API на основе HTTP.
В первой лабораторной работе вы узнали, как направлять оповещения мониторинга Datadog в Google Cloud с помощью Eventarc. В ходе второй лабораторной работы вы узнаете, как реагировать на предупреждения мониторинга Datadog с помощью рабочих процессов. Точнее, вы создадите две виртуальные машины Compute Engine и будете контролировать их с помощью монитора Datadog. Как только одна из виртуальных машин будет удалена, вы получите предупреждение от Datadog в Workflows через Eventarc. В свою очередь, рабочие процессы воссоздадут удаленную виртуальную машину, чтобы вернуть количество работающих виртуальных машин к двум.
Что вы узнаете
- Как включить интеграцию Datadog с Google Cloud.
- Как создать рабочий процесс для проверки и создания виртуальных машин Compute Engine.
- Как подключить оповещения мониторинга Datadog к рабочим процессам с помощью Eventarc.
- Как создать монитор Datadog и оповещение об удалении виртуальных машин.
2. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта. - Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.
В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 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 \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. Проверьте канал Datadog.
Убедитесь, что канал Datadog, созданный вами в первой кодовой лаборатории, активен. В Cloud Shell выполните следующую команду, чтобы получить сведения о канале:
CHANNEL_NAME=datadog-channel 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: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
Вы также можете увидеть состояние канала в Google Cloud Console:
Состояние канала должно быть ACTIVE
. Если нет, вернитесь к первой кодовой лаборатории и следуйте инструкциям по созданию и активации канала с помощью Datadog.
4. Включите интеграцию Datadog с Google Cloud.
Чтобы использовать Datadog для мониторинга проекта, вам необходимо включить API, необходимые для Datadog, создать учетную запись службы и подключить учетную запись службы к Datadog.
Включить API для Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
Создать учетную запись службы
Интеграция Datadog с Google Cloud использует сервисную учетную запись для вызовов API Cloud Logging для сбора показателей на уровне узла из ваших экземпляров Compute Engine.
Создайте сервисную учетную запись для Datadog:
DATADOG_SA_NAME=datadog-service-account gcloud iam service-accounts create $DATADOG_SA_NAME \ --display-name "Datadog Service Account"
Включите учетную запись службы Datadog для сбора метрик, тегов, событий и меток пользователей, предоставив следующие роли IAM:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/cloudasset.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/compute.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/monitoring.viewer
Создайте и загрузите ключ сервисной учетной записи. Для завершения интеграции с Datadog вам понадобится файл ключа.
Создайте файл ключа сервисного аккаунта в домашнем каталоге Cloud Shell:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
В Cloud Shell нажмите More ⁝
и выберите « Download File
. В поле File path
введите key.json
. Чтобы скачать файл ключа, нажмите Download
.
Подключите сервисный аккаунт к Datadog
В своей учетной записи Datadog перейдите в раздел Integrations
и найдите плитку интеграции Google Cloud
:
Наведите указатель мыши на Google Cloud Platform
, чтобы перейти на страницу Install
:
Установите интеграцию, загрузив ключ сервисной учетной записи в разделе Upload Private Key File
, а затем нажав Install Integration
:
После завершения интеграции Datadog автоматически создает несколько информационных панелей, связанных с Google Cloud, в разделе Dashboards
:
5. Создайте виртуальные машины Compute Engine
Затем создайте несколько виртуальных машин Compute Engine (VM). Вы будете отслеживать эти виртуальные машины с помощью монитора Datadog и отвечать на оповещения Datadog с помощью рабочего процесса в Google Cloud.
Создайте две виртуальные машины Compute Engine:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
Примерно через минуту вы увидите виртуальные машины, созданные и работающие, в облачной консоли. Через некоторое время (обычно 10 минут) вы также должны увидеть эти виртуальные машины в Datadog на панели инструментов Google Compute Engine
в разделе Dashboards
:
6. Создайте рабочий процесс
Теперь, когда у вас работают две виртуальные машины, создайте рабочий процесс, который будет реагировать на оповещения монитора Datadog. Рабочий процесс может быть настолько сложным, насколько вам нравится, но в этом случае рабочий процесс проверит количество работающих экземпляров виртуальных машин, и если оно упадет ниже 2, он создаст новые экземпляры виртуальных машин, чтобы убедиться, что две виртуальные машины работают постоянно.
Создайте файл workflow-datadog2.yaml
со следующим содержимым:
main: params: [event] steps: - init: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - zone: "us-central1-a" - minInstanceCount: 2 - namePattern: "datadog-instance-##" - listInstances: call: googleapis.compute.v1.instances.list args: project: ${projectId} zone: ${zone} result: listResult - getInstanceCount: steps: - initInstanceCount: assign: - instanceCount: 0 - setInstanceCount: switch: - condition: ${"items" in listResult} steps: - stepA: assign: - instanceCount: ${len(listResult.items)} - findDiffInstanceCount: steps: - assignDiffInstanceCount: assign: - diffInstanceCount: ${minInstanceCount - instanceCount} - logDiffInstanceCount: call: sys.log args: data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)} - endEarlyIfNeeded: switch: - condition: ${diffInstanceCount < 1} next: returnResult - bulkInsert: call: googleapis.compute.v1.instances.bulkInsert args: project: ${projectId} zone: ${zone} body: count: ${diffInstanceCount} namePattern: ${namePattern} instanceProperties: machineType: "e2-micro" disks: - autoDelete: true boot: true initializeParams: sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310 networkInterfaces: - network: "global/networks/default" result: bulkInsertResult - returnResult: return: ${bulkInsertResult}
Обратите внимание, что рабочий процесс получает событие в качестве параметра. Это событие будет получено в результате мониторинга Datadog через Eventarc. После получения события рабочий процесс проверяет количество запущенных экземпляров и при необходимости создает новые экземпляры виртуальных машин.
Разверните рабочий процесс:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
Рабочий процесс развернут, но еще не запущен. Он будет выполнен триггером Eventarc при получении предупреждения Datadog.
7. Создайте триггер Eventarc.
Теперь вы готовы подключить события от поставщика Datadog к рабочим процессам с помощью триггера Eventarc. Вы будете использовать канал и учетную запись службы, которые вы настроили в первой лаборатории кода.
Создайте триггер с каналом Datadog, типом события, а также местом назначения рабочего процесса:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --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-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. Создайте монитор Datadog
Теперь вы создадите монитор Datadog и подключите его к Eventarc.
Монитор проверит количество работающих виртуальных машин Compute Engine и предупредит, если оно упадет ниже 2.
Чтобы создать монитор в Datadog, войдите в Datadog . Наведите указатель мыши на Monitors
в главном меню и нажмите New Monitor
в подменю. Существует множество типов мониторов. Выберите тип монитора Metric
.
На странице New Monitor
создайте монитор со следующими параметрами:
- Выберите метод обнаружения:
Threshold
. - Определите метрику:
gcp.gce.instance.is_running
from (везде)sum by
(всему) - Установите условия оповещения:
- Запускается, когда показатель
below
порогового значенияat least once
за последние5 minutes
- Порог оповещения:
< 2
- Сообщите своей команде:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- Пример имени монитора:
Compute Engine instances < 2
Теперь нажмите Create
внизу, чтобы создать монитор.
9. Тестовый монитор и триггер.
Чтобы протестировать монитор Datadog, триггер Eventarc и, в конечном итоге, рабочий процесс, вы удалите одну из виртуальных машин:
gcloud compute instances delete instance-2 --zone us-central1-a
Через несколько секунд вы увидите, что экземпляр удален в Google Cloud Console.
Это изменение отобразится в Datadog с некоторой задержкой. Через некоторое время (обычно 10 минут) вы должны увидеть монитор в Datadog, чтобы обнаружить его и предупредить об этом в разделе Manage Monitors
:
Как только монитор Datadog выдаст предупреждение, вы увидите, что это предупреждение перейдет в рабочие процессы через Eventarc. Если вы проверите журналы рабочих процессов, вы увидите, что рабочие процессы проверяют разницу между текущим и ожидаемым количеством экземпляров:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
Он реагирует на это предупреждение, создавая новый экземпляр виртуальной машины с префиксом datadog-instance-##
.
В конечном итоге в вашем проекте по-прежнему будут две виртуальные машины: одну вы создали изначально, а другую — с помощью Workflows после предупреждения Datadog!
10. Поздравления
Поздравляем, вы завершили работу над кодом!
Что мы рассмотрели
- Как включить интеграцию Datadog с Google Cloud.
- Как создать рабочий процесс для проверки и создания виртуальных машин Compute Engine.
- Как подключить оповещения мониторинга Datadog к рабочим процессам с помощью Eventarc.
- Как создать монитор Datadog и оповещение об удалении виртуальных машин.