egg*_*y84 6 histogram grafana prometheus
有人可以帮助我将普罗米修斯直方图可视化为图表和apdex吗?
忽略任何二级标签(暂时),我只是想将它们可视化为Grafana上的直方图(堆积的条形图很好),并且在grafana中显示apdex确实很有用。
Prometheus Web控制台中的存储桶示例
someoperation_duration_seconds_bucket{
labelOne="some_consistent_label",
exported_instance="foo",
exported_job="my_job",
instance="10.0.0.0:9091",
job="kubernetes-service-endpoints",
kubernetes_name="prometheus-push-gateway",
kubernetes_namespace="monitoring",
le="+Inf",
labelTwo="some_label_that_changes1"
}
someoperation_duration_seconds_bucket{
labelOne="some_consistent_label",
exported_instance="foo",
exported_job="my_job",
instance="10.0.0.0:9091",
job="kubernetes-service-endpoints",
kubernetes_name="prometheus-push-gateway",
kubernetes_namespace="monitoring",
le="120",
labelTwo="some_label_that_changes1"
} etc etc
Run Code Online (Sandbox Code Playgroud)
我看过这篇文章,如何使用promdash或grafana可视化直方图,并使图表显示为堆积的条形图,并且该系列的值为“ le”(桶),但是每个桶的Y轴值正好相同的值。
由于操作的性质,度量标准是通过PushGateway收集的。不确定是否有影响。
非常感谢大家
相同大小的桶最适合面板类型直方图。三个精心挑选的桶非常适合 apdex 计算。
直方图
选择直方图作为面板类型并使用以下查询:
someoperation_duration_seconds_bucket{
labelOne="some_consistent_label",
exported_instance="foo",
exported_job="my_job",
instance="10.0.0.0:9091",
job="kubernetes-service-endpoints",
kubernetes_name="prometheus-push-gateway",
kubernetes_namespace="monitoring",
labelTwo="some_label_that_changes1"
}
Run Code Online (Sandbox Code Playgroud)
请注意,我只是复制了您自己的查询,但省略了标签 le。
我想您对值随时间的变化感兴趣,因此可视化以下查询可能会很有用:
increase(someoperation_duration_seconds_bucket{ ... }[TIME])
Run Code Online (Sandbox Code Playgroud)
时间可以是 10m、1h 或 1d,具体取决于您的要求。
X 轴不会使用与您在应用程序中定义的相同的存储桶大小。您可以将存储桶大小设置为面板选项,但这可能不是您要搜索的内容。
Apdex
如果您知道哪种性能可以被客户接受,您只能计算 apdex。让我们假设 80 到 120 秒是可以容忍的,一切快一点都可以,一切慢一点都是不可接受的。现在假设您仅定义了三个存储桶 b1=[0,80]、b2=[0,120]、b3=[0,+Inf]。apdex的计算方式如下:
((count(b1) + (count(b2)-count(b1)) * 0.5)) / count(b3)
Run Code Online (Sandbox Code Playgroud)
您已经给出了计算桶计数的公式:
someoperation_duration_seconds_bucket{
...,
le="BUCKET",
...
}
Run Code Online (Sandbox Code Playgroud)
对于我的示例,BUCKET 将为 80 和 120。Bucket +Inf 为您提供总计数。计算随时间的增加可能再次有用:
increase(someoperation_duration_seconds_bucket{
...,
le="BUCKET",
...
}[TIME])
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是,您需要知道应用程序定义的存储桶大小。这些尺寸必须符合客户的容忍性能边界。如果 80 和 120 没有桶边界,我们无法计算上面示例中的 apdex。三个以上的存储桶就可以了,但您至少需要这三个与可容忍的性能边界相匹配的存储桶。
我发现这个答案非常有趣,因为它计算了与某些 SLA 协议相对应的 apdex 阈值,但采用了与我不同的方法。
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |