ruby - 如何比较prometheus中的相应指标?
问题描述
假设我的数据库中有两个对应的表,table1 和 table2,一对一。对于每个表中的每条记录的创建,都有一个指标。现在,是否有可能两个使用这两个指标(一个来自 table1 和一个来自 table2)来获取信息 table1 中有多少记录在给定时刻在 table2 中有相应的记录?我可以以某种方式将记录的 id 传递给指标吗?
解决方案
如果您正在为每条记录生成指标并且每条记录都有一个唯一标识符(即标签),那么您可以使用count
和by
聚合器。例如,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
,它会显示有多少不匹配,以便您进一步调查)。
推荐阅读
- pine-script - 并非所有订单都在交易视图 pinescript 策略中执行
- rust - 特征向下转换
- angular - 一个 @ngrx/effect 中的多个 Http 调用
- .net-core - DbContext.BeginTransactionAsync 有时需要几秒钟才能完成
- java - 如何为检查点建立JPA谓词属于给定的多边形
- struct - 如何在调试输出中打印完整的结构路径?
- javascript - Spectron app.start() 没有启动应用程序
- python - 使用熊猫进行字符串拆分
- python - 测试 peewee 应用程序:绑定在不同脚本中引用的模型
- c++ - 一个丑陋的函数找到小于给定键的最大 std::set 元素