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

How do I delete a time series from Prometheus v2, specifically a series of alerts

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

DELETE https://prometheus/api/v1/series?match[]={__name__="ALERTS"}

我们最近将 Prometheus 服务器从 1.8 升级到 2.2.1。

现在调用这个端点可以得到

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

我做了一些研究并在不同的位置找到了解决方案,我将在下面的答案中进行总结,以防它对我的 Whosebugers 伙伴有用

首先,管理员 API 在 Prometheus 2 中默认未启用。这必须通过使用选项

启动服务器来激活
--web.enable-admin-api

v2 中有一个新端点

https://prometheus/api/v2/admin/tsdb/delete_series

这需要一个 POST 来指定搜索条件,例如对于名称为 ALERTS 的时间序列,其中警报名称为 MyTestAlert、post 以下 application/jsondelete_series 端点,来自所选工具(在 Mac)

上使用 Postman 6 进行测试
{
    "matchers": [{
        "type": "EQ",
        "name": "__name__",
        "value": "ALERTS"
    },
    {
        "type": "EQ",
        "name": "alertname",
        "value": "MyTestAlert"
    }]
} 

为了完整性和释放警报持续存在的磁盘 space,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