由于Kibana在字段键中需要前缀下划线 - link(此问题似乎未解决),我无法处理默认启动下划线附带的字段键值(例如,docker的日志记录) Kiabana。我目前正在使用logstash将日志推送到elasticsearch。我读了这个answer使用ruby过滤器去除所有下划线,但我想这种方法会让我的消费者变得非常慢。
有没有办法在logstash中使用正则表达式的强大功能从所有字段名称中删除前缀下划线?
例如 -
_HELO: World
现在应该改为:
HELLO: World
可能使用与ruby
答案 0 :(得分:1)
您可以使用kv filter使用正则表达式从键中删除前缀。它有助于自动解析foo=bar
种类的消息(或特定事件字段),并具有用于从密钥中删除字符串的配置选项remove_char_key
。
例如,这会从键中删除<
,>
,[, ]
和,
个字符
filter {
kv {
remove_char_key => "<>\[\],"
}
}
另一个选项是remove_char_value
,可用于从值
例如,这会从值中删除<
,>
,[, ]
和,
个字符
filter {
kv {
remove_char_value => "<>\[\],"
}
}
这些内容可与source
一起用于{/ 1}}搜索
key=value
请同时查看trim_key和trim_value选项
答案 1 :(得分:0)
如果您只想删除一个名为fieldname
字段的第一个字符的下划线,您可以使用:
mutate {
gsub => [
"fieldname", "^_", ""
]
}
答案 2 :(得分:-1)
您需要使用ruby
过滤器来查找以_
开头的密钥,并基本上重命名它们(将值复制到新密钥然后删除原始密钥):< / p>
filter {
ruby {
code => "
event.to_hash.keys.each { |k|
if k.start_with?('_')
event.set(k[1,-1],event.get(k))
event.remove(k)
end
}
"
}
}