提醒:Pub/Sub 主题的正常运行时间检查

提醒:Pub/Sub 主题的正常运行时间检查

关于此 Codelab

subject上次更新时间:7月 7, 2023
account_circleAron Eidelman 编写

1. 简介

上次更新时间:2023 年 6 月 21 日

正常运行时间检查可用性提醒

通过正常运行时间检查提醒,您可以快速识别和解决可能影响服务的问题。收到服务中断提醒后,您可以采取相应措施,最大限度地降低对用户和客户的影响。

拨测按时间间隔进行,最短间隔时间为 60 秒。如果您需要超过 60 秒的粒度,还可以通过基于日志的提醒将错误代码监控为动态事件,将其作为不可用的附加指标。如果可以接受 60 秒或更长时间的时间间隔,则只需进行少许额外配置,即可通过拨测轻松衡量服务效果。

如果服务不可用,即使没有流量,拨测也会检测到问题。另一方面,流量可能会受到维护、升级等因素的影响,甚至是系统外部因素的影响,比如恶劣天气或会分散使用时间的体育赛事。

如需详细了解何时使用拨测,请参阅确保 Google Cloud 资源的正常运行时间

将 Pub/Sub 主题用作提醒通知渠道

Pub/Sub 主题可用作 Google Cloud Monitoring 通知渠道,以向 Pub/Sub 订阅发送提醒。这样,您就可以将 Cloud Monitoring 提醒与其他系统(包括第三方通知服务)集成。

如需将 Pub/Sub 主题用作通知渠道,您首先需要创建一个 Pub/Sub 主题和一个 Pub/Sub 订阅。然后,您需要创建一个使用 Pub/Sub 主题作为目标位置的 Cloud Monitoring 通知渠道。

触发提醒时,Cloud Monitoring 会向 Pub/Sub 主题发送消息。然后,Pub/Sub 订阅的订阅者可以处理该消息并采取适当的操作。

构建内容

在此 Codelab 中,您将部署应用,创建 Pub/Sub 主题,并为使用 Pub/Sub 主题作为通知渠道的应用创建拨测提醒。

学习内容

  • 如何创建 Pub/Sub 主题
  • 如何创建拨测和提醒

此 Codelab 侧重于创建拨测提醒。对于不相关的概念和应用代码,我们仅会略作介绍,只是为了方便您复制和粘贴。

所需条件

  • 有权执行以下操作的 Google Cloud 账号:
  • 部署 Cloud Run 应用
  • 创建 Pub/Sub 主题
  • 创建拨测
  • 创建提醒

2. 准备工作

选择或创建 Google Cloud 项目

如需选择现有项目,请使用下拉菜单:

b35bf95b8bf3d5d8.png

如需在 Google Cloud 中创建新项目,您可以按照以下步骤操作:

  1. 前往 Google Cloud Platform Console
  2. 点击 Create Project 按钮。
  3. 为您的项目输入名称。
  4. 为您的项目选择结算账号。
  5. 点击创建按钮。

系统将创建您的项目,并将您转到项目信息中心。接下来,您就可以开始使用 Google Cloud 服务了。

以下是有关每个步骤的一些其他详细信息:

  • 名称:项目的名称在组织中必须是唯一的。
  • 结算账号:您可以使用现有结算账号,也可以创建新账号。
  • 创建:输入所有所需信息后,点击创建按钮创建项目。

如需了解详情,请参阅有关创建项目的 Google Cloud 文档

3. 部署 API 应用

示例应用或 API 是关于什么的?

我们的应用是一个简单的 Inventory API 应用,公开了 REST API 端点,其中包含一些操作,可用于列出商品目录商品并获取具体的商品库存数量。

部署 API 并假设其托管在 https://<somehost> 后,我们即可按如下方式访问 API 端点:

https://<somehost>/inventory

系统将列出所有具有现有库存水平的产品项。

https://<somehost>/inventory/{productid}

