1

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

05/August/2015:16:55:10 : www.****.com : statuscode = 200 : 以秒为单位的加载时间 = 0.734 05/August/2015:16:55:11 : ****.my :状态码 = 403:加载时间(以秒为单位)= 0.340 05/August/2015:17:00:01:www。****.mx:状态码 = 200:加载时间(以秒为单位)= 2.282 05/August/2015:17:00:03:www。****.my:状态码 = 200:加载时间(以秒为单位)= 2.663 05/August/2015:17:00:06:www。****.co.id:状态码 = 200:加载时间(以秒为单位)= 1.455 05/August/2015:17:00:08:****。****.my : statuscode = 200 : 加载时间以秒为单位 = 1.684

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

4

4 回答 4

1

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

需要以下内容:

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

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

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

于 2015-08-09T04:56:52.427 回答
1

另一个项目是elastalert

它是开源的。您还可以找到介绍性博客文章: http: //engineeringblog.yelp.com/2015/10/elastalert-alerting-at-scale-with-elasticsearch.html http://engineeringblog.yelp.com/2016/03/elastalert -part-two.html

尤其是Kibana 规则转换应该非常方便。

于 2016-05-27T11:26:34.533 回答
0

你可以使用像 Logz.io 这样的服务来帮助你做到这一点。如果您每天最多发送 1GB(每月 30GB),则它是免费的。

于 2015-08-08T15:32:34.280 回答
0

由于您的情况有点复杂(随着时间的推移不同响应代码的计数),我会劝阻不要使用logstash这样做。

然而,这正是 elasticsearch 插件Watcher的用途。您可以使用 Watcher搜索特定的响应代码指定条件(例如计数超过 5 个)和发送电子邮件的时间表。

我建议你看看 elastic 的watcher 介绍。我很确定它会适合你的目的。

于 2015-08-05T13:30:47.040 回答