1. 简介

借助 Eventarc,您可以轻松地将 Google Cloud 服务与来自各种来源的事件相关联。它可让您构建微服务松散耦合且分布式的事件驱动型架构。它还会为您处理事件提取、传送、安全、授权和错误处理,从而提高开发者的敏捷性和应用弹性。
Datadog 是一个云应用监控和安全平台。它将端到端跟踪记录、指标和日志整合在一起,让您的应用、基础架构和第三方服务可观测。
在此第一个 Codelab 中,您将学习如何使用 Eventarc 将简单的 Datadog 监控提醒路由到 Google Cloud。
学习内容
- 如何发现 Datadog 提供程序。
- 如何为 Datadog 提供商设置渠道。
- 如何创建用于记录事件的工作流。
- 如何使用渠道创建 Eventarc 触发器。
- 如何创建 Datadog 监控器。
- 如何测试 Datadog 监控器、Eventarc 触发器和工作流。
2. 设置和要求
自定进度的环境设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。



- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时更新。
- 项目 ID 在所有 Google Cloud 项目中必须是唯一的,并且不可变(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用
PROJECT_ID标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。 - 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除整个项目。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。
启动 Cloud Shell
虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

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

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 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 页面的“渠道”部分创建渠道:

检索渠道详情
创建渠道后,从 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、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 提供方的事件连接到工作流。
配置服务账号
创建触发器时,您需要一个具有 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 按钮:

然后,点击 Run Test 按钮:

这应该会模拟监控器中的状态转换并触发 Eventarc 事件。
检查 workflow-datadog1 工作流。您应该会看到有新的执行:

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

9. 恭喜
恭喜,您已完成此 Codelab!您可以继续学习第二个 Codelab,了解如何使用工作流响应 Datadog 监控提醒。
所学内容
- 如何发现 Datadog 提供程序。
- 如何为 Datadog 提供商设置渠道。
- 如何创建用于记录事件的工作流。
- 如何使用渠道创建 Eventarc 触发器。
- 如何创建 Datadog 监控器。
- 如何测试 Datadog 监控器、Eventarc 触发器和工作流。