消除Logstash中的顶级字段
我正在使用Logstash,我的一个应用程序向我发送如下字段:消除Logstash中的顶级字段,logstash,Logstash,我正在使用Logstash,我的一个应用程序向我发送如下字段: [message][UrlVisited] [message][TotalDuration] [message][AccountsProcessed] 我希望能够折叠这些字段,同时删除顶级消息。因此,上述字段将变为: [UrlVisited] [TotalDuration] [AccountsProcessed] 在Logstash中有这样做的方法吗?假设预先知道所有这些子字段的名称,您可以使用: 或者,使用a(即使您不知道字段
[message][UrlVisited]
[message][TotalDuration]
[message][AccountsProcessed]
我希望能够折叠这些字段,同时删除顶级消息。因此,上述字段将变为:
[UrlVisited]
[TotalDuration]
[AccountsProcessed]
在Logstash中有这样做的方法吗?假设预先知道所有这些子字段的名称,您可以使用: 或者,使用a(即使您不知道字段名也可以使用):
此示例适用于Logstash2.4及更高版本。对于早期版本,请使用
event['message']。每个…
和event[k]=v
。谢谢!我试图避免这种情况。新的数据字段将经常被添加,我正试图避免每次都会破坏日志存储配置。@MattW:所以。。。那么ruby过滤器会不会有帮助呢?哦,哇,不知怎么的,我把答案的第二部分给遮住了。这很有效。谢谢你的帮助-我很感激!我们现在必须使用get&set方法访问事件,您应该更新答案。
filter {
mutate {
rename => ["[message][UrlVisited]", "UrlVisited"]
}
mutate {
rename => ["[message][TotalDuration]", "TotalDuration"]
}
mutate {
rename => ["[message][AccountsProcessed]", "AccountsProcessed"]
}
mutate {
remove_field => ["message"]
}
}
filter {
ruby {
code => "
event.get('message').each {|k, v|
event.set(k, v)
}
event.remove('message')
"
}
}