这将为该商品提供一个记录,其中包含商品 ID 和现有库存水平。

返回的响应数据采用 JSON 格式。

注意:此 API 应用仅用于演示目的,不代表安全可靠的 API 实现。它旨在为我们提供一个快速应用,用于探索实验的主要用途,即 Google Cloud 运维套件。

示例数据和 API 请求/响应

为简单起见,应用并非由后端的数据库提供支持。其中包含 3 个示例产品 ID 及其现有库存水平。

产品 ID

现货库存水平

I-1

10

I-2

20

I-3

30

示例 API 请求和响应如下所示:

API 请求

API 响应

https://&lt;somehost&gt;/inventory

[ { &quot;I-1&quot;: 10, &quot;I-2&quot;: 20, &quot;I-3&quot;: 30 }]

https://&lt;somehost&gt;/inventory/I-1

{ &quot;productid&quot;: &quot;I-1&quot;, &quot;qty&quot;: 10}

https://&lt;somehost&gt;/inventory/I-2

{ &quot;productid&quot;: &quot;I-2&quot;, &quot;qty&quot;: 20}

https://&lt;somehost&gt;/inventory/I-200

{ &quot;productid&quot;: I-200, &quot;qty&quot;: -1}

克隆代码库

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

这个虚拟机装有您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。只需使用浏览器,您就可以完成本实验中的所有工作。

设置 gcloud

在 Cloud Shell 中,设置您的项目 ID 并将其保存为 PROJECT_ID 变量。

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

现在,执行以下命令:

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

这将在此文件夹中创建一个名为 cloud-code-sample-repository 的文件夹。

(可选)在 Cloud Shell 上运行应用

您可以按照以下步骤在本地运行应用:

  1. 从终端中,通过以下命令导航到该 API 的 Python 版本:

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. 在终端中,输入以下命令(在撰写本文时,Cloud Shell 已安装 Python 3.9.x,我们将使用默认版本。如果您打算在笔记本电脑本地运行,可以使用 Python 3.8+:

$ python app.py

  1. 您可以运行以下命令,以在本地启动 Python 服务器。

1f798fbddfdc2c8e 46edf454cc70c5a6

点击“在端口 8080 上预览”。5. 这将打开一个浏览器窗口。系统会显示 404 错误,这没关系。修改网址,并将其更改为在主机名后面仅包含 /inventory。

例如:在我的机器上类似,如下所示:

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

系统随即会显示广告资源项列表,如前所述:

709d57ee2f0137e4

  1. 现在您可以转到终端并按 Ctrl-C 来停止服务器

部署应用

现在,我们会将此 API 应用部署到 Cloud Run。该流程涉及利用 gcloud 命令行客户端运行命令以将代码部署到 Cloud Run

从终端发出以下 gcloud 命令:

$ gcloud run deploy --source .

这会询问您多个问题,其中一些要点如下:

  1. 服务名称 (python-flask-api):采用此默认值,或者选择类似于 my-inventory-api 的名称
  2. 项目 [613162942481] 未启用 API [run.googleapis.com]。要启用并重试(这将需要几分钟)吗?(是/否)?是
  3. 请指定区域:选择 31 (us-west-1)
  4. 项目 [613162942481] 未启用 API [artifactregistry.googleapis.com]。要启用并重试(这将需要几分钟)吗?(是/否)?是
  5. 从源代码部署需要使用 Artifact Registry Docker 代码库来存储构建的容器。系统将在区域 [us-west1] 中创建名为 [cloud-run-source-deploy] 的代码库。
  6. 是否要继续(是/否)?是
  7. 是否允许对 [my-inventory-api] 进行未经身份验证的调用 (y/N)?是

最终,这将启动以下流程:获取源代码,对其进行容器化,将其推送到 Artifact Registry,然后部署 Cloud Run 服务 + 修订版本。请耐心完成该过程(可能需要 3-4 分钟),您应该会看到系统向您显示的服务网址。

运行示例如下所示:

87ba8dbf88e8cfa4

测试应用

现在,我们已将应用部署到 Cloud Run,您可以按如下方式访问 API 应用:

  1. 记下上一步中的服务网址。例如,在我的设置中,它显示为 https://my-inventory-api-bt2r5243dq-uw.a.run.app。将其命名为 <SERVICE_URL>
  2. 打开浏览器并访问以下 3 个 API 端点网址:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

它应该符合我们在前面的 API 请求和响应示例部分提供的规范。

从 Cloud Run 获取服务详情

我们将 API 服务部署到了 Cloud Run,这是一个无服务器计算环境。我们可以随时通过 Google Cloud 控制台访问 Cloud Run 服务。

从主菜单导航到 Cloud Run。系统将显示您在 Cloud Run 中运行的服务的列表。您应该会看到刚刚部署的服务。根据您选择的名称,您应该会看到如下内容:

2633965c4bc957cc

点击 Service 名称以查看详细信息。示例详情如下所示:

33042ae64322ce07

注意网址,该网址只是一个服务网址,您可以在浏览器中插入该网址,然后访问我们刚刚部署的 Inventory API。查看指标和其他详细信息。

现在,我们从 Google Cloud Operations Suite 开始。

4. 创建 Pub/Sub 主题以接收提醒通知

如需创建 Pub/Sub 主题,您可以在 Google Cloud 控制台中按照以下步骤操作:

  1. 在搜索框中搜索 Pub/Sub,然后导航到 Pub/Sub。935028bd8f6328ef
  2. 如果您尚未进入主题标签页,请点击该标签页。7fd8bf91386a88fd.png
  3. 点击创建主题按钮。cd9d197f9023c41b.png
  4. 输入主题的名称。

173f313b4a3c4934

  1. 点击创建按钮。ca9a02477da21a44.png
  2. 使用复制图标按钮复制主题名称。在下一部分,您将需要用到该文件。

20848252ee83df93

5. 创建拨测

如需为 Google Cloud Run 应用创建拨测,请执行以下操作:

  1. 前往 Google Cloud Platform Console
  2. 点击监控标签页。
  3. 点击拨测标签页。
  4. 在页面顶部附近,点击 Create Uptime Check 按钮。

96561799ca500777

  1. 请使用以下值:
  2. 协议:HTTPS
  3. 资源类型:网址
  4. 主机名:输入 Cloud Run 服务网址部分(不含 https)。以下屏幕显示了一个示例。如果您不确定服务网址,请从 Google Cloud 控制台主转到 Cloud Run,然后按照之前的说明前往 Cloud Run 服务的详细信息页面,以获取服务网址。
  5. 路径:healthy
  6. 检查频率:1 分钟

342865c6d921ff41

  1. 点击继续
  2. 开启内容匹配功能已启用
  3. 输入“All Izz Well”在响应内容下找到;在应用发送完整响应时,此字符串已包含在应用中。
  4. 保留

6c9ad336b5479478

  1. Acceptable HTTP 响应代码设置为 Response Code Classes,将 2xx 设为唯一的响应代码类别。如此一来,针对字符串仅评估带有 2xx 的响应代码,所有其他内容都会自动计为检查失败。5a75d8a9e8a11dd4
  2. 点击继续
  3. 选择 Cloud Pub/Sub 主题作为通知渠道,然后点击确定

d00db9f6ac56d07c.png

  1. 点击继续
  2. 请添加容易识别的商品名 d639135da780cce3.png
  3. 点击 Test 按钮

968753a66ed43a75

  1. 查看并在准备就绪后点击 Create 按钮72e5e2081a36d902

系统将创建拨测并开始监控您的 Cloud Run 应用。您可以在拨测标签页中查看拨测的状态。

3fd026b0c07ef4ec

6. 恭喜

恭喜,您已成功将拨测配置为向 Pub/Sub 发送提醒!