我正在使用prometheus和grafana监视某些服务器。我公开的指标之一称为recent_tables
,其中包含过去15分钟内已写入sql表的资产数量(计算机自动发布到sql)。它的标签是table
,job
和status_code
。我还具有指标online_assets
,该指标具有在线资产的数量。其标签为cluster_id
,db_host
和job
。
我正尝试发出警报,以通知最近何时有<90%的在线资产已写入sql表。在编写警报之前,我试图在grafana中建立一个面板来填充数据,并最终将其转换为Alertmanager expr。以下查询不起作用,我也不明白为什么:
recent_tables < online_assets * 0.9
sum(recent_tables) by (table) < online_assets * 0.9
但是,以下查询有效:
sum(recent_tables{table="<table>"}) - sum(online_assets)
我不想基于每个表发出警报(这可以通过ansible来实现),但是我想了解是否有办法从同一个查询中提取多个向量。
答案 0 :(得分:0)
正如Michael Doubez指出的那样,进行查询时标签的尺寸不能不平衡。
我得出以下结论:
sum(recent_tables) by (table) - ignoring(table) group_left() sum(live_assets) * 0.9 < 0
这可以解决尺寸不匹配的问题,但可能会有更简洁的方法。