web-dev-qa-db-ja.com

Prometheus v2から時系列、特に一連のアラートを削除するにはどうすればよいですか

アラートに対処するため、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で使用する場合に備えて、以下の回答で要約します。

5
Spangen

まず、Prometheus 2では管理APIがデフォルトで有効になっていません。これは、サーバーをオプションで起動してアクティブにする必要があります

--web.enable-admin-api

のv2に新しいエンドポイントがあります

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

これは、検索基準を指定するPOSTをとります。 ALERTSという名前の時系列の場合、アラート名はMyTestAlertです。次のapplication/jsonからdelete_seriesエンドポイント、選択したツールから(MacのPostman 6でテスト済み)

{
    "matchers": [{
        "type": "EQ",
        "name": "__name__",
        "value": "ALERTS"
    },
    {
        "type": "EQ",
        "name": "alertname",
        "value": "MyTestAlert"
    }]
} 

完全を期し、アラートが永続化されていたディスク領域を解放するには、空のペイロードをPOST

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

回答の集計:

9
Spangen

カールバリアント:

# 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
0
cybergrind