4.5报警逻辑测试

Testing Alerting Logic

报警逻辑测试

在理想的情况下, 监控和报警的代码应该和代码开发采用相同的测试标准。虽然Prometheus开发者正在讨论开发用于监视的单元测试, 但目前还没有被多数系统采用以允许您这样做。

在 Google, 我们使用特定于域的语言测试我们的监视和警报, 允许我们创建合成时间序列。然后, 我们根据派生时间序列中的值或特定警报的触发状态和标签存在来编写断言。

监视和警报通常是一个多级过程, 因此需要多个系列的单元测试。虽然这一领域仍然很不发达, 但如果您希望在某一时刻实施监控测试, 我们建议采用三分层的方法, 如图4-1 所示。

4-1 Figure 4-1. Monitoring testing environment tiers

  • 二进制报告: 检查导出的度量指标在一定条件下是否按预期值变化。
  • 监控配置: 评估确保规则能产生预期的结果, 并且特定的条件会产生预期的报警。
  • 报警配置: 测试生成的报警是否根据报警标签值路由到预定的目标。

如果您无法通过综合手段测试您的监控, 或者您监控阶段根本无法测试, 请考虑创建一个运行系统, 导出众所周知的度量标准, 比如请求数和错误数量。您可以使用此系统验证派生时间序列和警报。在配置它们后, 您的报警规则很可能不会触发数月或数年, 并且您需要有信心, 当数据点超过某一阈值时, 让对应的工程师收到对应的报警, 使其变得有意义。