Prometheus 如何从普罗米修斯v2中删除时间序列,特别是一系列警报

Prometheus 如何从普罗米修斯v2中删除时间序列,特别是一系列警报,prometheus,Prometheus,我们正在处理警报,因此不时需要清除我们通过调用HTTP API所做的旧警报,以删除存储警报的伪时间序列,例如: DELETE https://prometheus/api/v1/series?match[]={__name__="ALERTS"} 我们最近将Prometheus服务器从1.8升级到了2.2.1 现在调用此端点将提供 { "status": "error", "errorType": "internal", "error": "not implemente

我们正在处理警报,因此不时需要清除我们通过调用HTTP API所做的旧警报,以删除存储警报的伪时间序列,例如:

DELETE https://prometheus/api/v1/series?match[]={__name__="ALERTS"}
我们最近将Prometheus服务器从1.8升级到了2.2.1

现在调用此端点将提供

{
    "status": "error",
    "errorType": "internal",
    "error": "not implemented"
}

我已经做了一些研究,并在不同的地方找到了一个解决方案,我将在下面的回答中总结,以防它对我的StackOverflowers同伴有用。

首先,在普罗米修斯2中,默认情况下不会启用管理API。必须通过使用选项启动服务器使其处于活动状态

--web.enable-admin-api
v2中有一个新的端点

https://prometheus/api/v2/admin/tsdb/delete_series
这需要一个指定搜索条件的
POST
,例如,对于名称为
ALERTS
的时间序列,其中ALERTS名称为
MyTestAlert
,将以下
application/json
从所选工具发布到
delete_series
端点(使用Mac上的Postman 6进行测试)

为了完整性和释放保存警报的磁盘空间,
POST

https://prometheus/api/v2/admin/tsdb/clean_tombstones
答复来自:

卷曲变型:

# delete alerts series
curl -g -XPOST 'http://prometheus:9090/api/v2/admin/tsdb/delete_series?match[]=ALERTS'

# delete data from disk
curl -XPOST http://prometheus:9090/api/v2/admin/tsdb/clean_tombstones

使用
curl
可能更容易。。。Robust Perception有一个例子,Cheers,这个例子在四月份是不存在的。不过,我看不出curl比任何其他http POST实用程序有什么优势。我得到了错误响应,返回“message”:“unknown value\”EQ\“for enum prometheus.LabelMatcher_Type”和code 3I删除了系列并清理了墓碑,但我仍然可以在控制台页面的下拉列表中看到度量名称。没有用于已删除度量的数据,但由于某些原因,它们仍然存在。通过webAPI重新加载,kill-HUP没有帮助。有人知道如何消灭敌人吗?
# delete alerts series
curl -g -XPOST 'http://prometheus:9090/api/v2/admin/tsdb/delete_series?match[]=ALERTS'

# delete data from disk
curl -XPOST http://prometheus:9090/api/v2/admin/tsdb/clean_tombstones