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

RHEL节点K8s集群中otelcol-contrib Docker统计采集报错求助

问题分析与解决:OpenTelemetry Collector Agent采集Docker指标时出现"context canceled"报错

原因分析

  • 请求超时触发上下文取消:当OpenTelemetry Collector的docker receiver请求Docker stats API获取rancher/hyperkube(kubelet容器)的指标时,可能因为该容器资源占用高、Docker daemon响应慢,或者Collector的超时配置过短,导致请求上下文被主动取消。
  • 核心容器的特殊状态:rancher/hyperkube作为集群kubelet的运行载体,属于核心系统组件,可能存在内部资源锁定或优先级调度的情况,中断了stats采集请求。
  • Receiver版本潜在bug:你使用的docker receiver版本是v0.86.0,这个版本可能存在上下文处理的已知问题,在特定场景下会触发这类报错。

解决/消除报错的方法

1. 调整Docker Receiver的超时配置

在opentelemetry-collector的配置文件里,给docker_stats receiver增加超时和采集间隔参数,延长请求等待时间,避免因响应慢被取消:

receivers:
  docker_stats:
    endpoint: "unix:///var/run/docker.sock"
    collection_interval: 30s  # 延长采集间隔
    timeout: 10s              # 延长请求超时时间

2. 排除无需采集的核心容器

如果不需要采集kubelet容器的指标,可以直接在配置中过滤掉rancher/hyperkube容器:

receivers:
  docker_stats:
    endpoint: "unix:///var/run/docker.sock"
    exclude_containers:
      - "rancher/hyperkube:*"  # 匹配所有tag的该容器

3. 升级OpenTelemetry Collector版本

检查OpenTelemetry Collector的最新版本,升级到v0.90及以上版本,后续版本大概率修复了docker receiver上下文处理的相关bug,减少这类报错的出现。

4. 排查Docker Daemon状态

在RHEL宿主机上查看Docker daemon的运行日志,确认是否存在响应缓慢或异常:

journalctl -u docker.service -f

如果发现daemon有资源瓶颈(比如CPU、内存占用过高),可以调整Docker的资源配置或宿主机资源。

5. 优化核心容器资源配置

检查rancher/hyperkube容器的资源限制,适当调高CPU和内存配额,确保容器有足够资源响应Docker stats请求:

# 查看当前容器资源限制
docker inspect 63e1c35364fe | grep -A 10 "Resources"
# 通过Rancher或Kubernetes调整该容器的资源请求和限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:23:15