我通过将路径定义为* .log等,
来读取文件中的数据文件名称类似于app1a_test2_heep.log,cdc2a_test3_heep.log等
如何配置logstash,以便在下划线(app1a,cdc2a ..)之前的字符串部分应该被grepped并添加到主机字段并删除默认主机。
例如:
fileName:app1a_test2_heep.log
host => app1a
提前致谢, 拉维
答案 0 :(得分:5)
Ruby过滤器可以做你想要的。
input {
file {
path => "/home/benlim/app1a_test2_heep.log"
}
}
filter {
ruby {
code => "
filename = event['path'].split('/').last
event['host'] = filename.split('_').first
"
}
}
output {
stdout { codec => rubydebug }
}
首先,从路径中获取文件名。然后,获取主机名。
答案 1 :(得分:-2)
您可以在mutate过滤器中使用gsub(替换)。它需要3个参数 - 字段,什么分和什么。你可以在这里使用regexp。
filter {
mutate {
gsub => [
# replace all after slashes with nothing
"host", "[_.*]", ""
]
}
}