2

Graylog から特定のログ メッセージを削除する必要がありますが、これを行うためのパブリック API はないようです (Graylog API ブラウザーを使用)。

これを行う方法についてのドキュメントはほとんどありません。curl とクエリ API を介して可能である/可能であったことを示唆するランダムな記事をいくつか見つけましたが、実質的なものはありません。

「 http://1.2.3.4:5678 」経由でグレイログにアクセスでき、インデックス「graylog_0」に「94c84300-d3c1-11e6-b900-005056ac343f」というIDのメッセージがある場合、このメッセージを削除するにはどうすればよいですか?

4

1 に答える 1

2

ES にアクセスできるので、ES でメッセージを直接削除できます。メッセージが過去のインデックスにある場合は、過去のすべてのインデックスが Graylog によって読み取り専用になるため、再度書き込み可能にする必要があるため、最初にこれを実行します。

curl -XPUT 'http://localhost:9200/graylog_0/_settings' -d '{
   "index" : {
      "blocks.write" : false
   }
}'

その後、メッセージを削除できます

curl -XDELETE 'http://localhost:9200/graylog_0/message/94c84300-d3c1-11e6-b900-005056ac343f

最後に、インデックスを再度読み取り専用にする必要があります

curl -XPUT 'http://localhost:9200/graylog_0/_settings' -d '{
   "index" : {
      "blocks.write" : true
   }
}'

必要に応じて、Graylog にインデックス範囲を再計算させて、Graylog サーバーに対して直接実行できるようにすることもできます。

curl -XPOST http://1.2.3.4:5678/system/indices/ranges/rebuild

アップデート

複数のメッセージを一括削除したい場合は、一括 API を簡単に使用できます。

curl -XPOST 'http://localhost:9200/graylog_0/message' -d '
{"delete":{ "_id": "94c84300-d3c1-11e6-b900-005056ac343f"}}
{"delete":{ "_id": "94c84300-d3c1-11e6-b900-005056ac543e"}}
{"delete":{ "_id": "94c84300-d3c1-11e6-b900-005056ac8694"}}
{"delete":{ "_id": "94c84300-d3c1-11e6-b900-005056ac1264"}}
'
于 2017-01-06T06:58:01.790 に答える