You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenTelemetry指标过滤器未按预期工作,求助解决配置问题

问题分析与解决方案

你遇到的核心问题是OpenTelemetry(OTel)对Prometheus格式直方图指标的转换逻辑导致过滤器规则未生效:

当OTel的Prometheus Receiver采集kubelet的Prometheus指标时,会将kubelet_runtime_operations_duration_seconds_bucket、kubelet_runtime_operations_duration_seconds_sum、kubelet_runtime_operations_duration_seconds_total合并为一个单一的OTel Histogram类型指标,指标名称为kubelet_runtime_operations_duration_seconds。此时你原有的按_bucket后缀匹配的规则无法命中这个合并后的指标,导致整个直方图的所有数据点(bucket、sum、total)都被保留下来。

下面提供两种可行的解决方案:


方案一:在采集阶段直接过滤(推荐)

在kubelet的Prometheus采集配置中添加metric_relabel_configs,在数据进入OTel之前就过滤掉不需要的指标,减少后续处理压力:

job_name: kubelet
scrape_interval: 1m
scheme: https
tls_config:
  ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
  - role: node
    api_server: null
relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - target_label: __address__
    replacement: kubernetes.default.svc:443
  - source_labels: [__meta_kubernetes_node_name]
    action: replace
    target_label: __metrics_path__
    regex: (ip-.*)
    replacement: /api/v1/nodes/$${1}/proxy/metrics
# 新增指标过滤规则
metric_relabel_configs:
  # 保留指定的指标,用|分隔多个指标名
  - action: keep
    regex: ^(otelcol_receiver_accepted_metric_points_total|jvm_memory_used_bytes|jvm_threads_states_threads|container_cpu_usage_seconds_total|kubelet_runtime_operations_duration_seconds_bucket)$
    source_labels: [__name__]

这个配置会直接丢弃所有不在正则匹配范围内的指标,确保只有你需要的_bucket指标进入OTel。


方案二:在OTel Filter Processor中细化过滤

如果你必须在OTel侧处理,需要针对合并后的Histogram指标,过滤只保留其bucket数据点。使用OTel Filter Processor的data_points规则实现:

filter/metrics:
  error_mode: ignore
  metrics:
    include:
      match_type: regexp
      metric_names:
        - otelcol_receiver_accepted_metric_points_total$
        - jvm_memory_used_bytes$
        - jvm_threads_states_threads$
        - container_cpu_usage_seconds_total$
        - kubelet_runtime_operations_duration_seconds$
    # 针对Histogram指标,只保留bucket数据点
    data_points:
      include:
        - metric_names: [kubelet_runtime_operations_duration_seconds]
          # 直方图的bucket数据点带有le标签,通过标签匹配过滤
          attributes:
            - key: le
              match_type: regexp
              value: .+

补充说明:

  1. 确保你的OTel Collector版本足够新(v0.70+),data_points过滤功能在旧版本中可能不支持。
  2. 检查你的OTel Pipeline配置,确认filter/metrics处理器已正确添加到metrics pipeline中:
    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: [filter/metrics]
          exporters: [prometheus, otlp]
    

内容的提问来源于stack exchange,提问作者Prateek patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:07:34