Logstash输出中的条件语句不起作用

时间:2019-02-19 09:39:13

标签: elasticsearch logstash

你好,我在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日志并且可以正常工作。

1 个答案:

答案 0 :(得分:0)

出于某种原因,logstash不会将文档发送到tpms-system索引。原来,这是一个权限问题。