Prometheus 普罗米修斯抓斗系列,标签与今天相配';日期

Prometheus 普罗米修斯抓斗系列,标签与今天相配';日期,prometheus,prometheus-alertmanager,promql,Prometheus,Prometheus Alertmanager,Promql,我有这样的系列 events{batch=20200818-00, stage=1} 10 events{batch=20200818-10, stage=1} 10 events{batch=20200818-20, stage=1} 10 events{batch=20200818-10, stage=2} 9 events{batch=20200818-20, stage=2} 8 events{batch=20200818-30, stage=2} 10 其中有一个标签批次,由日期

我有这样的系列

events{batch=20200818-00, stage=1} 10
events{batch=20200818-10, stage=1} 10
events{batch=20200818-20, stage=1} 10
events{batch=20200818-10, stage=2}  9
events{batch=20200818-20, stage=2}  8
events{batch=20200818-30, stage=2} 10
其中有一个标签
批次
,由日期和小时组成。我想设置一个警报,如果阶段2中今天的事件总数大于阶段1,则会触发该警报


如何根据time()筛选序列?在Grafana中,插入日期并使用正则表达式匹配标签看起来很容易。但是,设置并警告这种情况看起来很重要。请帮助。

普罗米修斯目前没有办法跨越标签/价值。但是你在某个地方有一个指标,它在标签中给出了一天的日期,并用它来过滤你的数据

使用“今天”指标 生成它取决于您现有的组件:这可以通过节点导出器文本文件或您每天更新的记录规则来完成:

today{date="20200818"} 1
并使用公制重新标记(在或使用中)

您将获得与您的度量相关的类似标签:

events{batch=20200818-00, date=20200818, stage=1} 10
然后,您可以使用以下方法筛选序列:

label_replace(events, "date", "$1", "batch", "([0-9]+)-.*") AND ON(date) today
避免重复的指标 午夜有一个小转折需要考虑:以前的
今天的
指标只有在5分钟后才会消失。您可以通过生成昨天的标签(但具有不同的值)来解决此问题:

today{date="20200817"} 0
today{date="20200818"} 1
表达式变成:

label_replace(events, "date", "$1", "batch", "([0-9]+)-.*") AND ON(date) today == 1


注意:如果你有一个度量给你事件的时间戳,你可以用它来确定今天是什么(这通常是批量完成的)

谢谢你的详细回答。我确实有另一个基于标量(月中的日(向量(时间()))和标量(年(向量(时间()))的指标)选择的指标,它让我得到相同的标签,然后使用标签连接来抓取事件。这目前运行良好。但表达式看起来非常神秘。
label_replace(events, "date", "$1", "batch", "([0-9]+)-.*") AND ON(date) today == 1