VM Agent指标标签配置异常:指定单一指标却批量添加标签
问题:vmagent中尝试为单一指标添加标签,却意外应用到所有指标
我在vmagent中使用以下配置,尝试仅为kafka_consumergroup_lag_sum指标添加foo=3标签:
global: scrape_interval: 60s scrape_timeout: 60s external_labels: server_name: vmagent scrape_configs: - job_name: "kafka_exporter" file_sd_configs: - files: - kafka_exporter.yml metric_relabel_configs: - if: '{__name__="kafka_consumergroup_lag_sum"}' target_label: foo replacement: 3
但在VictoriaMetrics中查询时发现,foo=3标签被添加到该指标之后的所有指标中;当我将配置中的指标更换为kafka_topic_partitions时,标签同样被添加到该指标及后续的process、promhttp类指标中。请问哪里配置错误?如何实现仅为单一指标添加标签?
问题根源
你的metric_relabel_configs中if字段的格式错误。在VMagent/Prometheus的relabel规则里,if字段接受的是PromQL表达式,不需要用大括号包裹标签匹配器。你写的{__name__="kafka_consumergroup_lag_sum"}不符合语法要求,导致这个条件被判定为永远成立,最终所有经过该relabel规则的指标都被添加了foo=3标签。
正确配置方案
将if条件修改为标准的PromQL表达式格式即可:
global: scrape_interval: 60s scrape_timeout: 60s external_labels: server_name: vmagent scrape_configs: - job_name: "kafka_exporter" file_sd_configs: - files: - kafka_exporter.yml metric_relabel_configs: - if: '__name__ == "kafka_consumergroup_lag_sum"' target_label: foo replacement: "3"
另一种等价写法
你也可以使用source_labels搭配regex的方式实现相同效果,这种写法在复杂匹配场景下更灵活:
metric_relabel_configs: - source_labels: [__name__] regex: kafka_consumergroup_lag_sum target_label: foo replacement: "3"
两种写法都会仅对名称为kafka_consumergroup_lag_sum的指标添加foo=3标签,其他指标不会受到影响。
内容的提问来源于stack exchange,提问作者zentkhv
相关产品推荐
相关产品推荐

