我想问你们,在测试环境中测试一些prometheus警报,知道它上的数据量不会与prod环境中的负载相同,你们对此有何看法?因为在这种情况下,具有适用于prod的阈值的警报在测试环境中可能不能很好地工作。例如,如果我们在测试环境中,在10分钟内不接收请求可能是可以的,但在prod上这将被视为问题。
在这种情况下进行测试是否相关?有没有最佳实践?
发布于 2021-10-18 22:34:37
这是我解决这个问题的两种首选方法。很多时候,我实际上将这两种方法结合使用来处理给定的警报,这帮助我在警报进入生产环境之前捕获了许多问题。
您可以为警报规则编写单元测试,并通过promtool运行它们。它将允许您手动指定输入序列(可以是任何您想要的),并将实际警报与预期警报进行比较。
官方文档:https://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/
这里还有一篇文章:https://www.robustperception.io/unit-testing-alerts-with-prometheus
如果您希望在更改了一些参数的情况下将真正的警报部署到几个不同的位置,这是数据模板语言的一个很好的用例。有一种相对流行的方法可以做到这一点,那就是用Jsonnet语言创建一个“混合”。这让您只需编写一次警报,但可以针对每个环境对其进行参数化。
这里有很多资源和例子:https://monitoring.mixins.dev/
我想你也可以用CUE或者像Python这样的普通语言来做同样的事情,但是Jsonnet在这种特殊的情况下是最广泛使用的。请注意,学习曲线是非常陡峭的,但一旦你掌握了它的诀窍,它对于大量的用例来说是非常强大的。
https://stackoverflow.com/questions/69618546
复制相似问题