GSP1027

概览
Google Cloud Managed Service for Prometheus 会依据注入 Cloud Monitoring 的样本数量和发送到 Monitoring API 的读取请求收费。注入的样本数量是产生费用的主要因素。
在本实验中,您将探索在使用 Google Cloud 上的 Managed Service for Prometheus 时如何控制费用。
目标
在本实验中,您将学习如何完成以下操作:
- 在 Google Kubernetes Engine (GKE) 集群中部署 Google Managed Prometheus (GMP) 和一个 Python 应用
- 通过过滤生成的指标数据,减少发送到该托管式服务的时序指标数量
- 通过更改抓取间隔来减少收集的样本数量
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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. 部署 GKE 集群
- 部署一个基础的 GKE 集群,用于准备本实验环境:
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}}}
任务 2. 部署托管式集合
配置 PodMonitoring 资源
以下清单文件在 gmp-test 命名空间中定义了一个名为 prom-example 的 PodMonitoring 资源。该资源会使用 Kubernetes 标签选择器,来查找该命名空间中标签为 app 且值为 prom-example 的所有 Pod。每 30 秒,就会在名为 metrics 的端口上通过 /metrics HTTP 路径抓取一次匹配的 Pod。
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
namespace: gmp-system
name: collector
labels:
app.kubernetes.io/name: collector
app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
selector:
matchLabels:
app.kubernetes.io/name: collector
endpoints:
- port: prom-metrics
interval: 10s
- port: cfg-rel-metrics
interval: 10s
kubectl -n gmp-system apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/main/examples/self-pod-monitoring.yaml
您的托管式收集器现在正抓取匹配的 Pod。
部署示例应用
该托管式服务提供一个清单文件,以用于部署示例应用,后者会在指标端口上发出 Prometheus 指标。该应用使用三个副本。
kubectl -n gmp-system apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/main/examples/example-app.yaml
Check if prometheus has been deployed
任务 3. Cloud Monitoring
如需以 Cloud Monitoring 时序形式查看 Managed Service for Prometheus 数据,请使用 Metrics Explorer。如需配置 Metrics Explorer 以显示指标,请执行以下操作:
- 从 Cloud 控制台转到 Monitoring。
- 在 Monitoring 导航窗格中,点击
Metrics Explorer。
- 指定要在图表上显示的数据。您可以使用 MQL 编辑器来完成此操作。
任务 4. 填充图表
go_memstats_heap_alloc_bytes
选择此选项后,系统会填充图表,如下图所示。

任务 5. 过滤导出的指标
如果收集大量数据,则可能需要阻止一些时序发送到 Managed Service for Prometheus,以降低费用。
若要过滤导出的指标,您可以在 OperatorConfig 资源中配置一组 PromQL 序列选择器。如果时序满足至少一个选择器的条件,则导出到 Managed Service for Prometheus。
- 打开
OperatorConfig 资源进行修改:
kubectl -n gmp-public edit operatorconfig config
- 在 apiVersion 行之后,按“i”进入插入模式。前往最后一行,然后按 Enter 键另起一行。确保行首没有缩进。然后粘贴以下代码:
collection:
filter:
matchOneOf:
- '{job="prom-example"}'
- '{__name__=~"job:.+"}'
文件应如下所示:

- 若要保存文件并退出,请按“Esc”键,然后输入“:wq”,再按 Enter 键。
此添加操作会导致仅导出“prometheus”作业的指标以及由聚合到作业级别(遵循命名最佳实践时)的记录规则生成的指标。所有其他时序的样本都会过滤掉。默认情况下,不指定选择器,并导出所有时序。
filter.matchOneOf 配置部分的语义与 Prometheus 联盟的 match[] 参数相同。
- 创建
op-config.yaml 文件:
vi op-config.yaml
- 将以下代码复制到
op-config.yaml 文件中:
apiVersion: monitoring.googleapis.com/v1alpha1
collection:
filter:
matchOneOf:
- '{job="prom-example"}'
- '{__name__=~"job:.+"}'
kind: OperatorConfig
metadata:
annotations:
components.gke.io/layer: addon
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"monitoring.googleapis.com/v1alpha1","kind":"OperatorConfig","metadata":{"annotations":{"components.gke.io/layer":"addon"},"labels":{"addonmanager.kubernetes.io/mode":"Reconcile"},"name":"config","namespace":"gmp-public"}}
creationTimestamp: "2022-03-14T22:34:23Z"
generation: 1
labels:
addonmanager.kubernetes.io/mode: Reconcile
name: config
namespace: gmp-public
resourceVersion: "2882"
uid: 4ad23359-efeb-42bb-b689-045bd704f295
- 上传您创建的配置文件进行验证:
export PROJECT=$(gcloud config get-value project)
gsutil mb -p $PROJECT gs://$PROJECT
gsutil cp op-config.yaml gs://$PROJECT
gsutil -m acl set -R -a public-read gs://$PROJECT
Check if metrics filter has been applied
任务 6. 运行查询
-
点击 + 添加查询以创建新的查询,然后在选择指标输入过滤器中输入 up/gauge。
-
选择生成的 Prometheus 指标,然后选择应用。
任务 7. 监控应用
- 创建 prom-example-config.yaml 文件进行验证:
vi prom-example-config.yaml
- 将以下代码复制到文件中:
apiVersion: monitoring.googleapis.com/v1alpha1
kind: PodMonitoring
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"monitoring.googleapis.com/v1alpha1","kind":"PodMonitoring","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"prom-example"},"name":"prom-example","namespace":"gmp-test"},"spec":{"endpoints":[{"interval":"30s","port":"metrics"}],"selector":{"matchLabels":{"app":"prom-example"}}}}
creationTimestamp: "2022-03-14T22:33:55Z"
generation: 1
labels:
app.kubernetes.io/name: prom-example
name: prom-example
namespace: gmp-test
resourceVersion: "2648"
uid: c10a8507-429e-4f69-8993-0c562f9c730f
spec:
endpoints:
- interval: 60s
port: metrics
selector:
matchLabels:
app: prom-example
status:
conditions:
- lastTransitionTime: "2022-03-14T22:33:55Z"
lastUpdateTime: "2022-03-14T22:33:55Z"
status: "True"
type: ConfigurationCreateSuccess
observedGeneration: 1
- 在 Cloud Shell 中运行以下命令:
export PROJECT=$(gcloud config get-value project)
gsutil cp prom-example-config.yaml gs://$PROJECT
gsutil -m acl set -R -a public-read gs://$PROJECT
Check if scrape interval has been changed
本实验到此结束。
恭喜
您已了解如何降低 Managed Service for Prometheus 的使用费用。您部署了 Prometheus 和一个示例应用。然后,您应用了指标过滤器并更改了抓取间隔,以降低使用 Google Managed Prometheus 服务注入指标的相关费用。
后续步骤/了解详情
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 2 月 17 日
上次测试实验的时间:2025 年 2 月 17 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。