关于此 Codelab
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 项目
如需选择现有项目,请使用下拉菜单:
如需在 Google Cloud 中创建新项目,您可以按照以下步骤操作:
- 前往 Google Cloud Platform Console。
- 点击 Create Project 按钮。
- 为您的项目输入名称。
- 为您的项目选择结算账号。
- 点击创建按钮。
系统将创建您的项目,并将您转到项目信息中心。接下来,您就可以开始使用 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://<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 图标:
预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:
这个虚拟机装有您需要的所有开发工具。它提供了一个持久的 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 上运行应用
您可以按照以下步骤在本地运行应用:
- 从终端中,通过以下命令导航到该 API 的 Python 版本:
$
cd
cloud-code-sample-repository
$
cd
python-flask-api
- 在终端中,输入以下命令(在撰写本文时,Cloud Shell 已安装 Python 3.9.x,我们将使用默认版本。如果您打算在笔记本电脑本地运行,可以使用 Python 3.8+:
$
python
app.py
- 您可以运行以下命令,以在本地启动 Python 服务器。
点击“在端口 8080 上预览”。5. 这将打开一个浏览器窗口。系统会显示 404 错误,这没关系。修改网址,并将其更改为在主机名后面仅包含 /inventory。
例如:在我的机器上类似,如下所示:
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
系统随即会显示广告资源项列表,如前所述:
- 现在您可以转到终端并按 Ctrl-C 来停止服务器
部署应用
现在,我们会将此 API 应用部署到 Cloud Run。该流程涉及利用 gcloud 命令行客户端运行命令以将代码部署到 Cloud Run。
从终端发出以下 gcloud 命令:
$ gcloud run deploy --source .
这会询问您多个问题,其中一些要点如下:
- 服务名称 (python-flask-api):采用此默认值,或者选择类似于 my-inventory-api 的名称
- 项目 [613162942481] 未启用 API [run.googleapis.com]。要启用并重试(这将需要几分钟)吗?(是/否)?是
- 请指定区域:选择 31 (us-west-1)
- 项目 [613162942481] 未启用 API [artifactregistry.googleapis.com]。要启用并重试(这将需要几分钟)吗?(是/否)?是
- 从源代码部署需要使用 Artifact Registry Docker 代码库来存储构建的容器。系统将在区域 [us-west1] 中创建名为 [cloud-run-source-deploy] 的代码库。
- 是否要继续(是/否)?是
- 是否允许对 [my-inventory-api] 进行未经身份验证的调用 (y/N)?是
最终,这将启动以下流程:获取源代码,对其进行容器化,将其推送到 Artifact Registry,然后部署 Cloud Run 服务 + 修订版本。请耐心完成该过程(可能需要 3-4 分钟),您应该会看到系统向您显示的服务网址。
运行示例如下所示:
测试应用
现在,我们已将应用部署到 Cloud Run,您可以按如下方式访问 API 应用:
- 记下上一步中的服务网址。例如,在我的设置中,它显示为
https://my-inventory-api-bt2r5243dq-uw.a.run.app
。将其命名为<SERVICE_URL>
。 - 打开浏览器并访问以下 3 个 API 端点网址:
<SERVICE_URL>/inventory
<SERVICE_URL>/inventory/I-1
<SERVICE_URL>/inventory/I-100
它应该符合我们在前面的 API 请求和响应示例部分提供的规范。
从 Cloud Run 获取服务详情
我们将 API 服务部署到了 Cloud Run,这是一个无服务器计算环境。我们可以随时通过 Google Cloud 控制台访问 Cloud Run 服务。
从主菜单导航到 Cloud Run。系统将显示您在 Cloud Run 中运行的服务的列表。您应该会看到刚刚部署的服务。根据您选择的名称,您应该会看到如下内容:
点击 Service 名称以查看详细信息。示例详情如下所示:
注意网址,该网址只是一个服务网址,您可以在浏览器中插入该网址,然后访问我们刚刚部署的 Inventory API。查看指标和其他详细信息。
现在,我们从 Google Cloud Operations Suite 开始。
4. 创建 Pub/Sub 主题以接收提醒通知
如需创建 Pub/Sub 主题,您可以在 Google Cloud 控制台中按照以下步骤操作:
- 在搜索框中搜索 Pub/Sub,然后导航到 Pub/Sub。
- 如果您尚未进入主题标签页,请点击该标签页。
- 点击创建主题按钮。
- 输入主题的名称。
- 点击创建按钮。
- 使用复制图标按钮复制主题名称。在下一部分,您将需要用到该文件。
5. 创建拨测
如需为 Google Cloud Run 应用创建拨测,请执行以下操作:
- 前往 Google Cloud Platform Console。
- 点击监控标签页。
- 点击拨测标签页。
- 在页面顶部附近,点击 Create Uptime Check 按钮。
- 请使用以下值:
- 协议:HTTPS
- 资源类型:网址
- 主机名:输入 Cloud Run 服务网址部分(不含 https)。以下屏幕显示了一个示例。如果您不确定服务网址,请从 Google Cloud 控制台主转到 Cloud Run,然后按照之前的说明前往 Cloud Run 服务的详细信息页面,以获取服务网址。
- 路径:healthy
- 检查频率:1 分钟
- 点击继续
- 开启内容匹配功能已启用
- 输入“All Izz Well”在响应内容下找到;在应用发送完整响应时,此字符串已包含在应用中。
- 保留
- 将 Acceptable HTTP 响应代码设置为 Response Code Classes,将 2xx 设为唯一的响应代码类别。如此一来,针对字符串仅评估带有 2xx 的响应代码,所有其他内容都会自动计为检查失败。
- 点击继续
- 选择 Cloud Pub/Sub 主题作为通知渠道,然后点击确定
- 点击继续
- 请添加容易识别的商品名
- 点击 Test 按钮
- 查看并在准备就绪后点击 Create 按钮
系统将创建拨测并开始监控您的 Cloud Run 应用。您可以在拨测标签页中查看拨测的状态。
6. 恭喜
恭喜,您已成功将拨测配置为向 Pub/Sub 发送提醒!