GSP1026

概览
在本实验中,您将使用 Managed Service for Prometheus,通过导出器从其他基础架构来源收集指标。
目标
在本实验中,您将学习如何完成以下操作:
- 部署 GKE 实例
- 配置
PodMonitoring 自定义资源和 node-exporter 工具
- 在本地构建 GMP 二进制文件并将其部署到 GKE 实例
- 应用 Prometheus 配置以开始收集指标
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 集群
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. 设置命名空间
- 创建
gmp-test Kubernetes 命名空间,用于存放示例应用中创建的资源:
kubectl create ns gmp-test
检查是否已部署 Prometheus
任务 3. 部署示例应用
该托管式服务提供了一个示例应用清单文件,该应用会在其指标端口上发出 Prometheus 指标。该应用使用三个副本。
kubectl -n gmp-test apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.2.3/examples/example-app.yaml
任务 4. 配置 PodMonitoring 资源
要注入示例应用发出的指标数据,您需要使用目标抓取。目标抓取和指标注入通过 Kubernetes 自定义资源进行配置。该托管式服务使用 PodMonitoring 自定义资源 (CR)。
PodMonitoring 自定义资源仅会在部署该自定义资源的命名空间中抓取目标。如需抓取多个命名空间中的目标,请在每个命名空间中都部署同一 PodMonitoring 自定义资源。您可以运行 kubectl get podmonitoring -A 命令,来验证 PodMonitoring 资源是否安装在预期的命名空间中。
如需查看所有 Managed Service for Prometheus 自定义资源的参考文档,请参阅 prometheus-engine/doc/api 参考文档。
以下清单文件在 gmp-test 命名空间中定义了一个名为 prom-example 的 PodMonitoring 资源。该资源会使用 Kubernetes 标签选择器,来查找该命名空间中标签为 app 且值为 prom-example 的所有 Pod。每 30 秒,就会在名为 metrics 的端口上通过 /metrics HTTP 路径抓取一次匹配的 Pod。
apiVersion: monitoring.googleapis.com/v1alpha1
kind: PodMonitoring
metadata:
name: prom-example
spec:
selector:
matchLabels:
app: prom-example
endpoints:
- port: metrics
interval: 30s
kubectl -n gmp-test apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.2.3/examples/pod-monitoring.yaml
您的托管式收集器现在正抓取匹配的 Pod。
要配置横向收集,以便对所有命名空间中的一系列 Pod 进行抓取,请使用 ClusterPodMonitoring 资源。ClusterPodMonitoring 资源提供与 PodMonitoring 资源相同的接口,但不会限定只能在给定的命名空间中发现匹配的 Pod。
注意:一个附加的“targetLabels”字段提供了简化的 Prometheus 式标签重写配置。您可以使用标签重写,将 Pod 标签添加到注入的时序上。您无法覆盖强制性的目标标签;如需查看这些标签的列表,请参阅 prometheus_target 资源。
如果您在 GKE 上运行,则可以执行以下操作:
- 如需查询示例应用注入的指标,请参阅“从 Prometheus 服务中查询数据”。
- 如需了解如何过滤导出的指标以及如何调整 prom-operator 资源,请参阅“托管式收集的其他主题”。
任务 5. 下载 Prometheus 二进制文件
- 从以下存储桶下载 Prometheus 二进制文件:
git clone https://github.com/GoogleCloudPlatform/prometheus && cd prometheus
git checkout v2.28.1-gmp.4
wget https://storage.googleapis.com/kochasoft/gsp1026/prometheus
chmod a+x prometheus
任务 6. 运行 Prometheus 二进制文件
- 将您的项目 ID 保存到变量中:
export PROJECT_ID=$(gcloud config get-value project)
- 将您的可用区保存到变量中。运行 Prometheus 二进制文件时将会使用这些值。
export ZONE={{{project_0.default_zone | Zone}}}
- 使用以下命令,在 Cloud Shell 中运行该 Prometheus 二进制文件:
./prometheus \
--config.file=documentation/examples/prometheus.yml --export.label.project-id=$PROJECT_ID --export.label.location=$ZONE
在该 Prometheus 二进制文件开始运行后,您应该能够在控制台界面中前往托管式 Prometheus 服务,然后运行 PromQL 查询“up”,以查看该 Prometheus 二进制文件是否可用(如果可用,将显示 localhost 正在运行的实例作为实例名称)。
任务 7. 下载并运行节点导出器
-
在 Cloud Shell 中打开新标签页,以运行 node_exporter 命令。
-
在 Cloud Shell 环境中下载并运行该导出器:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
./node_exporter
注意:在接下来的几个步骤中,您将使用 node_exporter 工具所运行的端口来修改 Prometheus 的配置。
您应该会看到类似以下输出,表明 Node Exporter 此时正在运行,并且通过端口 9100 暴露指标:
ts=2023-03-01T10:27:17.262Z caller=node_exporter.go:199 level=info msg="Listening on" address=:9100
ts=2023-03-01T10:27:17.263Z caller=tls_config.go:195 level=info msg="TLS is disabled." http2=false
创建 config.yaml 文件
- 在 Cloud Shell 的第一个标签页中停止正在运行的 Prometheus 二进制文件,然后准备一个将会通过节点导出器采集指标的新配置文件:
vi config.yaml
- 创建一个
config.yaml 文件,其规范如下:
global:
scrape_interval: 15s
scrape_configs:
- job_name: node
static_configs:
- targets: ['localhost:9100']
- 上传您创建的
config.yaml 文件进行验证:
export PROJECT=$(gcloud config get-value project)
gsutil mb -p $PROJECT gs://$PROJECT
gsutil cp config.yaml gs://$PROJECT
gsutil -m acl set -R -a public-read gs://$PROJECT
检查是否已正确配置 config.yaml
- 通过运行以下命令,重新运行 Prometheus 并指向新的配置文件:
./prometheus --config.file=config.yaml --export.label.project-id=$PROJECT --export.label.location=$ZONE
使用通过导出器采集的以下统计指标,在 PromQL 查询中查看其计数。
- 在 Cloud Shell 中,点击网页预览图标。

- 选择更改预览端口,将端口设置为
9090,然后点击更改并预览进行预览。
在 PromQL 查询编辑器中,输入以 node_ 为前缀的任意查询。这会显示一个指标输入列表,您可以从中选择所需的指标,使之在图形化编辑器中可视化。
- “node_cpu_seconds_total”给出了图形化数据。

请尝试选择所显示的其他指标,查看导出的数据。
恭喜!
在本实验中,您部署了一个 GKE 实例并配置了 node-exporter。然后,您配置了 GMP 二进制文件,用于从 node-exporter 注入指标,并且查看了这些指标。
后续步骤/了解详情
您可以详细了解 Google Cloud Managed Service for Prometheus。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 4 月 16 日
上次测试实验的时间:2023 年 10 月 27 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。