我不明白如何在Google Cloud Platform Monitoring UI中计算显示百分位数的图表。
这是我创建标准图表的方式:
示例日志事件
为请求持续时间创建基于日志的指标
在这里,我配置了一个20个桶的直方图,从0开始,每个桶耗时100ms。
创建图表以显示一段时间内的百分位数
我不明白这些直方图桶如何与“聚合器”,“对齐器”和“对齐周期”一起使用。
UI会强制使用“对齐器”和“对齐周期”。
问题
A。如果我要计算百分位数,为什么要对每个“调整期”的所有响应时间求和?
B。为基于日志的指标配置的直方图桶会影响这些总和吗?
答案 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)
中只有一个测量值(在所有其他存储分区中都没有)。
我发现 Metrics explorer 的 GCP Console UI 也有点误导/混淆了措辞(但也许只是我不熟悉他们的术语)。我认为这里的关键概念是 Alignment
and Reduction
。
对齐器在每个对齐周期结束时产生一个值。
<块引用>reducer 是一个函数,它应用于一组时间序列中的值以生成单个值。
两者之间的区别是水平聚合与垂直聚合。对于 UI,Aggregator
(主要和次要)是 reducers
。
回到问题,在 sum
减速器之前应用的 percentile
对齐在其他用例中似乎比您的更有用。简而言之,mean
或 max
对齐器可能对您的“duration_ms”指标更有用,但它们在 UI 的下拉列表中不可用,老实说我还没有弄清楚如何在 MQL 编辑器中实现它们。只是从这里的文档中引用。还有其他一些矫正器也可能很有用,但我暂时将它们排除在外。
与@Anthony 一样,我也不太确定这个问题在暗示什么。假设您问是否可以使用这些对齐器/缩减器对齐/缩减基于日志的指标,答案是是。但是,您需要知道您使用的是哪种指标类型(counter
与 distribution
),并根据需要以相应的方式聚合它们。
答案 1 :(得分:0)
在查看您的问题之前,我们必须了解直方图。
使用您在帖子中提供的documentation,文档中有一个部分说明了Histogram Buckets。查看本节并反映您的设置,我们可以看到您正在使用“线性”类型为分布指标指定直方图桶之间的边界。
此外,“线性”类型具有三个用于计算的值:
每个存储桶都具有相同的宽度,并使用以下公式计算边界:offset + width x I
(其中I = 0,1,2,...,∞)。
例如,如果起始值为 5 ,则存储段数为 4 ,存储段宽度为 15 ,则值区范围如下: [-INF,5),[5,20),[20,35),[35,50),[50,65),[65,+ INF]
现在我们了解了公式,我们可以查看您的问题并回答:
如果我们在选择指标上查看此documentation,我们会发现有一个section在谈论聚合的工作方式。我建议研究一下这一部分,以了解聚合在GCP中的工作原理
计算百分位数的公式如下:
R = P / 100 (N + 1)
其中 R 代表得分的排名顺序。 P 代表百分等级。 N 代表分布中的分数数量。
在同一section中,它还说明了“对齐时间段”是什么,但是在大多数情况下,对齐时间段决定了细分时间序列的时间长度。例如,您可以将时间序列分为一分钟或一小时。总结每个期间中的数据,以便单个值表示该期间。默认对齐时间为一分钟。
尽管可以设置数据的对齐间隔,但是当您更改图表上显示的时间间隔或更改缩放级别时,时间序列可能会重新对齐。
我希望这会有所帮助!