上篇提到 Prometheus client 可能由於人為疏失產生錯誤的標籤,從而造成時間序列數爆增,如 endpoint=/query_order/?order_id=314
。這時切勿直接刪除誤標的時間序列,更不要進 /data
刪除整個時間區間的資料。
細心的清理工作,可以透過以下方式進行:
/label
列出錯誤的時間序列label_replace
函數,將錯誤的標籤替換為正確的標籤,如 label_replace(http_requests_total, "endpoint", "$1", "endpoint", "/query_order/?order_id=(\d+)")
。promtool tsdb create-blocks-from rules
指令,以規則檔案修正時間序列。/admin/tsdb/delete_series
和 /admin/tsdb/clean_tombstones
清理檔案
Thanos 主要增進查詢效能的方式是分治,PromQL 引擎會將長時間範圍的查詢切給不同線程處理。達成幾乎線性的加速。
另外 Thanos 還可以對較舊的資料做降採樣(有損資料壓縮),以降低儲存空間和查詢時的 IO。但需注意降採樣是有損的。比方說有一個計數器代表成交的訂單數量,如果樣本頻率從 15 秒變成 1 天,那未來就只能讀取每天(某固定時間點到隔天同一時間點)的訂單數量,無從得知白天或晚上生意比較好。
OpenTSDB 則是採用 Hadoop 或 HBase。Hadoop 和 HBase 自帶分散式儲存和運算的功能。分治的維度不限於時間區段,寫入的效能上限因此較高。