从 GDC 项目中部署的工作负载收集指标后,您可以从项目的系统监控实例上查询和查看信息中心内的指标,也可以通过 GDC 气隙设备 HTTP API 查询指标。
在信息中心内查询和查看指标
项目的 Grafana 实例(也称为系统监控实例)包含用于监控项目级组件的数据,以实现数据可观测性,例如 CPU 利用率、存储空间消耗、网络监控、服务器监控、日志、提醒和指标。
如需查看指标,请使用系统监控实例的探索页面上的信息中心。如需查看特定指标,请在探索页面中进行查询。
准备工作
在查询和查看信息中心内的指标之前,您必须先获得对监控实例的访问权限。如需了解详情,请参阅获取信息中心访问权限。
为指标构建查询
通过项目的系统监控实例,监控和查看应用中的数据可观测性指标。实例的集成式界面 (UI) 包含来自标准组件的默认信息中心,以及您根据特定使用情形需求创建的自定义信息中心。假设您的环境已启动并运行,您会立即在可用的信息中心页面中看到几个指标信息中心。
通过界面查询指标,以直观方式从项目中检索指标,并获取集成视图来监控应用。如需过滤结果,请使用查询语言表达式按标签搜索指标。
系统监控实例端点
以下网址是 platform-obs 项目的监控实例的端点:
https://GDC_URL/PROJECT_NAMESPACE/grafana
替换以下内容:
- GDC_URL:您组织在 GDC 中的网址
- PROJECT_NAMESPACE:项目的命名空间
查询指标
如需查询项目中的指标,请完成以下步骤:
完成以下步骤以检索指标:
- 在 GDC 控制台中,选择一个项目。
- 在导航菜单中,依次点击操作 > 监控。
- 点击 View all in Grafana(在 Grafana 中查看全部)。
系统会打开一个新页面,其中包含项目的监控实例的网址。
- 在监控实例的界面上,点击导航菜单中的探索 探索,打开探索页面。
- 从探索栏的下拉菜单中选择 prometheus 以检索指标。
输入查询内容,使用 PromQL(Prometheus 查询语言)表达式搜索指标。您可以通过以下任一方式执行此步骤:
- 从指标和标签过滤条件下拉菜单中为查询选择指标和标签。点击添加图标 添加,可在查询中添加更多标签。然后,点击运行查询。
- 直接在指标文本字段中输入查询,然后按 Shift+Enter 运行查询。
该页面会显示与您的查询匹配的指标。
图 1. 用于从 Grafana 界面查询指标的菜单选项。
在图 1 中,prometheus 选项会显示一个界面,您可以在其中通过 Grafana 构建查询来检索指标。
如需查看可用于查询指标的标签的值示例,请参阅查询和标签示例。
示例查询和标签
您可以使用指标名称和键值标签查询收集的指标。因此,PromQL 查询具有以下语法:
metric_name{label_one="value", label_two="value"}
借助标签,您可以区分指标的特征。这样一来,容器作者就可以让其工作负载生成指标,并添加标签来过滤这些指标,以满足自己的需求。例如,您可以设置一个 api_http_requests_total
指标来统计收到的 HTTP 请求数。然后,您可以为此指标添加 request_method
标签,该标签采用 POST
、GET
或 PUT
值。因此,您需要为可能收到的每种请求类型创建三个指标流。在本例中,如需查找 HTTP GET
请求的数量,请运行以下查询:
api_http_requests_total{request_method="GET"}
以下是 MonitoringTarget
自定义资源添加的一些默认标签,您可以使用这些标签来查询指标:
_gdch_service
:服务的简称cluster
:集群的名称。container_name
:Pod 中容器的名称namespace_name
:您的项目命名空间pod_name
:Pod 名称前缀
下表介绍了抓取服务自动添加的标签:
指标标签 | 说明 |
---|---|
job |
用于收集指标的抓取作业的内部名称。由 MonitoringTarget 自定义资源创建的作业的名称采用以下模式:PROJECT_NAME-obs-system/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/J PROJECT_NAME-obs-system/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/J I 和 J 是内部确定的唯一编号,用于避免名称冲突。 |
instance |
废弃服务的 $IP:$PORT 。如果工作负载资源有多个副本,请使用此字段来区分它们。 |
以下代码示例展示了如何使用标签和值来查询不同的指标,以实现数据可观测性:
查看项目中已处理操作的所有指标流:
processed_ops_total
查看集群中收集的已处理操作:
processed_ops_total{cluster="CLUSTER_NAME"}
查看集群上收集的 CPU 使用率:
cpu_usage{cluster="CLUSTER_NAME"}
使用指标重新添加标签工具来添加被抓取的容器最初未公开的标签,并重命名生成的指标。您必须配置 MonitoringTarget
CR,以便在收集的指标上添加标签。在 CR 的 metricsRelabelings
字段中指定这些标签。如需了解详情,请参阅标签指标。
从 Cortex API 查询指标
Cortex 是 GDC 中 Prometheus 指标的长期存储空间。可观测性平台公开了一个 Cortex HTTP API 端点,用于查询和读取项目中的指标、提醒和其他 Prometheus 时序数据。
直接通过 HTTP API 查询指标,以读取和导出指标以及其他时序数据到外部工具,设置自动化任务,调整响应,并根据您的系统监控使用情形构建集成。例如,将输出插入到其他命令中,将详细信息导出为文本文件格式,或配置 Linux cron 作业。您可以通过命令行界面 (CLI) 或网络浏览器调用该 API,并使用查询语言表达式作为端点参数来获取 JSON 格式的结果。
本部分介绍了如何使用 Prometheus API 规范从 CLI 调用 Cortex API 端点,以查询指标来获取数据可观测性。
准备工作
您必须获得授权才能通过 CLI 查询指标。如需获得访问 Cortex API 端点所需的权限,请让您的项目 IAM 管理员向您授予 Project Cortex Prometheus Viewer (project-cortex-prometheus-viewer
) 角色。
使用 kubectl
命令为每个角色创建以下角色绑定,以用于 Cortex Prometheus:
Infrastructure Operator (IO) Root-Admin -
Project Cortex Prometheus Viewer
:kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding io-cortex-prometheus-viewer-binding -n infra-obs --user=fop-infrastructure-operator@example.com --role=project-cortex-prometheus-viewer
平台管理员 (PA) 根管理员 -
Project Cortex Prometheus Viewer
:kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding pa-cortex-prometheus-viewer-binding -n platform-obs --user=fop-platform-admin@example.com --role=project-cortex-prometheus-viewer
应用运营商 (AO) Root-Admin -
Project Cortex Prometheus Viewer
:kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding project-cortex-prometheus-viewer-binding -n PROJECT_NAME --user=USER_NAME --role=project-cortex-prometheus-viewer
替换以下内容:
- PROJECT_NAME:您的项目的名称。
- USER_NAME:需要角色绑定的用户的账号名称。
创建角色绑定后,您可以使用登录用户名访问 Prometheus API。
HTTP API 端点
以下网址是用于访问 platform-obs
项目中指标的 HTTP API 端点:
https://GDC_URL/PROJECT_NAME/cortex/prometheus/
替换以下内容:
- GDC_URL:您组织在 GDC 中的网址。
- PROJECT_NAME:您的项目的名称。
调用 API 端点
请按以下步骤操作,以便从 CLI 访问 Cortex API 端点并查询指标:
- 确保您满足前提条件。
- 打开 CLI。
使用
curl
工具调用 Cortex 端点,并使用标准 https://prometheus.io/docs/prometheus/latest/querying/api/ 扩展网址以查询指标。例如:curl https://console.org-1.zone1.google.gdch.test/alice/cortex/prometheus/api/v1/query?query=my_metric{cluster="org-1-system"}&time=2015-07-01T20:10:51.781Z
您可以在 CLI 中获得以下命令的输出。API 响应格式为 JSON。