我使用filebeat将日志上传到elasticsearch,我希望使用logstash来转换文档,然后再将它们发送到ES。我想添加一个名为 my.service 的字段,该字段将解析字段 log.file.path 的值。基本上,我想要的是以下内容:
"log.file.path": "/var/log/myservice.log"
"my.service": "myservice"
我在logstash上尝试了以下过滤器,但似乎没有一个起作用:
filter {
if ("" in [log.file.path]){
grok {
match => { "log.file.path" => "%{GREEDYDATA}/(?<my.service>).log"}
}
}
}
filter {
if ("" in [log.file.path]){
grok {
match => { "log.file.path" => "%{GREEDYDATA}/%{GREEDYDATA:my.service}.log"}
}
}
}
问题是点分字段名,在Logstash中嵌套字段需要用方括号指定,就这样吧:
filter {
if [log][file][path] {
grok {
match => { "[log][file][path]" => "%{GREEDYDATA}/%{GREEDYDATA:myservice}.log"}
}
mutate {
rename => {
"myservice" => "[my][service]"
}
}
}
}