一、概述
本文以時序數據庫IoTDB V1.0.1版本為例,介紹如何通過Prometheus采集Apache IoTDB的監控指標,并使用Grafana進行可視化。
二、Prometheus聚合運算符
Prometheus支持多種聚合運算符,用于在時間序列數據上進行聚合操作。以下是一些常用的聚合運算符:
- sum:計算維度上的總和。
- min:選擇維度上的最小值。
- max:選擇維度上的最大值。
- avg:計算維度上的平均值。
- group:結果向量中的所有值都為1。
- stddev:計算維度上的總體標準差。
- stdvar:計算維度上的總體方差。
- count:計算向量中的元素數量。
- count_values:計算具有相同值的元素數量。
- bottomk:按樣本值選擇最小的k個元素。
- topk:按樣本值選擇最大的k個元素。
- quantile:計算維度上的φ分位數(0 ≤ φ ≤ 1)。
這些運算符可以通過without或by子句來指定聚合方式。
三、Prometheus函數
1. rate函數
- 功能:計算范圍向量中時間序列的每秒平均增長率,適用于警報和緩慢移動的計數器。
- 語法:rate(v range-vector)
- 示例:rate(http_requests_total{job="api-server"}[5m])表示計算過去5分鐘內每個時間序列的HTTP請求速率。
- 注意:與聚合運算符或隨時間聚合的函數結合使用時,應先使用rate()。
2. irate函數
- 功能:計算范圍向量中時間序列的每秒瞬時增長率,適用于易變的、快速移動的計數器。
- 語法:irate(v range-vector)
- 示例:irate(http_requests_total{job="api-server"}[5m])表示基于過去5分鐘內的最后兩個數據點計算HTTP請求的每秒速率。
- 注意:與聚合運算符或隨時間聚合的函數結合使用時,應先使用irate()。
四、Grafana可視化
1. 創建Dashboard
- 在Grafana中,點擊左側邊欄的“Dashboards” -> “browse”,選擇創建或導入Dashboard。
- 進入Dashboard后,點擊右上角設置按鈕,更新基礎信息,并調整Panel options為Shared crosshair。
- 在Variables界面定義變量,如job和instance,以便在查詢中使用。
2. 創建Panel
- 點擊右上角“Add Panel”,選擇面板類型(如Time series、Stat、Gauge等)。
- 以Time series為例,編寫PromQL執行數據查詢。可以使用在Dashboard的Variables中配置的變量(如$instance、$job)。
- 在Legend中,通過雙中括號訪問監控項的Tag值,以修改圖例。
- 在右側的Panel Options、Tooltip、Legend、Graph Styles、Axis、Standard options等區域中,調整面板的標題、描述、圖例、線的樣式、軸信息、單位、配色等屬性。
- 可以通過Overrides重寫部分時間序列的某些屬性。
3. 導出Dashboard
- 點擊左上角的導出按鈕,選擇“Export for sharing externally”,然后將Dashboard的json文件下載到本地。
- 將json文件上傳到GitHub的對應位置。