如何在Logstash过滤器步骤中访问嵌套字段?

时间:2018-08-19 19:50:03

标签: apache2 logstash filebeat

我正在尝试将我的Apache日志发送到Logstash中的不同管道。但是首先我需要识别它们,我认为以下过滤器应该这样做:

filter {
    if  "apache" in [fileset].[module] {
        tags => ["apache2"]
    }
}

但这破坏了一切,我看到了这个错误(仅相关部分):

Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"LogStash::ConfigurationError", :message=>"Expected one of [, #, and, or, xor, nand, { at line 20, column 30 (byte 241) after filter {\n    if  \"apache\" in [fileset]",

我不确定该怎么做。

fileset.module不是日志文件中的一行,显然-Filebeat正在添加它。但是由于已经添加了它,所以我认为我应该能够在Logstash中读取它。有人有想法么?

1 个答案:

答案 0 :(得分:0)

没关系!

首先,我在logstash中安装了mutate插件,现在此步骤有效:

filter {
    if [fileset][module] == "apache2" {
        mutate {
            add_tag => ["apache2"]
        }
    }
}

我看到您可以在输入过程中分配标签,所以我想您可以在管道的下方添加标签。我不好