我需要从 Graylog 中删除特定的日志消息,但是似乎没有任何公共 API 可以执行此操作(通过 Graylog API 浏览器)。
关于如何做到这一点的文档很少。我发现一些随机文章暗示它是/可能通过 curl 和查询 API,但没有实质性内容。
鉴于可以通过“ http://1.2.3.4:5678 ”访问灰色日志,并且我在索引“graylog_0”中收到一条 ID 为“94c84300-d3c1-11e6-b900-005056ac343f”的消息我将如何删除此消息?
我需要从 Graylog 中删除特定的日志消息,但是似乎没有任何公共 API 可以执行此操作(通过 Graylog API 浏览器)。
关于如何做到这一点的文档很少。我发现一些随机文章暗示它是/可能通过 curl 和查询 API,但没有实质性内容。
鉴于可以通过“ http://1.2.3.4:5678 ”访问灰色日志,并且我在索引“graylog_0”中收到一条 ID 为“94c84300-d3c1-11e6-b900-005056ac343f”的消息我将如何删除此消息?
由于您可以访问 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"}}
'