elasticsearch - 使用元数据字段使用 logstash 创建条件输出时遇到问题
问题描述
我想将 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 数据的那个,它就可以工作。
我在这里做错了什么?
解决方案
您的配置中的括号有问题。要修复您的代码,请参见下文:
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
}
}
}
我希望这能解决你的问题。
推荐阅读
- xslt - 是否嵌套 Xpath 谓词
- sql - 我要找还没有合作过电影的导演和演员
- react-native - 比较 React Native 中的两个状态变量
- url - 如何将我的服务器域设置为 www.foobar.com 而不是 foobar.com?
- oauth-2.0 - Salesforce 身份以保护外部 REST 端点
- docker-compose - SNS localstack 给出 403 Client Error: Forbidden for url error while publishing message
- javascript - Javascript 闭包和变量
- automation - SonarQube 可以自动化修复错误吗?
- html - 将输入日期放入 thymeleaf 表中
- java - createSpeechRecognizer() 和 createOnDeviceSpeechRecognizer() 有什么区别?