分布值指标简介

本文档介绍如何创建和解读显示 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

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

热图图表

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

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

示例的热图图表。

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

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

如需使用 Metrics Explorer 显示虚拟机实例的 RTT 延迟时间总和,请执行以下操作:
  1. 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择  Metrics Explorer

    进入 Metrics Explorer

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

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

  1. 在查询构建器窗格的工具栏中,选择名称为  MQL PromQL 的按钮。
  2. 确认在语言切换开关中选择了 MQL。语言切换开关与用于设置查询格式的工具栏中相同
  3. 输入查询内容,然后运行查询。

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

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

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

如果您使用菜单选择指标,然后切换到 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

  • 设置 None 可确保将所有时间时间合并在一起。

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

  1. 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择  信息中心

    前往信息中心

  2. 在工具栏中,点击  添加微件
  3. 添加微件对话框中,选择  指标
  4. 指标元素中,选择虚拟机实例 - RTT 延迟时间指标。
  5. 聚合元素中,展开第一个菜单,然后选择第 99 百分位
  6. 显示窗格中,将微件类型菜单的值设置为折线图
  7. 可选:在 Aggregation 元素中,展开第二个菜单,然后选择用于对时序进行分组的标签。默认情况下,系统不会选择任何标签,因此图表上会显示一条线。

后续步骤

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