Prometheus 删除指定 Metric
Prometheus 釋出以後,很長的一段時間裡,是無法删除指定的 Metric 。如果你在某次測試中,有一些 Metric 的名稱或者值有問題,那麼你沒有任何辦法及時處理,隻能等待資料的時間到了以後自動删除。我一度以為直到現在也是這樣,最近在翻看 Prometheus 的官方文檔的時候發現,Prometheus 在 2.0 版本以後已經提供了一個簡單的管理接口,可以用來删除這些壞 Metric 資料。
下面我們來一起看一下 Prometheus 的管理 API 接口,官方到現在一共提供了三個接口,對應的分别是快照功能、資料删除功能、資料清理功能,想要使用 API 需要先添加啟動參數
--web.enable-admin-api
打開這個接口,預設這個接口是關閉的。
快速啟動 Prometheus 可以使用如下指令 ,詳細規範的啟動方式可以參考之前的文章。
./prometheus --web.enable-admin-api
資料删除
使用資料删除接口可以删除一定時間範圍内的 Metric 資料。實際的資料仍然存在于磁盤上,并在将來的壓縮中清除,也可以通過資料清理接口顯式地清除。
如果删除成功,會傳回 204 。接口如下:
POST /api/v1/admin/tsdb/delete_series
PUT /api/v1/admin/tsdb/delete_series
這個接口可以使用 3 個參數,分别如下:
- match[]= : Metric 的名稱
- start= : 開始的時間戳
- end= : 結束的時間戳
如果沒有指定開始和結束時間将清除資料庫中比對的所有資料。
接下來舉幾個例子
删除指定 Metric 名稱的全部資料
curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]=node_cpu_seconds_total'
删除指定 Metric 名稱和特定 label 名稱的全部資料
curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]=node_cpu_seconds_total{mode="idle"}'
删除指定時間範圍内的 Metric 資料
curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?start=1578301194&end=1578301694&match[]=node_cpu_seconds_total{mode="idle"}'
linux 可以使用獲得目前的時間戳,可以使用
date +%s
将指定的日期轉成時間戳。
date -d "2019-12-22 00:00:00" +%s
資料清理
資料清理會從磁盤删除已經被
delete_series
接口删除的資料,并清理現有的 tombstones。可以在使用
delete_series
接口删除資料之後使用它來釋放空間。
如果清理成功,會傳回 204 。
POST /api/v1/admin/tsdb/clean_tombstones
PUT /api/v1/admin/tsdb/clean_tombstones
示例
curl -X POST http://127.0.0.1:9090/api/v1/admin/tsdb/clean_tombstones
這個接口不需要參數。