Prometheus 刪除指定 Metric

Prometheus 刪除指定 Metric

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

  • match[]=<series_selector> : Metric 的名稱
  • start=<rfc3339 | unix_timestamp> : 開始的時間戳
  • end=<rfc3339 | unix_timestamp> : 結束的時間戳

若是沒有指定開始和結束時間將清除數據庫中匹配的全部數據。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

這個接口不須要參數。

參考連接

相關文章
相關標籤/搜索