首页 > 解决方案 > 普罗米修斯警报测试

问题描述

我想问一下你们对在测试环境中测试一些 prometheus 警报有什么看法,因为知道它上面的数据指标量与 prod 环境上的负载不同?因为在这种情况下,具有适用于 prod 的阈值的警报在测试环境中可能无法正常工作。例如,如果我们在测试环境中,在 10 分钟内不接收请求可能是可以的,但这将被视为产品上的问题。

在这种情况下进行测试是否相关?有最佳做法吗?

标签: prometheus

解决方案


这是我解决这个问题的两种首选方法。很多时候,我实际上结合使用这两种方法来处理给定的警报,这帮助我在警报投入生产之前发现了很多问题。


您可以为警报规则编写单元测试并通过promtool. 它将允许您手动指定输入系列(可以是您想要的任何内容)并比较实际与预期的警报。

官方文档: https ://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/

这里还有一篇文章: https ://www.robustperception.io/unit-testing-alerts-with-prometheus


如果您想在更改了某些参数的情况下将真实警报部署到几个不同的地方,那么这对于数据模板语言来说是一个很好的用例。有一种相对流行的方法是使用Jsonnet语言创建一个“mixin” 。这使您可以编写一次警报,但为每个环境参数化它们。

这里有很多资源和示例:https ://monitoring.mixins.dev/

我想你也可以用 CUE 或像 Python 这样的普通语言来做同样的事情,但是 Jsonnet 在这种特殊情况下使用最广泛。请注意,学习曲线非常陡峭,但是一旦掌握了它,它对于大量用例来说非常强大。


推荐阅读