如何通过relabeling/metricRelabeling删除Prometheus ServiceMonitor指定指标特定标签
配置说明
首先区分ServiceMonitor中两个重打标签配置段的适用场景:
relabelings:作用于服务发现阶段,仅处理抓取目标的元信息标签,不会修改实际抓取到的指标自带标签,不适用于当前需求metricRelabelings:作用于指标抓取完成、写入时序库之前,可直接修改指标的标签、过滤指标,是当前场景需要使用的配置段
注意不要直接配置全局labeldrop: foo规则,该规则会对所有抓取到的指标生效,会把所有指标携带的foo标签全部删除,不符合仅处理node_metrics_first指标的要求。
具体配置
直接在ServiceMonitor的对应端点下添加metricRelabelings规则即可,核心是利用replace动作的特性:当replacement配置为空字符串时,会直接删除targetLabel指定的标签,且仅对匹配到sourceLabels规则的指标生效,不会影响其他指标。
完整配置片段参考:
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: custom-metrics-monitor spec: endpoints: - port: metrics interval: 30s metricRelabelings: # 仅删除node_metrics_first指标的foo标签 - sourceLabels: [__name__] regex: node_metrics_first targetLabel: foo action: replace replacement: "" selector: matchLabels: # 替换为你自己的服务标签选择器 app: your-service
效果验证
配置生效后,抓取到的指标会和预期完全一致:
node_metrics_first{AAA="aaa"} node_metrics_second{BBB="bbb",CCC="ccc"}
如果需要对其他指定指标删除特定标签,只需要修改规则中regex字段为对应指标名、targetLabel字段为要删除的标签名即可,支持多条规则并列实现多指标/多标签的定向删除。
内容的提问来源于stack exchange,提问作者chocho li
相关产品推荐
相关产品推荐

