如何在prometheus中按两个标签过滤?
Posted
技术标签:
【中文标题】如何在prometheus中按两个标签过滤?【英文标题】:How to filter by two labels in prometheus? 【发布时间】:2021-10-12 13:52:45 【问题描述】:我们有一个error_count
指标,它有两个标签:
-
客户
error_code
因为我们知道有一个客户端会有(比如说,404 error_code)这是无法避免的,所以我们想在我们的仪表板中排除它。
类似:
error_countclient!="foo_client" and error_code!="404"
但是
error_countclient!="foo_client", error_code!="404"
不起作用,因为它将排除所有来自 foo_client
和所有 404
错误。
更糟糕的是,我只能控制 Grafana 的 PromQL,也许配置 Prometheus 的收集可以解决这个问题,但我无权配置这个,因为它们由其他团队管理。
【问题讨论】:
【参考方案1】:如果我理解正确,您想要的是 所有 客户的 error_count
指标。如果它是foo_client
,那么您只需要它不是 404 错误代码。
这是在 Prometheus 中执行此操作的一种方法:获取所有不是 foo_client
的条目,或者 是 foo_client
的条目没有 error_code=404
:
error_countclient!="foo_client" or error_countclient="foo_client", error_code!="404"
【讨论】:
【参考方案2】:您可以使用or
,它是 promQL 中的 union operator。
error_countclient!="foo_client"
or
error_counterror_code!="404"
【讨论】:
谢谢,这个可以解决。但是将来我们可能需要添加更多,比如client=bar and error_code=403
也应该被忽略。有没有一种简单且可维护的方法来做到这一点?谢谢。以上是关于如何在prometheus中按两个标签过滤?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flask SQLAlchemy 中按多个条件进行过滤?
在 Firebase Analytics BigQuery 数据库中按相同 ARRAY 或 STRUCT 中的两个值过滤查询