如何使用logstash创建一个带有另一个字段的子字符串的新字段

问题描述 投票:0回答:1

我使用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"}
        }
    }
}
elasticsearch logstash grok
1个回答
0
投票

问题是点分字段名,在Logstash中嵌套字段需要用方括号指定,就这样吧:

filter {
    if [log][file][path] {
        grok {
            match => { "[log][file][path]" => "%{GREEDYDATA}/%{GREEDYDATA:myservice}.log"}
        }
        mutate {
            rename => {
                "myservice" => "[my][service]"
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.