代码之家  ›  专栏  ›  技术社区  ›  kitz

在logstash筛选器条件中使用ruby变量

  •  2
  • kitz  · 技术社区  · 7 年前

    我有以下日志存储配置:

    input { stdin { } }
    
    output {
      elasticsearch { hosts => ["localhost:9200"] }
      stdout { codec => rubydebug }
    }
    
    filter {
    
    
      ruby {
        code => "
          @@exists_pattern = ['foo', 'bar'].any?{ |pattern| event.get('message').include?(pattern) }
          event.add('keep_line', @@exists_pattern)
        "
      }
    
    
      if not [keep_line] { drop { } }
    
    
      grok {
        match => {
          "message" => '%{IP:serverip} \[%{HTTPDATE:my_timestamp}\]'
        }
      }
    
      date {
        match => [ "my_timestamp", "dd/MMM/YYYY:HH:mm:ss Z"]
        target => "@timestamp"
      }
    }
    

    [ERROR][logstash.agent] Cannot create pipeline {:reason=>"Expected one of #, ( at line 30, column 10 (byte 923) after filter {\n  # grok...
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   Andrei Madalin Butnaru    7 年前

    在Logstash过滤器的if条件中不能使用否定。尝试将布尔条件转换为正。