在PagerDuty集成中触发一定数量的事件后触发警报

71次阅读
没有评论

问题描述

想知道是否可以在集成中的一定数量事件发生后,触发警报。例如,如果用户的应用程序报告了一次非关键性的故障,这值得进行故障排查,但可能不足以在半夜叫醒某人。然而,如果应用程序一遍又一遍地报告相同的故障,这就是一个更大问题的症状,需要尽快解决。

解决方案

在以下解决方案中,我们将介绍如何使用不同的度量系统来实现此目标。

方案1:使用Metrics-Based Alerting System

最简单的方法是使用像Prometheus、Datadog等基于度量的警报系统。这些系统允许你创建一个计数器,记录发生的事件数量,并且你可以在漂亮的图表上查看在给定时间段内发生的事件数量。大多数度量系统都能与PagerDuty良好地集成,用于触发警报。使用这些度量系统,还可以获得系统的历史基线数据,这在查找问题发生原因和时间时非常有用。

阈值应该是一段时间内的事件数量。如果只是随意选择一个数字,比如100,你最终总会达到那个限制。如果在一小时内看到了10次事件,那可能对你来说就很糟糕了。

这个方案的难点在于,PagerDuty似乎不容易让你访问有关事件数量的度量数据。你可以在他们的用户界面上查看漂亮的图表,但没有简单的方法将其馈送到你的度量系统。你需要在创建事件的其他地方添加一些代码,使其递增这个计数器。

方案2:通过Sensu进行多次故障检测

我们处理这个问题的方式是先通过Sensu运行我们的警报。你可以配置一个Sensu检查,要求多次故障才触发警报,然后还可以配置检查的通知发送到PagerDuty。这样,当PagerDuty得到通知(并向你发出警报)时,已经满足了“连续N次故障”条件。

如果你需要检查不是一系列连续故障的数量,而是在一段时间内的N次故障,那么这就是将elasticsearch、graphite或类似工具加入其中的一个典型用例。每当有故障发生时,记录一个错误或增加一个度量,然后你的检查可以简单地查看该时间段内的聚合情况,看是否超过了限制。

总结

在PagerDuty集成中触发一定数量的事件后触发警报,可以通过使用度量系统或通过Sensu进行多次故障检测来实现。这些方法都可以根据你的需求进行定制,以便在适当的时候触发警报,帮助你更好地管理应用程序的故障情况。

正文完