Prometheus - 匹配除一个以外的所有指标

Prometheus - Match all metrics but one

我如何匹配除某些指标之外的所有 Prometheus 指标?

例如:{__name__!~"metric_to_discard"}

不行,它returns Error executing query: parse error at char 35: vector selector must contain at least one non-empty matcher.

谢谢

这是一种安全机制,可以避免因意外使用太宽的选择器而给 Prometheus 带来沉重负载。通常你不需要这样的查询来匹配(几乎)所有标签维度的每个指标。

通过使用 ..*.+ 全匹配选择器添加另一个维度,可以得到 some hacky solution to workaround this safety check。 (安全检查也禁止使用.*

{job=~"..*", __name__!~"metric_to_discard"}

注意:请注意,此查询可能会严重影响您的 Prometheus 实例,不应在生产系统上使用。

如前所述,可能有更好的方法来获得您喜欢的结果,而无需查询几乎每个指标。请考虑发布一个新问题,描述您真正想要达到的结果。

Prometheus 支持{__name__!=""}查询,return所有时序。例如。此查询等效于以下 SQL 查询:SELECT * FROM metrics(请注意,如果 Prometheus 包含许多时间序列,此查询可能会使 Prometheus 崩溃)。 Prometheus 允许对同一标签使用多个过滤器(包括映射到指标名称的 __name__ 标签)。因此,以下查询将 return 除 metric_to_discard 指标之外的所有时间序列:

{__name__!="",__name__!~"metric_to_discard"}

P.S。 VictoriaMetrics 不需要 __name__!="" hack。它只是 return 来自 {__name__!~"metric_to_discard"} 查询的预期结果。