当前位置: 首页 > 知识库问答 >
问题:

按公制值过滤prometheus结果,而不是按标签值

高宸
2023-03-14

因为普罗米修斯topk返回的结果比预期的要多,而且因为https://github.com/prometheus/prometheus/issues/586需要客户端处理,而这些处理尚未通过https://github.com/grafana/grafana/issues/7664提供,所以我正在尝试对我的类似问题进行不同的近期解决方案。

在我的特殊情况下,我想要绘制的大多数度量值在大多数情况下都是零。只有当它们高于零时,它们才有趣。

我可以找到编写普罗米修斯查询的方法来根据标签的值过滤数据点,但是我还没有找到一种方法来告诉普罗米修斯只有当度量值满足某个条件时才返回时间序列数据点。在我的例子中,我想筛选大于零的值。

是否可以在prometheus查询中添加条件,根据度量值筛选数据点?如果是这样,我在哪里可以找到这样做的语法示例?

共有3个答案

夏侯朝斑
2023-03-14

这可以通过子查询解决:

count_over_time((metric > 0)[5m:10s])

上面的查询将返回过去5分钟内大于0的度量数据点的数量。方括号中的第二个参数必须小于度量值的刮取间隔。

虞博涛
2023-03-14

使用比较运算符进行过滤,例如x

长孙兴德
2023-03-14

如果您对brian的回答感到困惑:使用比较运算符进行过滤的结果不是布尔值,而是经过过滤的序列。例如。

min(flink_rocksdb_actual_delayed_write_rate > 0)

将显示高于0的最小值。

如果您真的想要一个布尔值(或者更确切地说是0或1),请使用类似

sum (flink_rocksdb_actual_delayed_write_rate >bool 0)

这将为您提供非零计数。

 类似资料:
  • 问题内容: 我需要返回不包含具有特定ID的文档的结果。Elasticsearch允许我们指定允许使用哪些ID,但是我看不到任何禁止某些ID的方法。在我的情况下,我不想返回用户已经看到的内容,因此每个用户的列表都不同。 问题答案: 您可以通过添加一个过滤器来实现此目的,该过滤器包含一个过滤器,该过滤器带有您不想显示的ID数组,如下所示:

  • 问题内容: 我的表格显示了各个国家/地区进行的搜索量以及进行搜索的日期,我想要一个查询来向我显示2012年和2013年每个月的搜索量,我需要为月份添加单独的列,年份和搜索次数。我以前使用过下面的查询,该查询返回每周进行的搜索量,但我想将其更改为仅2012和2013年每月进行的搜索。 问题答案: 只需使用MONTH()和YEAR()函数

  • 下面是一个实现: 下面是一个示例用法来检查可操作性:

  • 我有一个名为Source的类,它有lazy val isValid来做一些需要时间的网络检查。我让它返回Future[Boolean],这样它就不会阻塞主线程: 现在,我想检查几个来源并丢弃无效的来源。 下面是一些伪代码: 我在想一些方法,可以将从isValid返回的Future[Boolean]转换为其他将来,在验证检查完成后,可以使用整个源对象进行解析。 最好的方法是什么?

  • 问题内容: 好的,起初这只是和我的一个朋友开玩笑,但后来变成了有趣的技术问题:) 我有下表: 该表包含我所有东西的记录,并分别具有数量和优先级(我需要多少)。 我有一个指定体积的袋子,例如。我想从表中选择所有可以放入袋子的东西,首先包装最重要的东西。 这似乎是使用窗口函数的情况,所以这是我想出的查询: 但是,问题在于Postgres抱怨: 如果我删除此过滤器,则会正确计算总列,对结果进行正确排序,

  • 我想迭代/生成一个无限大的IntStream或LongStream,并用提供的最大值来限制它们,而不是用操作的元素计数来限制它们,例如获得前20个正数偶数: 我需要的是用一个最大值来限制流。例如,如果我需要1000以下2的所有幂