我想将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数据的一个),它将起作用。
我在这里做什么错了?
答案 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
}
}
}
我希望这可以解决您的问题。