prometheus - 比较 prometheus 中只有一个标签不同的两个指标
问题描述
这是情况以及我想要实现的目标:
- 在两台不同的服务器上,我们每个主机都有一个文件,每天为多台主机更新一次。我们监控此文件何时更新,并根据自上次修改日期以来花费的一定时间,我们会发出警报。
- 这就是警报的样子:(
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)
你知道更好的方法吗?谢谢!
解决方案
在测试了更多其他表达式之后,我想我终于找到了自己问题的答案。如果有人面临同样的问题,这是我的表达:
count by (file) (time() - node_textfile_mtime_seconds{instance=~"server1|server2"} > 194400) == 2
基本上我们知道,对于同一个文件,有两个版本:一个在 server1 上,另一个在 server2 上,所以我们检查两个文件的表达式是否为 true,并且在这种情况下引发警报。
推荐阅读
- r - 是否可以选择为具有相同标签的节点保持相同的颜色?R中的桑基图
- c++ - std::shared_ptr null 检查导致编译致命错误
- cordova - Cordova 9 - 支持的最低 Android API 级别/Android 版本?
- r - 在 Shiny 中组合日期滑块、单选按钮和地图
- c# - DateTime 的刻度的格式字符串是什么?
- javascript - Could anyone make me understand what does the code mean in vue.js
- loops - 在 Clojure 中使用递归构建字符串
- java - JMeter 从路径参数的开头删除正斜杠
- android - 使用 Retrofit 和 GsonConverterFactory 将 JsonArray 转换为 Kotlin 数据类(预期为 BEGIN_OBJECT 但为 BEGIN_ARRAY)
- firefox - 如何实现对 Firefox 48 及更高版本的 Protractor 支持?