你好,我在logstash的输出中做了一个条件语句,但是else语句不起作用。当我发送INFO日志时,它们进入if语句,但是当我发送与这些日志不同的日志时,它们不会进入else语句,并且它们不会显示在tpms-system索引中。
这是我的输出部分:
output{
stdout{
codec => dots
}
if [message] =~ "\D\[INFO\s\]:.*\[ELASTICSEARCH\].*" or [message] =~ "\D\[INFO\]:.*\[ELASTICSEARCH\].*" {
elasticsearch {
hosts => ["https://localhost:9200"]
user => logstash
password => logstash
ssl => true
ssl_certificate_verification => false
document_id => "%{fingerprint}"
index => "beat-tpms"
}
}else{
elasticsearch {
hosts => ["https://localhost:9200"]
user => logstash
password => logstash
ssl => true
ssl_certificate_verification => false
document_id => "%{fingerprint}"
index => "tpms-system"
}
}
}
正则表达式是正确的,因为我正在filebeat.yml文件中使用相同的表达式来仅接收这些INFO日志并且可以正常工作。
答案 0 :(得分:0)
出于某种原因,logstash不会将文档发送到tpms-system索引。原来,这是一个权限问题。