Prometheus 發佈之後,很長的一段時間裏,是沒法刪除指定的 Metric 。若是你在某次測試中,有一些 Metric 的名稱或者值有問題,那麼你沒有任何辦法及時處理,只能等待數據的時間到了之後自動刪除。我一度覺得直到如今也是這樣,最近在翻看 Prometheus 的官方文檔的時候發現,Prometheus 在 2.0 版本之後已經提供了一個簡單的管理接口,能夠用來刪除這些壞 Metric 數據。node
下面咱們來一塊兒看一下 Prometheus 的管理 API 接口,官方到如今一共提供了三個接口,對應的分別是快照功能、數據刪除功能、數據清理功能,想要使用 API 須要先添加啓動參數 --web.enable-admin-api
打開這個接口,默認這個接口是關閉的。linux
快速啓動 Prometheus 可使用以下命令 ,詳細規範的啓動方式能夠參考以前的文章。web
./prometheus --web.enable-admin-api
使用數據刪除接口能夠刪除必定時間範圍內的 Metric 數據。實際的數據仍然存在於磁盤上,並在未來的壓縮中清除,也能夠經過數據清理接口顯式地清除。數據庫
若是刪除成功,會返回 204 。接口以下:api
POST /api/v1/admin/tsdb/delete_series PUT /api/v1/admin/tsdb/delete_series
這個接口可使用 3 個參數,分別以下:curl
若是沒有指定開始和結束時間將清除數據庫中匹配的全部數據。ide
接下來舉幾個例子測試
刪除指定 Metric 名稱的所有數據url
curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]=node_cpu_seconds_total'
刪除指定 Metric 名稱和特定 label 名稱的所有數據unix
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
這個接口不須要參數。