【Prometheus + Grafana】 使用 topk 在 grafana 绘制 前 n 个时间序列
文章目录
- 项目场景:
- 问题描述:
- 原因分析:
- 解决方案:
- 设置bps,在模板中使用变量,即 Variables
- 使用 bps 变量和prometheus 的正则表达式查询
- 优化界面
项目场景:
获取流量 bps 前10位的 时间序列
问题描述:
在grafana 中使用 topk(10, bps) 语句,结果得到如图信息,并且可以看到曲线有断层,不连贯。
期望是仅展示前10条,并且曲线是连贯的。
原因分析:
从Grafana 5.3.0开始,有一个功能允许在一段时间内正确绘制前N个序列的图形。
query_range Prometheus中用于制图的API端点独立评估每个步骤,因此类似的图 topk(10, bps)可以显示10个以上的时间序列。
要显示图形范围内的前10个,您需要先执行查询以确定其中10个label,然后再对其进行图形化。
解决方案:
设置bps,在模板中使用变量,即 Variables
如图所示,query_result(topk(10, bps)) 可以获取10个ipaddr
您可以query_result(topk(10, avg_over_time(bps[${_range_s}s]))) 获取bps在一定时间范围内平均值最高的10个
语句是关键,多值,包括所有和刷新时间段的变化也被设置。
还需要选择 ALL,即 图中的 Selection Options 部分
使用 bps 变量和prometheus 的正则表达式查询
bps{ipaddr=~"$bps"}
优化界面
在Variables 中 选择了All,那么可以返回到变量定义并将“Hide”设置为“Variable”,以使变量选择不会杂乱您的仪表板顶部。
根据实际情况,还可以使用诸如 min_over_time或 max_over_time 而不是的功能avg_over_time,拓展链接:https://prometheus.io/docs/prometheus/latest/querying/functions/#aggregation_over_time
总结
以上是生活随笔为你收集整理的【Prometheus + Grafana】 使用 topk 在 grafana 绘制 前 n 个时间序列的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【Vue】 Error with Vue
- 下一篇: 【Ping】unix - ping命令的