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

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 控制台
  2. 点击创建项目按钮。
  3. 为您的项目输入名称。
  4. 为您的项目选择结算账号。
  5. 点击创建按钮。

系统会创建您的项目,然后您会进入项目信息中心。然后,您就可以开始使用 Google Cloud 服务了。

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

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

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

3. 部署 API 应用

示例应用或 API 的用途是什么?

我们的应用是一个简单的 Inventory API 应用,它公开了一个 REST API 端点,其中包含几个用于列出商品目录项和获取特定商品目录项数量的操作。

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

https://<somehost>/inventory

系统会列出所有商品以及现有库存水平。

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

这样会生成一条记录,其中包含相应商品的商品 ID 和现有库存水平。

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

注意:此 API 应用仅用于演示目的,并不代表安全可靠的 API 实现。目的是让我们快速获得可用的应用,以探索本实验的主要目的,即 Google Cloud Operations。

示例数据和 API 请求/响应

为简单起见,该应用在后端不使用数据库。它包含 3 个示例商品 ID 及其现有库存水平。

产品 ID

现有库存量

I-1

10

I-2

20

I-3

30

以下是 API 请求和响应的示例:

API 请求

API 响应

https://<somehost>/inventory

[ { "I-1": 10, "I-2": 20, "I-3": 30 }]

https://<somehost>/inventory/I-1

{ "productid": "I-1", "qty": 10}

https://<somehost>/inventory/I-2

{ "productid": "I-2", "qty": 20}

https://<somehost>/inventory/I-200

{ "productid": I-200, "qty": -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.png 46edf454cc70c5a6.png

点击“在端口 8080 上预览”。5. 系统随即会打开一个浏览器窗口。您会看到 404 错误,这没关系。修改网址,使其在主机名后仅包含 /inventory。

例如,在我的机器上,它看起来像这样:

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

系统会显示商品目录商品列表,如前所述:

709d57ee2f0137e4.png

  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]。Would you like to enable and retry (this will take a few minutes)? (y/N)? 是
  3. 请指定区域:选择 31 (us-west-1)
  4. 项目 [613162942481] 未启用 API [artifactregistry.googleapis.com]。Would you like to enable and retry (this will take a few minutes)? (y/N)? 是
  5. 从源代码进行部署需要 Artifact Registry Docker 代码库来存储构建的容器。系统将创建位于 [us-west1] 区域中名为 [cloud-run-source-deploy] 的代码库。
  6. Do you want to continue (Y/n)? 是
  7. 是否允许未经身份验证的调用 [my-inventory-api] (y/N)?是

最终,系统会启动相应流程,将您的源代码容器化,将其推送到 Artifact Registry,然后部署 Cloud Run 服务和修订版本。在此过程中,您应耐心等待(可能需要 3-4 分钟),并应看到该过程已完成,且系统会向您显示服务网址。

运行示例如下所示:

87ba8dbf88e8cfa4.png

测试应用

现在,我们已将应用部署到 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.png

点击服务名称可查看详情。示例详细信息如下所示:

33042ae64322ce07.png

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

我们现在开始介绍 Google Cloud Operations Suite。

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

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

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

173f313b4a3c4934.png

  1. 点击创建按钮。ca9a02477da21a44.png
  2. 使用复制图标按钮复制主题名称。您将在下一部分中用到此 ID。

20848252ee83df93.png

5. 创建拨测

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

  1. 前往 Google Cloud Platform 控制台
  2. 点击监控标签页。
  3. 点击拨测标签页。
  4. 点击页面顶部附近的创建正常运行时间检查按钮。

96561799ca500777.png

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

342865c6d921ff41.png

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

6c9ad336b5479478.png

  1. 可接受的 HTTP 响应代码设置为响应代码类,并将 2xx 作为唯一的响应代码类。这样一来,系统只会针对字符串评估 2xx 响应代码,而其他任何响应代码都会自动计为检查失败。5a75d8a9e8a11dd4.png
  2. 点击继续
  3. 选择 Cloud Pub/Sub 主题作为通知渠道,然后点击确定

d00db9f6ac56d07c.png

  1. 点击继续
  2. 添加易于识别的职位名称 d639135da780cce3.png
  3. 点击测试按钮

968753a66ed43a75.png

  1. 检查无误后,点击创建按钮 72e5e2081a36d902.png

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

3fd026b0c07ef4ec.png

6. 恭喜

恭喜!您已成功配置拨测,使其能够向 Pub/Sub 发送提醒!