查询仪表是否低于平均值 x%

querying if a gauge is x% below average

我有一些指标 (node_network_*_bytes),如果它们比平均水平下降超过 x%,我想发出警报。

我目前对我希望监控的接口执行类似以下操作:

rate(node_network_receive_bytes{device=~"vti-.*"}[1m]) < 6000000

但这显然需要一个常数值,并且接口的正常吞吐量各不相同。我是否可以查询该值是否在特定范围内比该特定仪表的平均值下降超过 50%?

我想这需要 stdvarstddev 运算符之类的东西,但我找不到任何可用的示例,而且我的统计数学有点生疏。

一种方法是:

  rate(node_network_receive_bytes{device=~"vti-.*"}[1m])
<
  rate(node_network_receive_bytes{device=~"vti-.*"}[1h]) * 2

虽然这种警报往往很嘈杂。