分布值指标简介

本文档介绍如何创建和解读显示 Distribution 值类型的指标数据的图表。如果单个测量值太多而无法收集,但有关这些测量值的统计信息(如平均值或百分位)很有价值,服务无法使用此值类型。 例如,如果应用依赖于 HTTP 流量,您可以使用分布值指标来捕获 HTTP 响应延迟时间,以评估 HTTP 请求的完成速度。

为了说明直方图的创建方式,假设有一个服务测量请求的 HTTP 延迟时间,并使用一个具有分布值类型的指标报告此数据。每分钟报告一次数据。该服务定义指标的值的范围(称为“桶”),并记录每个桶中的测量值的计数。例如,当一个 HTTP 请求完成时,该服务会递增其范围包括该请求的延迟时间值的桶中的计数。这些计数用于创建该分钟的值的直方图。

假设在一分钟内测量的延迟时间为 5、1、3、5、6、10 和 14。 如果桶为 [0, 4)、[4, 8)、[8, 12) 和 [12, 16),则此数据的直方图为 [2, 3, 1, 1]。下表显示了各测量值如何影响每个桶的计数:

存储桶 延迟时间测量值 存储分区中值的数量
[12,16) 14 1
[8,12) 10 1
[4,8) 5, 5, 6 3
[0,4) 1, 3 2

将此类数据写入时间序列时,会创建一个 Point 对象。对于具有分布值的指标,该对象包含值直方图。在此采样周期中, Point 包含 [2, 3, 1, 1]。单个测量值不会写入时间序列。

假设上表将延迟时间数据的直方图记录为 测量时间为 1:00。该表格说明了如何 并将其转换为分桶计数。假设时间 1:01、1:02 和 1:03 的令牌桶计数如下表所示:

存储桶
1:00 的直方图

1:01 的直方图

1:02 的直方图

1:03 的直方图
[12、16) 1 6 0 1
[8,12) 1 0 2 2
[4,8) 3 1 1 8
[0,4) 2 6 10 3

上表显示了一系列按时间编入索引的直方图。每个 表示一分钟内的延迟数据。如需获取特定时间的测量次数,请对分桶计数进行求和。不过, 由于这些测量数据不可用,因此不会显示实际测量结果 在分布值指标中使用

热图图表

热图图表旨在显示包含分布值的单个时间序列。对于这些图表,X 轴表示时间,Y 轴表示桶,颜色表示值。颜色越亮表示值越高。例如,热图的深色区域表示存储分区计数低于黄色或白色区域。

下图是上文示例的热图表示形式:

示例的热图图表。

在上图中,热图用黑色表示最小桶计数 0,用黄色表示最大桶计数 10。红色和橙色表示这两个极值之间的值。

由于热图图表仅能显示单个时序,因此您必须设置 聚合选项来组合所有时序。

要使用 Metrics Explorer 显示 RTT 延迟时间,请执行以下操作:
  1. 在 Google Cloud 控制台中,转到 Metrics Explorer 页面:

    进入 Metrics Explorer

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 指标元素中,展开选择指标菜单,在过滤栏中输入 RTT latencies,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源菜单中,选择虚拟机实例
    2. 活跃指标类别菜单中,选择 Vm_flow
    3. 活跃指标菜单中,选择 RTT 延迟时间
    4. 点击应用

在前面的示例中,热图图表是通过从菜单中选择值进行配置的。不过,您也可以使用 Monitoring Query Language (MQL) 来绘制图表 分布值指标。如需输入 MQL 查询,请执行以下操作:

  1. 在查询构建器窗格的工具栏中,选择名为  MQL PromQL 的按钮。
  2. 验证已在MQL切换开关中选择 MQL。语言切换开关位于同一工具栏中,用于设置查询的格式。
  3. 输入查询,然后运行您的查询。

例如,在代码编辑器中输入以下内容:

fetch gce_instance
| metric 'networking.googleapis.com/vm_flow/rtt'
| align delta(1m)
| every 1m
| group_by [], [aggregate(value.rtt)]

在上面的表达式中,系统会提取时间序列数据、对其进行校准,然后对其进行分组。校准过程使用 delta 校准函数,函数为 1 分钟校准时间段。由于 group_by 的第一个参数是 [], 合并所有时序。 第二个参数 [aggregate(value.rtt)] 定义了时间序列的组合方式。在此示例中,对于每个时间戳,rtt 字段的值 与 aggregate 函数结合使用, 由 MQL 选择

如果您使用菜单选择指标,然后切换到 MQL,系统会将您的选择转换为严格形式的 MQL 查询:

fetch gce_instance
| metric 'networking.googleapis.com/vm_flow/rtt'
| align delta(1m)
| every 1m
| group_by [], [value_rtt_aggregate: aggregate(value.rtt)]

上一个表达式在功能上等同于原始表达式 MQL 示例。

有关 MQL 的详情,请参阅 Monitoring Query Language 概览

折线图和条形图

旨在显示标量数据的折线图、堆叠条形图和堆叠折线图无法显示分布值。如需使用这些图表类型之一显示具有分布值的指标,您必须将直方图值转换为标量值。例如,您可以设置聚合选项来计算 或计算百分位。

如需了解如何在折线图上显示分布值指标,请参阅下一部分。

聚合和分布指标

聚合是对时序中的点进行正则化以及合并多个时序的过程。分布类型指标的聚合与值类型为整数或双精度数的指标相同。但是,图表类型要求对用于校准和分组时间序列的选择施加一些要求。

热图图表

热图图表显示分布值时间序列。因此, 校准函数分组函数 必须设置为创建单个时序。

当图表显示热图时,选择 sumdelta 对齐函数。这些函数在存储分区级别中将同一校准时间段的单个时间序列的所有样本组合在一起,并且结果为分布值。例如,如果一个样本的两个相邻样本 [2, 3, 1, 1] 和 [2, 5, 4, 1],则使用总和校准 函数会生成 [4, 8, 5, 2]。

分组函数定义不同时序的合并方式。此函数有时称为聚合器或缩减器。对于热图,请将分组函数设置为 sum 函数。 总和函数在所有直方图中添加相同桶值,从而产生新的直方图。例如,timeseries-A 的值 [2, 3, 1, 1] 和 timeseries-B 的值 [1, 5, 2, 2] 的总和为 [3, 8, 3, 3]。

折线图

折线图仅显示标量值的时序。如果您选择的是具有分布值的指标,则系统会使用最佳参数配置图表,以显示热图。Aggregation 元素的字段 设置为 DistributionNone

  • 对“分布”的解释取决于具体指标。 对于具有 GAUGE 指标类型的分布值指标,默认校准函数设置为 sum。当具有分布值的指标类型具有 CUMULATIVE 指标种类时,默认对齐函数为 DELTA

  • 设置为“无”可确保合并所有时间。

如果您想在折线图中显示分布值指标, 则必须更改图表的默认设置。 例如,如需在信息中心上配置折线图,以显示分布值指标的每个时序的第 99 百分位,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在工具栏中,点击  添加微件
  3. Add widget 对话框中,选择  Metric
  4. 指标元素中,选择 VM Instance - RTT latencies 指标。
  5. Aggregation 元素中,展开第一个菜单并选择 第 99 百分位
  6. Display 窗格中,将 Widget type 菜单的值设置为 折线图
  7. 可选:在 Aggregation 元素中,展开第二个菜单并选择 用于对时序进行分组的标签。默认情况下,系统不会选择任何标签 因此图表上会显示一条线

后续步骤

如需了解如何确定指标的桶模型以及如何解读百分位,请参阅百分位和分布值指标