使用 Eventarc 将 Datadog 监控提醒路由到 Google Cloud(第 1 部分)

1. 简介

cb762f29e9183a3f.png 3c7ca8629bc25d9c

Eventarc 让您可以轻松地将 Google Cloud 服务与各种来源的事件相连接。您可以用它来构建事件驱动型架构,其中微服务是松散耦合和分布式的。它还负责事件提取、传送、安全性、授权和错误处理,从而提高开发者的敏捷性和应用弹性。

Datadog 是一个适用于云应用的监控和安全平台。它汇集了端到端跟踪记录、指标和日志,可让您的应用、基础架构和第三方服务可观测。

在第一个 Codelab 中,您将学习如何使用 Eventarc 将简单的 Datadog 监控提醒路由到 Google Cloud。

学习内容

  • 如何发现 Datadog 提供商。
  • 如何设置 Datadog 提供商的频道。
  • 如何创建用于记录事件的工作流。
  • 如何使用渠道创建 Eventarc 触发器。
  • 如何创建 Datadog 监控程序。
  • 如何测试 Datadog 监控器、Eventarc 触发器和工作流。

2. 设置和要求

自定进度的环境设置

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
  • 项目 ID 在所有 Google Cloud 项目中必须是唯一的,并且不可变(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常您不在乎这是什么在大多数 Codelab 中,您都需要引用项目 ID(它通常标识为 PROJECT_ID)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且该 ID 在项目期间会一直保留。
  • 此外,还有第三个值,即某些 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档
  1. 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。如需关停资源,以免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除整个项目。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。

启动 Cloud Shell

虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。

Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

55efc1aaa7a4d3ad.png

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

7ffe5cbb04455448.png

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。

设置 gcloud

在 Cloud Shell 中,设置项目 ID 并将其保存为 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 等第三方提供商是通过 Eventarc 与 Google Cloud 集成的非 Google Cloud 提供商。

在 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. 设置频道

您需要设置一个渠道,以便将您的项目与提供商集成。这涉及到创建频道、检索频道详情并将这些详情发送给提供商。提供程序初始化与渠道的连接后,即可开始向您的项目发送事件。

创建频道

您可以使用 gcloud 为 Datadog 提供商创建一个渠道:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

您也可以在 Google Cloud 控制台的 Eventarc 页面的“渠道”部分创建此渠道:

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 控制台中查看此渠道:

80d8b2b6a46cb4c5

通道状态表示通道的状态。可以是下列选项之一:

  • 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

在 Google Eventarc 的配置部分中,输入完整的渠道名称和激活令牌:

a17f522075cdd92e.png

现在,您应该会在渠道列表中看到该渠道,几秒钟后,您应该还会在 Google Cloud 控制台中看到该渠道变为活跃状态:

8399d528ccbd4c20

现在,你可以使用该频道了!

5. 创建工作流

您需要在 Google Cloud 中创建一个目标位置,才能接收来自提供商的事件。Eventarc 支持许多事件目的地,例如 Cloud Run、Workflows、Kubernetes 服务。在这种情况下,请部署一个工作流以仅记录收到的事件。

创建一个包含以下内容的 workflow-datadog1.yaml 文件:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

请注意,工作流程是接收事件作为参数。此事件来自通过 Eventarc 进行 Datadog 监控。收到事件后,工作流只会记录接收到的事件。

部署工作流:

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.yaml \
  --location $REGION

工作流已部署,但尚未运行。收到 Datadog 提醒时,该事件将由 Eventarc 触发器执行。

6. 创建 Eventarc 触发器

现在,您可以使用 Eventarc 触发器将来自 Datadog 提供程序的事件连接到 Workflows。

配置服务账号

创建触发器时,您需要具有 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 类型监控。您将手动触发它以生成监控提醒,而监控提醒又会在 Google Cloud 中生成 Eventarc 事件。

如需在 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

然后,点击 Run Test 按钮:

7f2ff70ec673007b

这应该会在监控器中模拟状态转换并触发 Eventarc 事件。

查看 workflow-datadog1 工作流。您应该会看到有一个新的执行:

adf7cd97ca2e8da7.png

查看执行详情。您应该会在工作流的输入页面和日志中看到监控提醒生成的 Datadog 事件类型 datadog.v1.alert

dc78fd8460e5fc0e.png

9. 恭喜

恭喜,您已完成此 Codelab!您可以继续学习第二个 Codelab,了解如何使用 Workflows 响应 Datadog 监控提醒。

所学内容

  • 如何发现 Datadog 提供商。
  • 如何设置 Datadog 提供商的频道。
  • 如何创建用于记录事件的工作流。
  • 如何使用渠道创建 Eventarc 触发器。
  • 如何创建 Datadog 监控程序。
  • 如何测试 Datadog 监控器、Eventarc 触发器和工作流。