从本质上讲,我正在编写一项服务,以帮助我们确定我们访问的 API 是否出现故障。每个 API 都会偶尔返回一个随机 500 错误或其他一些奇怪的东西,所以我们不想在每次遇到随机错误时都向世界发出警报。我正在尝试考虑确定最近是否有来自特定提供商的错误高峰的最佳方法。
假设我有一个服务设置,它将跟踪特定服务最近发生的错误数量,然后编写了一个守护程序或 cron 作业,它将定期检查这些数字,并在出现峰值时发送警报服务给出的错误。该守护进程如何确定给定服务是否出现大量错误?
最简单的方法是对出现的错误数量设置硬性限制,并在错误数量超过该限制时发出警报。但我有一种直觉,这看似简单(换句话说,它看起来很简单,但最终变得很复杂)。我主要关心的是选择这个限制。如何选择一个好的限制?如何使其随着流量的增加而扩展?
过去有没有人解决过这个问题并找到了一个非常有效的解决方案?有什么众所周知的算法吗?我对解决方案的一个偏好是:我必须跟踪的数据越少越好。