【问题标题】:logstash add_field and remove_fieldlogstash add_field 和 remove_field
【发布时间】:2016-02-16 16:42:38
【问题描述】:

我正在尝试简化我的 logstash 配置。我想将程序字段拆分为单独的字段(如下所示)但是我更喜欢只使用一个 grok 语句(如果可能的话!)

在下面的两个示例中,我在第二个示例中得到了 _grokparsefailure,但在第一个示例中没有。由于 grok 具有 add_field 和 remove_field 选项,我假设我可以将它们全部组合成一个 grok 语句。为什么不是这样?我是否在某处遗漏了一些排序/语法?

示例日志:

2016-02-16T16:42:06Z ubuntu docker/THISTESTNAME[892]: 172.16.229.1 - - [16/Feb/2016:16:42:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36" "-"

为什么会这样:

filter {

       # Extracts the docker name, ID, image etc elements
       mutate {
               add_field => { "[@metadata][program]" => "%{program}" }
               remove_field => "[program]"
       }

       grok {
                patterns_dir => "/logstash/patterns_dir/docker"
                match => { "[@metadata][program]" => "%{D_ID}" }
       }

}

但这不是:

filter {

        grok {
               add_field => { "[@metadata][program]" => "%{program}" }
               remove_field => "[program]"
               patterns_dir => "/logstash/patterns_dir/docker"
               match => { "[@metadata][program]" => "%{D_ID}" }
        }

}

【问题讨论】:

    标签: logstash logstash-grok logstash-configuration


    【解决方案1】:

    add_field 和 remove_field 仅在底层过滤器工作时运行。在您的第二个示例中,[@metadata][program] 尚不存在供您运行 grok{}。

    【讨论】:

    • 嗯,所以在某种程度上,如果我坚持这样做并且只使用 grok 逻辑上可以完成的方式(即使第一个 gork 由于没有匹配项而返回错误) : grok { add_field => { "[@metadata][program]" => "%{program}" } remove_field => "[program]" } //// grok { patterns_dir => "/logstash/patterns_dir/docker " match => { "[@metadata][program]" => "%{D_ID}" } }
    • 使用 mutate 添加字段然后使用 grok 很好,并且比使用 grok 只运行 add_field 和 remove_field 的语法更好理解。
    【解决方案2】:

    @Alan 直接回答了这个问题,但是我发现这种方式更具可读性并且更加压缩了我的代码:

    grok {
        patterns_dir => "/logstash/patterns_dir/docker-patterns"
        match => { "program" => "%{D_ID}" }
        overwrite => [ "program" ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多