2 分鐘,瞭解 4 個極為有用的 MetricsQL 函式

SRETalk發表於2024-02-19

夜鶯社群的朋友如果問時序庫的選型,我一般都會推薦 VictoriaMetrics,除了其效能、穩定性、叢集擴充套件能力之外,VictoriaMetrics 還擴充套件了 PromQL,提供了 MetricsQL,即增強了 PromQL 的能力。比如下面介紹的場景,就很適合用 MetricsQL 來解決。

需求

某個指標( 假設指標名字是 interface_status )每分鐘上報一次,如果 5 分鐘內有 3 次大於 x 的值,就報警。

解法

如果使用 PromQL,就比較難寫了,而 MetricsQL 就很簡單,如下:

count_gt_over_time(interface_status[5m], x) >= 3

看到這個寫法,基本能直觀理解其含義了 count_gt_over_time(series_selector[d], gt) 函式有兩個引數,一個是 range-vector,一個是標量 gt,表示在 range-vector 中大於 gt 的個數,如果大於等於 3,就報警。除了 count_gt_over_time 函式之外,還有 count_le_over_time、count_ne_over_time、count_eq_over_time 道理相同。

思考

假設我們知道原始資料上報頻率,如果使用 promql 來實現上述需求,應該怎麼寫呢?歡迎評論區留言分享 :)

另外

最近我們開放了 FlashDuty 的告警引擎能力,可以直接對接各類時序庫、資料庫、ClickHouse、ElasticSearch、Loki 等日誌庫,對資料做異常判斷,直接生成告警事件。換句話說,不再需要夜鶯、Alertmanager、Elastalert 等告警引擎,Flashduty 就可一肩挑。線上體驗地址:https://console.flashcat.cloud/ 選單入口:「告警管理」。截圖如下:

20240130090320

任何問題均可聯絡我微信:picobyte

相關文章