使用元数据字段使用logstash创建条件输出时遇到问题

时间:2018-06-27 13:11:34

标签: elasticsearch logstash metadata

我想将winlogbeat数据发送到与主索引不同的单独索引。我已经配置了winlogbeat以将其数据发送到我的logstash服务器,并且我可以确认我已收到数据。

这是我目前正在做的事情:

output {
  if [@metadata][beat] == "winlogbeat" {
    elasticsearch {
                                hosts => ["10.229.1.12:9200", "10.229.1.13:9200"]
                                index => "%{[@metadata][beat]}-%{+YYYY-MM-dd}"
                                user => logstash_internal
                                password => password
    stdout { codec => rubydebug }
       }
  else {
     elasticsearch {
                                hosts => ["10.229.1.12:9200", "10.229.1.13:9200"]
                                index => "logstash-%{stuff}-%{+YYYY-MM-dd}"
                                user => logstash_internal
                                password => password
                   }
       }
   }
}

但是,我无法使用此配置启动logstash。如果我删除了if语句,而仅使用一个elasticsearch输出(即处理常规logstash数据的一个),它将起作用。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

您的配置中的括号有问题。要修复您的代码,请参见下文:

output {
    if [@metadata][beat] == "winlogbeat" {

        elasticsearch {
            hosts => ["10.229.1.12:9200", "10.229.1.13:9200"]
            index => "%{[@metadata][beat]}-%{+YYYY-MM-dd}"
            user => logstash_internal
            password => password
        }
        stdout { codec => rubydebug }

    } else {

        elasticsearch {
            hosts => ["10.229.1.12:9200", "10.229.1.13:9200"]
            index => "logstash-%{stuff}-%{+YYYY-MM-dd}"
            user => logstash_internal
            password => password
        }

    }
}

我希望这可以解决您的问题。