分布值指标简介

本文档介绍如何创建和解读显示 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 字段的值会与 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

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

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

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

    前往信息中心

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

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

后续步骤

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