天天看點

Prometheus 删除指定 Metric Prometheus 删除指定 Metric資料删除資料清理參考連結

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           

這個接口不需要參數。

參考連結