天天看點

【Prometheus + Grafana】 使用 topk 在 grafana 繪制 前 n 個時間序列項目場景:問題描述:原因分析:解決方案:

文章目錄

  • 項目場景:
  • 問題描述:
  • 原因分析:
  • 解決方案:
    • 設定bps,在模闆中使用變量,即 Variables
    • 使用 bps 變量和prometheus 的正規表達式查詢
    • 優化界面

項目場景:

擷取流量 bps 前10位的 時間序列

問題描述:

在grafana 中使用

topk(10, bps)

語句,結果得到如圖資訊,并且可以看到曲線有斷層,不連貫。

期望是僅展示前10條,并且曲線是連貫的。

【Prometheus + Grafana】 使用 topk 在 grafana 繪制 前 n 個時間序列項目場景:問題描述:原因分析:解決方案:

原因分析:

從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

部分
【Prometheus + Grafana】 使用 topk 在 grafana 繪制 前 n 個時間序列項目場景:問題描述:原因分析:解決方案:

使用 bps 變量和prometheus 的正規表達式查詢

bps{ipaddr=~"$bps"}

【Prometheus + Grafana】 使用 topk 在 grafana 繪制 前 n 個時間序列項目場景:問題描述:原因分析:解決方案:

優化界面

Variables

中 選擇了All,那麼可以傳回到變量定義并将“Hide”設定為“Variable”,以使變量選擇不會雜亂您的儀表闆頂部。

【Prometheus + Grafana】 使用 topk 在 grafana 繪制 前 n 個時間序列項目場景:問題描述:原因分析:解決方案:

根據實際情況,還可以使用諸如

min_over_time

max_over_time

而不是的功能

avg_over_time

,拓展連結:https://prometheus.io/docs/prometheus/latest/querying/functions/#aggregation_over_time