文章目錄
- 項目場景:
- 問題描述:
- 原因分析:
- 解決方案:
-
- 設定bps,在模闆中使用變量,即 Variables
- 使用 bps 變量和prometheus 的正規表達式查詢
- 優化界面
項目場景:
擷取流量 bps 前10位的 時間序列
問題描述:
在grafana 中使用
topk(10, bps)
語句,結果得到如圖資訊,并且可以看到曲線有斷層,不連貫。
期望是僅展示前10條,并且曲線是連貫的。
原因分析:
從Grafana 5.3.0開始,有一個功能允許在一段時間内正确繪制前N個序列的圖形。Prometheus中用于制圖的API端點獨立評估每個步驟,是以類似的圖
query_range
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