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 提供程序的事件连接到 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
按钮:
然后,点击 Run Test
按钮:
这应该会在监控器中模拟状态转换并触发 Eventarc 事件。
查看 workflow-datadog1
工作流。您应该会看到有一个新的执行:
查看执行详情。您应该会在工作流的输入页面和日志中看到监控提醒生成的 Datadog 事件类型 datadog.v1.alert
:
9. 恭喜
恭喜,您已完成此 Codelab!您可以继续学习第二个 Codelab,了解如何使用 Workflows 响应 Datadog 监控提醒。
所学内容
- 如何发现 Datadog 提供商。
- 如何设置 Datadog 提供商的频道。
- 如何创建用于记录事件的工作流。
- 如何使用渠道创建 Eventarc 触发器。
- 如何创建 Datadog 监控程序。
- 如何测试 Datadog 监控器、Eventarc 触发器和工作流。