首页 > 解决方案 > 如何比较prometheus中的相应指标?

问题描述

假设我的数据库中有两个对应的表,table1 和 table2,一对一。对于每个表中的每条记录的创建,都有一个指标。现在,是否有可能两个使用这两个指标(一个来自 table1 和一个来自 table2)来获取信息 table1 中有多少记录在给定时刻在 table2 中有相应的记录?我可以以某种方式将记录的 id 传递给指标吗?

标签: rubyprometheus

解决方案


如果您正在为每条记录生成指标并且每条记录都有一个唯一标识符(即标签),那么您可以使用countby聚合器。例如,count(table_metric{id="foo"}) by (table)如果他们每个人都有一个表格标签,那就可以了。

如果指标名称不同,您可能需要使用or运算符来创建联合。例如,count(table_1_metric or table_2_metric) by (id)

无论哪种情况,如果您想在两个表中都有一个条目,您需要检查以确保计数为 2。

最后,只是我的两分钱,但我不建议养成将如此高基数数据放入 Prometheus 的习惯。另一种方法是使用类似SQL 导出器的东西来生成基于数据库查询的指标(例如SELECT count(*) FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID WHERE T2.ID IS NULL,它会显示有多少不匹配,以便您进一步调查)。


推荐阅读