【问题标题】:Compare two metrics where only one label is different in prometheus比较 prometheus 中只有一个标签不同的两个指标
【发布时间】:2021-06-25 11:21:34
【问题描述】:

这是我想要达到的情况和目标:

  • 在两台不同的服务器上,我们每个主机都有一个文件,每天为多台主机更新一次。我们会监控此文件何时更新,并根据自上次修改日期以来花费的一定时间,我们会发出警报。
  • 这是警报的样子:time() - node_textfile_mtime_seconds{instance=~"server1|server2"} > 194400(其中一个标签是 file="filename.prom")。这可以很好地引发 PER 服务器的警报,但是如果我想在 194400 多秒前在两台服务器上针对同一文件完成最后一次修改时引发警报,那么这就是我卡住的地方。

我查找了如何使用逻辑 AND 和许多其他东西,但找不到合适的方法。我发现的下一个最好的东西是这个,但是当我只想有一个时它是两个警报:

(time() - node_textfile_mtime_seconds{instance="server2"} > 194400 unless (time() - node_textfile_mtime_seconds{instance="server1"}) < 194400)

(time() - node_textfile_mtime_seconds{instance="server1"} > 194400 unless (time() - node_textfile_mtime_seconds{instance="server2"}) < 194400)

您知道更好的方法吗? 谢谢!

【问题讨论】:

    标签: prometheus monitoring


    【解决方案1】:

    在测试了更多其他表达式之后,我想我终于找到了自己问题的答案。如果有人面临同样的问题,这是我的表达:

    count by (file) (time() - node_textfile_mtime_seconds{instance=~"server1|server2"} > 194400) == 2
    

    基本上我们知道,对于同一个文件,有两个版本:一个在 server1 上,另一个在 server2 上,所以我们检查两个文件的表达式是否为真,如果是这样,就会引发警报。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 2023-03-09
      • 2020-01-02
      • 1970-01-01
      相关资源
      最近更新 更多