GSP1024

概览
Managed Service for Prometheus 是 Google Cloud 的全托管式 Prometheus 指标存储和查询服务。此服务基于 Monarch 而构建,后者是与 Cloud Monitoring 相同的全球可扩缩数据存储。
在本实验中,您将设置一个 Google Kubernetes Engine 集群,然后部署 Managed Service for Prometheus,以便从一个简单应用中注入指标。
一个 Prometheus 瘦分支会取代现有的 Prometheus 部署,负责将数据发送到该托管式服务,无需用户干预。然后,可以使用 PromQL,通过该托管式服务支持的 Prometheus Query API 并使用现有的 Cloud Monitoring 查询机制,来查询此数据。
目标
- 将 Managed Service for Prometheus 部署到 GKE 集群。
- 部署一个要接受监控的 Python 应用。
- 创建 Cloud Monitoring 信息中心,用于查看所收集的指标。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 创建 Docker 仓库
在此任务中,您将在 Artifact Registry 中创建一个私有 Docker 仓库,并将映像添加到该私有仓库。在此过程中,需要使用仓库名称来标记映像以指定其目标位置,然后将其推送到 Artifact Registry。
- 在 Cloud Shell 中运行以下命令,以便在 位置新建一个名为 docker-repo 的 Docker 仓库,且使用“Docker repository”(Docker 仓库)来描述该仓库。
gcloud artifacts repositories create docker-repo --repository-format=docker \
--location={{{project_0.default_region | Region}}} --description="Docker repository" \
--project={{{project_0.project_id| Project ID}}}
-
在控制台标题栏的搜索字段中,输入 Artifact Registry,然后点击搜索结果中的“Artifact Registry”。
-
在 Artifact Registry 仓库页面上,验证您能否看到自己的仓库 docker-repo。
-
在 Cloud Shell 中,从存储桶加载预构建的映像:
wget https://storage.googleapis.com/spls/gsp1024/flask_telemetry.zip
unzip flask_telemetry.zip
docker load -i flask_telemetry.tar
- 运行以下命令,将该映像标记为
flask-telemetry:v1:
docker tag gcr.io/ops-demo-330920/flask_telemetry:61a2a7aabc7077ef474eb24f4b69faeab47deed9 \
{{{project_0.default_region | Region}}}-docker.pkg.dev/{{{project_0.project_id| Project ID}}}/docker-repo/flask-telemetry:v1
- 运行以下命令,将该 Docker 映像推送到 Artifact Registry:
docker push {{{project_0.default_region | Region}}}-docker.pkg.dev/{{{project_0.project_id| Project ID}}}/docker-repo/flask-telemetry:v1
点击检查我的进度以验证是否完成了以下目标:
创建 Docker 仓库
任务 2. 设置 Google Kubernetes Engine 集群
在此任务中,您将部署一个标准 GKE 集群并对其进行身份验证。
- 运行以下命令,部署一个标准 GKE 集群,其间将提示您授权并启用 GKE API:
gcloud beta container clusters create gmp-cluster --num-nodes=1 --zone {{{project_0.default_zone | Zone}}} --enable-managed-prometheus
创建集群需要几分钟的时间。请等待创建完成,然后继续进行下一步。
- 运行以下命令,向该集群进行身份验证:
gcloud container clusters get-credentials gmp-cluster --zone {{{project_0.default_zone | Zone}}}
任务 3. 部署 Prometheus 服务
- 运行以下命令创建一个命名空间,用于在其中执行任务:
kubectl create ns gmp-test
点击检查我的进度以验证是否完成了以下目标:
检查是否已部署 Prometheus。
任务 4. 部署应用
- 获取在
/metrics 端点发出指标的应用:
wget https://storage.googleapis.com/spls/gsp1024/gmp_prom_setup.zip
unzip gmp_prom_setup.zip
cd gmp_prom_setup
-
在此步骤中,您将更新 flask_deployment.yaml,以便使用您在之前步骤中推送的映像的名称:
- 使用 nano 打开
flask_deployment.yaml:
nano flask_deployment.yaml
- 将
<ARTIFACT REGISTRY IMAGE NAME> 替换为以下内容:
{{{project_0.default_region | Region}}}-docker.pkg.dev/{{{project_0.project_id| Project ID}}}/docker-repo/flask-telemetry:v1
- 按 CTRL+X 键,然后依次按 Y 键和 Enter 键,以保存更新后的文件并关闭 nano。
-
部署一个简单应用:
kubectl -n gmp-test apply -f flask_deployment.yaml
kubectl -n gmp-test apply -f flask_service.yaml
- 运行以下命令,验证这个简单的 Python Flask 应用是否在提供指标:
url=$(kubectl get services -n gmp-test -o jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}')
注意:必须完全部署该服务,然后才能成功执行 curl 命令。
curl $url/metrics
您应该会看到以下输出内容:
# HELP flask_exporter_info Multiprocess metric
# TYPE flask_exporter_info gauge
flask_exporter_info{version="0.18.5"} 1.0
注意:您可能需要等待片刻,才能看到所需的输出结果。如果未得到预期的输出结果,请重新运行此步骤中的两条命令。
- 通过应用 PodMonitoring 文件,告知 Prometheus 从何处开始抓取指标:
kubectl -n gmp-test apply -f prom_deploy.yaml
- 在完成此处的操作之前,请与该应用进行简单的交互,对其生成一些负载:
timeout 120 bash -c -- 'while true; do curl $(kubectl get services -n gmp-test -o jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'); sleep $((RANDOM % 4)) ; done'
此操作会运行 2 分钟,完成后,您可以创建可视化图表来直观呈现结果!
点击检查我的进度以验证是否完成了以下目标:
检查是否已部署 Flask 应用。
任务 5. 通过指标来观测应用
在这最后一部分,您将使用 gcloud 部署一个自定义监控信息中心,在其中以折线图形式显示此应用的指标。
- 在 Cloud Shell 中,运行以下脚本:
注意:请务必复制这一整个代码块。
gcloud monitoring dashboards create --config='''
{
"category": "CUSTOM",
"displayName": "Prometheus Dashboard Example",
"mosaicLayout": {
"columns": 12,
"tiles": [
{
"height": 4,
"widget": {
"title": "prometheus/flask_http_request_total/counter [MEAN]",
"xyChart": {
"chartOptions": {
"mode": "COLOR"
},
"dataSets": [
{
"minAlignmentPeriod": "60s",
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"apiSource": "DEFAULT_CLOUD",
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_NONE",
"perSeriesAligner": "ALIGN_RATE"
},
"filter": "metric.type=\"prometheus.googleapis.com/flask_http_request_total/counter\" resource.type=\"prometheus_target\"",
"secondaryAggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"metric.label.\"status\""
],
"perSeriesAligner": "ALIGN_MEAN"
}
}
}
}
],
"thresholds": [],
"timeshiftDuration": "0s",
"yAxis": {
"label": "y1Axis",
"scale": "LINEAR"
}
}
},
"width": 6,
"xPos": 0,
"yPos": 0
}
]
}
}
'''
- 创建完成后,返回控制台。在标题栏的搜索字段中,输入 Monitoring 信息中心,然后在搜索结果中点击信息中心。
- 在信息中心列表中,找到新创建的 Prometheus 信息中心示例。点击 Prometheus 信息中心,查看 Prometheus 信息中心示例。
点击检查我的进度以验证是否完成了以下目标:
检查是否已创建信息中心。
恭喜!
您已经了解如何部署支持 Prometheus 指标采集的 GKE 应用,并通过它创建 Cloud Monitoring 信息中心,学习了相关的基础知识。
后续步骤/了解详情
如需了解详情,请查阅 Prometheus 文档,从中查找有关部署自管式指标收集的内容。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 4 月 21 日
上次测试实验的时间:2025 年 4 月 21 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。