将 Cloud Monitoring 指标映射到 PromQL

您可以使用 Prometheus 查询语言 (PromQL) 查询 Cloud Monitoring 存储的所有指标。

将 Cloud Monitoring 指标名称映射到 PromQL

Cloud Monitoring 指标名称包括两个组成部分:网域(例如 compute.googleapis.com/)和路径(例如 instance/disk/max_read_ops_count)。由于 PromQL 仅支持特殊字符 :_,因此您必须先使 Monitoring 指标名称与 PromQL 兼容。如需将 Monitoring 指标名称映射到 PromQL,请应用以下规则:

  • 将第一个 / 替换为 :
  • 将所有其他特殊字符(包括 . 和其他 / 字符)替换为 _

下表列出了一些指标名称及其 PromQL 等效名称:

Cloud Monitoring 指标名称 PromQL 指标名称
compute.googleapis.com/instance/cpu/utilization compute_googleapis_com:instance_cpu_utilization
logging.googleapis.com/log_entry_count logging_googleapis_com:log_entry_count

您可以像查询 Prometheus 直方图一样查询 Cloud Monitoring 分布值指标,并将 _count_sum_bucket 后缀附加到指标名称:

Cloud Monitoring 指标名称 PromQL 指标名称
networking.googleapis.com/vm_flow/rtt networking_googleapis_com:vm_flow_rtt_sum
networking_googleapis_com:vm_flow_rtt_count
networking_googleapis_com:vm_flow_rtt_bucket

指定受监控的资源类型

如果指标仅与单个 Cloud Monitoring 受监控的资源类型相关联,则 PromQL 查询无需手动指定资源类型即可运行。但是,Cloud Monitoring 中的某些指标(包括一些系统指标)会映射到多个资源类型。

您可以通过查看Trusted Cloud by S3NS 指标列表来了解哪些受监控的资源类型映射到指标。文档中的每个条目都会在该类型下每个条目的第一列中列出关联的受监控资源类型。如果未列出任何受监控的资源类型,则指标可以与任何类型关联。

如果一个指标与多个资源类型相关联,您必须在 PromQL 查询中指定资源类型。您可以使用特殊标签 monitored_resource 来选择资源类型。

受监控的资源类型在大多数情况下是短字符串,如 gce_instance,但偶尔显示为完整 URI,如 monitoring.googleapis.com/MetricIngestionAttribution。格式正确的 PromQL 查询可能如下所示:

  • logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
  • loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}

如果您在需要时不使用 monitored_resource 标签,则会收到以下错误:

metric is configured to be used with more than one monitored resource type; series selector must specify a label matcher on monitored resource name

解决标签冲突

在 Cloud Monitoring 中,标签可以属于指标或资源。如果指标标签与资源标签具有相同的键名称,您可以通过将前缀 metric_ 添加到查询中的标签键名称来专门引用指标标签。

例如,假设您在指标 example.googleapis.com/user/widget_count 中同时有名为 pod_name 的资源标签和指标标签。

  • 如需按资源标签的值进行过滤,
    请使用 example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}

  • 如需按指标标签的值进行过滤,
    请使用 example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}