简介

Prometheus发布以后,很长的一段时间里,是无法删除指定的Metric 。如果你在某次测试中,有一些Metric的名称或者值有问题,那么你没有任何办法及时处理,只能等待数据的时间到了以后自动删除。Prometheus在2.0版本以后提供了一个简单的管理接口,可以用来删除Metric无效数据。
Prometheus的管理API接口,提供了三个接口,对应的分别是:快照功能、数据删除功能、数据清理功能。想要使用API需要先添加启动参数“—web.enable-admin-api”打开这个接口,默认这个接口是关闭的。快速启动Prometheus API可以使用如下命令:

  1. ./prometheus --web.enable-admin-api

常用操作

数据删除

使用数据删除接口可以删除一定时间范围内的Metric数据。实际的数据仍然存在于磁盘上,并在将来的压缩中清除,也可以通过数据清理接口显式地清除。如果删除成功,会返回204 。接口如下:

  1. POST /api/v1/admin/tsdb/delete_series
  2. PUT /api/v1/admin/tsdb/delete_series

接口可以使用3个参数:

  • match[]=:Metric 的名称。
  • start=:开始的时间戳。
  • end=:结束的时间戳。

注意:如果没有指定开始和结束时间将清除数据库中匹配的所有数据。
示例

  1. 删除指定Metric名称的全部数据。

    1. curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]=node_cpu_seconds_total'
  2. 删除指定Metric名称和特定label名称的全部数据。

    1. curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]=node_cpu_seconds_total{mode="idle"}'
  3. 删除指定时间范围内的Metric数据。

    1. 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"}'
    2. # 当前的时间戳
    3. date +%s
    4. # 将指定的日期转成时间戳
    5. date -d "2012-12-21 12:12:12" +%s
  4. 根据条件(如:wanip=10.244.2.158:9090)删除数据。

    1. curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]={wanip="10.244.2.158:9090"}'
  5. 删除所有数据。

    1. curl -X POST -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]={__name__=~".+"}'

    注意:上面的API调用并不会立即删除数据,实际数据任然还存在磁盘上,会在后面进行数据清理**(默认情况下,Prometheus会将数据保留15天)**。 要确定何时删除旧数据,可以使用—storage.tsdb.retention参数进行配置。

    删除Pushgateway数据

    删除某个targets下的某实例(instance)的所有数据:

    1. curl -X DELETE http://127.0.0.1:9091/metrics/job/pushgateway/instance/pushgateway


    删除某个targets下的所有数据:

    1. curl -X DELETE http://127.0.0.1:9091/metrics/job/pushgateway

数据清理

数据清理会从磁盘删除已经被delete_series接口删除的数据,并清理现有的tombstones。可以在使用delete_series接口删除数据之后使用它来释放空间。clean_tombstones接口不需要参数,如果清理成功,会返回“204” 。

  1. POST /api/v1/admin/tsdb/clean_tombstones
  2. PUT /api/v1/admin/tsdb/clean_tombstones

示例:

  1. curl -X POST http://127.0.0.1:9090/api/v1/admin/tsdb/clean_tombstones

参考

官方:HTTP API
https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis