2017-01-06 169 views
1

我需要从Graylog中删除特定的日志消息,但似乎没有任何公共API来执行此操作(由Graylog API浏览器执行)。从Graylog中删除特定的日志消息

几乎没有关于如何做到这一点的文档。我发现了一些随机文章,暗示它可能通过curl和查询API实现,但没有任何实质性内容。

鉴于graylog可通过“http://1.2.3.4:5678”访问,并且我在索引“graylog_0”中收到ID为“94c84300-d3c1-11e6-b900-005056ac343f”的消息,我将如何删除此消息?

+0

你有访问背后Graylog的ES实例? – Val

+0

是的我可以访问ES –

回答

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指数范围,这样你就可以对Graylo直接运行这个摹服务器:

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

UPDATE

如果你想批量删除多条消息,你可以用轻松的大宗原料药:

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"}} 
' 
+0

感谢瓦尔,你是一个传奇人物!有效。你不会碰巧知道如何批量删除多条消息? –

+1

很高兴帮助!是的,看我更新的答案 – Val