GCP控制台:如何计算百分位图?

时间:2020-01-07 19:44:42

标签: google-cloud-platform stackdriver percentile google-cloud-stackdriver

我不明白如何在Google Cloud Platform Monitoring UI中计算显示百分位数的图表。

这是我创建标准图表的方式:

示例日志事件

enter image description here

为请求持续时间创建基于日志的指标

在这里,我配置了一个20个桶的直方图,从0开始,每个桶耗时100ms。

  • 0-100,
  • 100-200,
  • ...直到2秒

enter image description here

创建图表以显示一段时间内的百分位数

enter image description here

我不明白这些直方图桶如何与“聚合器”,“对齐器”和“对齐周期”一起使用。

UI会强制使用“对齐器”和“对齐周期”。

问题

  • A。如果我要计算百分位数,为什么要对每个“调整期”的所有响应时间求和?

  • B。为基于日志的指标配置的直方图桶会影响这些总和吗?

2 个答案:

答案 0 :(得分:1)

我已经研究同一个问题几天了,发现官方文档中的 Understanding distribution percentiles 部分非常有帮助。

<块引用>

百分位值是一个计算值。计算考虑了桶的数量、桶的宽度和样本总数。由于实际测量值未知,百分位计算不能依赖这些数据。

他们有一个很好的例子,桶 [0, 1) [1, 2) [2, 4) [4, 8) [8, 16) [16, 32) [32, 64) [64, 128) [128, 256) 并且在最后一个存储分区 [128, 256) 中只有一个测量值(在所有其他存储分区中都没有)。

<块引用>
  1. 您使用桶计数来确定 [128, 256) 桶包含第 50 个百分位数。
  2. 您假设所选存储分区内的测量值均匀分布,因此第 50 个百分位数的最佳估计值是存储分区中点。

A.如果我想计算百分位数,为什么我要在每个“对齐期”对所有响应时间求和?

我发现 Metrics explorer 的 GCP Console UI 也有点误导/混淆了措辞(但也许只是我不熟悉他们的术语)。我认为这里的关键概念是 Alignment and Reduction

<块引用>

对齐器在每个对齐周期结束时产生一个值。

<块引用>

reducer 是一个函数,它应用于一组时间序列中的值以生成单个值。

两者之间的区别是水平聚合与垂直聚合。对于 UI,Aggregator(主要和次要)是 reducers

回到问题,在 sum 减速器之前应用的 percentile 对齐在其他用例中似乎比您的更有用。简而言之,meanmax 对齐器可能对您的“duration_ms”指标更有用,但它们在 UI 的下拉列表中不可用,老实说我还没有弄清楚如何在 MQL 编辑器中实现它们。只是从这里的文档中引用。还有其他一些矫正器也可能很有用,但我暂时将它们排除在外。


B.为基于日志的指标配置的直方图桶是否会影响这些总和?

与@Anthony 一样,我也不太确定这个问题在暗示什么。假设您问是否可以使用这些对齐器/缩减器对齐/缩减基于日志的指标,答案是。但是,您需要知道您使用的是哪种指标类型(counterdistribution),并根据需要以相应的方式聚合它们。

答案 1 :(得分:0)

在查看您的问题之前,我们必须了解直方图。

使用您在帖子中提供的documentation,文档中有一个部分说明了Histogram Buckets。查看本节并反映您的设置,我们可以看到您正在使用“线性”类型为分布指标指定直方图桶之间的边界。

此外,“线性”类型具有三个用于计算的值:

  1. 偏移量值(起始值[a])
  2. 宽度值(桶宽[b])
  3. I 值(存储桶数[N])

每个存储桶都具有相同的宽度,并使用以下公式计算边界:offset + width x I(其中I = 0,1,2,...,∞)。

例如,如果起始值为 5 ,则存储段数为 4 ,存储段宽度为 15 ,则值区范围如下: [-INF,5),[5,20),[20,35),[35,50),[50,65),[65,+ INF]

现在我们了解了公式,我们可以查看您的问题并回答:

  1. 百分位图如何计算?

如果我们在选择指标上查看此documentation,我们会发现有一个section在谈论聚合的工作方式。我建议研究一下这一部分,以了解聚合在GCP中的工作原理

计算百分位数的公式如下:

R = P / 100 (N + 1)

其中 R 代表得分的排名顺序。 P 代表百分等级。 N 代表分布中的分数数量。

  1. 如果我要计算百分位数,为什么要对每个“调整期”的所有响应时间求和?

在同一section中,它还说明了“对齐时间段”是什么,但是在大多数情况下,对齐时间段决定了细分时间序列的时间长度。例如,您可以将时间序列分为一分钟或一小时。总结每个期间中的数据,以便单个值表示该期间。默认对齐时间为一分钟。

尽管可以设置数据的对齐间隔,但是当您更改图表上显示的时间间隔或更改缩放级别时,时间序列可能会重新对齐。

  1. 为基于日志的指标配置的直方图存储桶会影响这些总和吗? 我不太确定您在此处应用什么,您是否在询问是否在创建日志时会通过生成的日志来更改总和?

我希望这会有所帮助!