首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日志级的Logstash度量滤波器

日志级的Logstash度量滤波器
EN

Stack Overflow用户
提问于 2017-03-28 14:29:04
回答 1查看 1.6K关注 0票数 1

有人能帮我弄一下米制过滤器吗。我想设置日志存储以检查日志级别=每5s的错误,如果日志级别=错误超过1,应该发送电子邮件。我正在使用logstash 2.2.4

代码语言:javascript
复制
input {
      file {
        path => "/var/log/logstash/example"
        start_position => beginning
      }
    }

filter {
 grok{
   match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\]\[%{LOGLEVEL:log-level}\s*\]" }
 }
 if [log-level] == "ERROR" {
   metrics {
       meter => [ "log-level" ]
       flush_interval => 5
       clear_interval => 5
      }
   }
}
output {
if [log-level] == "ERROR" {
  if [log-level][count] < 1 {
    email {
        port => 25
        address => "mail.abc.com"
        authentication => "login"
        use_tls => true
        from => "alerts@logstash.com"
        subject => "logstash alert"
        to => "siya@abc.com"
        via => "smtp"
        body => "here is the event line %{message}"
        debug => true
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-29 14:15:55

社论:

我不是metrics {}过滤器的粉丝,因为它打破了假设。Logstash是多线程的,度量是只在线程中保持状态的过滤器之一。如果使用它,则需要注意,如果运行4个管道工作程序,则有4个独立的线程保持自己的状态。这打破了“进入logstash”的所有事件都将“由度量过滤器”计算的假设。

对于您的用例,我建议不要使用Logstash发出这封电子邮件,而是依赖于访问备份存储的外部轮询机制。

因为这是度量筛选器,我强烈建议您将筛选器的数量设置为1,这是logstash启动时的-w命令行选项。您将失去并行性,但您将获得单个筛选器查看所有事件的能力。如果你不这样做,你可以得到的情况下,所有,比方说,6个线程看到一个错误事件;你将收到六封电子邮件。

您的配置可以使用一些更新。建议向metrics {}过滤器添加标记或其他内容。

代码语言:javascript
复制
 metrics {
     meter => [ "log-level" ]
     flush_interval => 5
     clear_interval => 5
     add_tag => "error_metric"
    }
 }

这样,您可以更好地过滤您的电子邮件段。

代码语言:javascript
复制
output {
  if [tags] include "error_metric" and [log-level][count] > 1 {
    email {
    }
  }
}

这是因为metrics {}过滤器在刷新时创建一个新事件,而不是修改现有事件。您需要使用筛选器捕获新事件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43072292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档