我正在使用Prometheus收集Java应用程序的指标。在我的应用程序中,我正在通过API进行身份验证调用。我正在为Prometheus设计一种最佳方法,以便在对API的身份验证失败时将警报发送到我的电子邮件中。我正在考虑使用一个仪表,将其初始化为0,如果验证失败,则将仪表值增加到1-然后会触发监视仪表值的警报(如果仪表> 0,则触发警报)。
验证成功后,我将仪表的值恢复为0。
这通常是在Prometheus中如何创建自定义警报吗?
答案 0 :(得分:2)
可能不是最好的方法。一种极端的情况是,假设您每分钟有100个身份验证,其中99个身份验证失败,并且一次成功的身份验证之后,Prometheus每分钟抓取一次。您将有99%的失败率,而且永远不会找到答案。
如果另一方面,您为每次身份验证失败增加一个计数器,则可以在过去的几分钟内使用rate()
(以解决任何失败/延迟的刮擦),并且肯定会知道是否有任何身份验证在过去几分钟内发生故障。
对于警报,您可以将其设置为在该比率超过0(可能不理想,因为总是会出现随机故障)或超过某个非零阈值时触发。此外,可以选择在总认证请求的数量(一个请求的100%与1000个请求的50%不同)和/或条件必须满足的持续时间上添加条件(即,可能有一个API用户使用错误的凭据及其所有请求都会失败,但是整个过程要花几秒钟,而每隔几秒一次身份验证就会失败)。您必须自己确定在特定情况下有效的方法。