2017-07-26 165 views
0

我是Logstash的新手。目前我有一个logstash.conf文件,将错误日志发送到zabbix项目。 我已经应用了一个自定义Grok过滤器来查找ERROR | Error | error关键字,并基于它将输出重定向到zabbix项目。 但是,我希望logstash每当过滤器结果计算为true时发送增量计数器,而不是简单地发送相应的Log。 我该如何做到这一点?如何使用Logstash输出将错误日志的计数发送到zabbix?

这是我正在使用的日志文件的片段。

input { 
     file { 
      path => "/root/sample.log" 
      type => "string" 
     } 
    } 
    # The filter part of this file is commented out to indicate that it is 
    # optional. 
    filter { 
      mutate { 
        add_field => { "[@metadata][error]" => "error" } 
        add_field => { "[@metadata][counter]" => "1" } 
        add_field => { "myhost" => "logstash" } 

        } 
    if "grokked" not in [tags] { 

    grok { 
     patterns_dir => ["/root/logstash-5.5.0/pattern"] 
     match => { "message" => "%{ERROR:log_level}" } 
     add_tag => ["ERROR", "grokked"] 
     } 
    } 
    } 
    output { 
      stdout { codec => rubydebug } 

      if "ERROR" in [tags]{ 
        zabbix 
        { 
         zabbix_server_host => "192.168.56.102" 
         zabbix_host => "myhost" 
         zabbix_key => "[@metadata][error]" 
         #zabbix_value => "[@metadata][counter]" 
        } 

回答

0

随着ruby filter plugin

ruby { 
    code => 'event.set("error_count", event.get("message").scan(/Error/i).length)' 
} 

这样,你就会有一个叫ERROR_COUNT随着时间error(不区分大小写),数字领域出现了message

相关问题