使用Logstash发送电子邮件提醒

时间:2015-08-05 11:49:46

标签: logstash logstash-grok elastic-stack

我已经配置了一个elk堆栈(Logstash,Elastic search和kibana),我们有一个自定义日志文件,如下所示。

  

05 / August / 2015:16:55:10:www。****。com:statuscode = 200:Time in   加载秒数= 0.734 05 / August / 2015:16:55:11:****。my:statuscode   = 403:加载的秒数= 0.340 05 / August / 2015:17:00:01:www。 ****。mx:statuscode = 200:加载秒数的时间= 2.282 05 / August / 2015:17:00:03:www。 ****。我的:statuscode = 200:时间   加载秒数= 2.663 05 / August / 2015:17:00:06:www。 ****。co.id:   statuscode = 200:加载的时间(秒)= 1.455   05 / August / 2015:17:00:08:****。 ****。我的:statuscode = 200:时间   加载秒数= 1.684

我已经在logstash上成功配置了这个日志,它在Kibana中正常显示。 现在,如果日志中的任何上述网站连续显示超过5个计数的504或403状态代码,我想配置电子邮件警报。 我知道我需要添加一个匹配日志文件模式的过滤器。但由于这是一个自定义日志,我无法做到。

4 个答案:

答案 0 :(得分:1)

最好的方法是编写自己的脚本,我是用Python编写的。

需要以下内容:

  • 将安排脚本并在Elasticsearch内搜索结果。
  • 一旦找到结果,您将触发反应。
  • 如果您有监控系统,则可以向此系统发送触发器以拥有一个集中式界面。
  • 如果您只是想要一封电子邮件,您可以使用python发送一封电子邮件,其结果包括发现的错误数,服务器名称以及可帮助您调试问题的任何其他信息。
  • 如果您每10分钟运行一次脚本,它应该在Elasticsearch数据库中查找过去10分钟内的事件,如果您每小时运行一次,那么它应该查找过去一小时的数据。
  • 你可以使用cron来安排脚本,但是你需要找到一种方法来监控它,如果它失败了,我会使用rundeck,如果我的一个工作失败,它会给我发一封电子邮件。

我知道这可能看起来很复杂但是如果你使用的是logstash基础设施,那么编写这个脚本是值得的,一旦编写它就可以很容易地将它调整到不同的搜索。

另一种选择可能是等待Elastic的观察者插件,从他们网站上的帖子开始,他们计划在官方GA版本发布后添加GUI界面,我不知道什么时候会发生,但它可能是一个更好的解决方案,即使它比使用python更有限。

答案 1 :(得分:1)

答案 2 :(得分:0)

由于您的情况有点复杂(随着时间的推移计算不同的响应代码),我会劝阻用logstash执行此操作。

但是,这正是elasticsearch插件Watcher的用途。您可以将观察者用于search for specific response codesspecify conditions(例如计数超过5),并安排到send an email

我建议你看看弹性watcher introduction。我很确定它会适合你的目的。

答案 3 :(得分:0)

您可以使用像Logz.io这样的服务来帮助您完成这项工作。如果您每天最多发货1GB(每月30GB),那么它是免费的。

相关问题