PromQL 使用上難免會遇到效能問題。從本系列的介紹中,我們知道 query_range 的計算過程所需的資源和以下因素有關:
在需要提升 query_range 效能的情況下(通常是因為監控面版無法即時顯示資料),一般來說最有操作空間的是時間序列數量。(取樣密度方面 Grafana 監控面版會自動依時間範圍設定)
這是 recording rule 的一個重要用法。簡化 query_range 所傳入的 PromQL 語法樹之外,將能合併的時間序列依標籤預先合併,可以大幅減少 query_range 的計算時間和記憶體使用量。
然而,工作團隊中有負責優化的人,當然也就有負責使壞的人。總是會有人寫入過多的時間序列(例如不小心把訂單編號放進標籤值 endpoint=/query_order/?order_id=314
)。這時該怎麼人工處理髒掉的資料呢?
為了效能和複雜度考量,Prometheus 在設計時做了很多決定,使得它不被當作泛用的時間序列資料庫。
一些 Prometheus 可泛用於時間序列資料庫的性質:
一些 Prometheus 獨特之處: