【问题标题】:当 prometheus 指标从“不存在”变为“存在”时触发警报
【发布时间】:2022-01-17 22:14:15
【问题描述】:

我想配置一个 prometheus 警报,以便在现有指标出现新标签值时触发。

示例:名为 my_metric 的指标有一个名为 sv 的标签。当my_metric{sv="john"} 从“不存在”变为“存在”或“有价值”时,它会触发警报。但是,我事先不知道新值“john”会是什么。

这可能吗?表达式会是什么样子?

【问题讨论】:

    标签: prometheus


    【解决方案1】:

    一般来说,查询应该是这样的:

    my_metric unless my_metric offset 10m
    

    简单地说,上面给出了所有my_metric 时间序列,除了那些在10m 之前存在的:

    • unless 从输出时间序列中移除具有相同标签集的;
    • offset 10m 将最后一个 my_metric 的评估时间从“现在”更改为 10m(或其他时间间隔)之前。在您的任务上下文中,这还将定义警报在自动解决之前触发多长时间。

    例子:

    # my_metric 10 minutes ago
    my_metric{foo="bar"} 1.0
    
    # my_metric now
    my_metric{foo="bar"} 1.0
    my_metric{foo="baz"} 1.0
    
    # query result:
    my_metric{foo="baz"} 1.0
    

    现在,在上面的基本表单中,您将收到任何新标签集的警报。如果您想观察某些特定标签的出现,请添加一些聚合:

    avg by(label1, label2) (my_metric) unless avg by(label1, label2) (my_metric) offset 10m
    

    label1, label2两边替换为对您的情况有意义的标签名称。您还可以使用其他聚合函数(min()max()sum() 等)代替 avg()

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      相关资源
      最近更新 更多