基本上,我正在编写一项服务,以帮助我们确定我们访问的API之一是否已关闭。每个API偶尔会返回一个随机500错误或其他一些奇怪的东西,因此我们不希望每次收到随机错误时都会向世界发出警告。我正在尝试考虑确定最近特定提供商的错误是否出现峰值的最佳方法。
假设我有一个服务设置,它将跟踪最近特定服务发生的错误数,然后编写一个守护程序或cron作业,它将定期检查这些数字,并在出现峰值时发送警报服务提供的错误数量。该守护进程如何确定给定服务是否收到大量错误?
执行此操作的最简单方法是对出现的错误数量设置硬限制,并在错误数量超过该限制时发出警报。但我有一种直觉,认为这看似简单(换句话说,它看起来容易,但最终变得复杂)。我主要担心的是选择这个限制。我如何选择一个好的限制?如何通过增加流量来扩展它?
过去有没有人解决过这个问题并找到了一个效果很好的解决方案?有没有任何众所周知的算法?我对解决方案的一个偏好是:我需要跟踪的数据越少越好。
答案 0 :(得分:3)
如何从数学角度尝试解决问题。我假设您已经收集了一些数据(每天发生了多少例外)。因此,您可以从该数据中找出统计分布(可能正常(钟形曲线)),并且每当异常数量超过正常值1.5标准偏差时,发出警报。
换句话说,试着弄清楚正常的例外情况是多少,如果你的系统超过这个数字1个标准差,那么会触发警报。