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

Telegraf inputs.docker插件未按配置间隔执行问题求助

Telegraf inputs.docker插件定时执行失效问题

问题详情

Telegraf的inputs.docker插件无法按全局设定的10分钟间隔采集数据,但inputs.file、inputs.socket_listener等其他插件工作正常。仅在使用telegraf --once命令单次启动Telegraf时,docker插件能正常将数据写入InfluxDB。

Telegraf配置片段

[agent]
  interval = "10m"
  ...
[[outputs.influxdb_v2]]
  # WORKS
  ...
[[inputs.file]]
  # WORKS
  ...
[[inputs.socket_listener]]
  # WORKS
  ...
[[inputs.docker]]
  # Works only with --once
  endpoint = "unix:///var/run/docker.sock"
  gather_services = false
  container_names = []
  source_tag = false
  container_name_include = []
  container_name_exclude = []
  container_state_include = ["created", "restarting", "running", "removing", "paused", "exited", "dead"]
  container_state_exclude = []
  timeout = "5s"
  perdevice = true
  total = false
  docker_label_include = []
  docker_label_exclude = []

docker-compose.yml片段

telegraf:
  image: telegraf
  restart: "no"
  ports:
    - 12003:12003
    - 2003:2003
  depends_on:
    - influxdb2
  volumes:
    - /mnt/dockervolumes/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
    - /mnt/dockervolumes/telegraf/data:/home/data:ro
    - /var/run/docker.sock:/var/run/docker.sock:ro

排查步骤

  • 检查Agent的Flush配置:确认[agent]段的flush_interval是否与interval保持一致,避免因flush间隔过小导致数据延迟;同时检查flush_jitter是否设置过大,造成采集周期波动超出预期。
  • 查看Debug日志:启动Telegraf时添加--debug参数,持续观察日志输出,定位docker插件在常规运行模式下是否存在连接超时、权限报错或容器查询异常:
    docker exec -it telegraf telegraf --debug --config /etc/telegraf/telegraf.conf
    
  • 验证Docker Socket权限:进入Telegraf容器,检查/var/run/docker.sock的权限,确认telegraf用户拥有读取权限。可临时将容器运行用户改为root测试:
    # 在docker-compose.yml的telegraf服务中添加
    user: root
    
    或者将容器内的telegraf用户加入docker组(需宿主机docker组gid与容器内匹配)。
  • 单独设置插件采集间隔:在[[inputs.docker]]段手动添加interval = "10m",强制覆盖全局配置,避免插件意外继承了其他间隔设置。
  • 监控进程状态:通过docker logs telegraf查看进程是否持续运行,有无意外退出;用docker stats telegraf监控资源占用,排除OOM killer导致进程重启的情况。
  • 测试Docker API连通性:进入容器安装curl后,直接调用Docker API验证socket连通性:
    docker exec -it telegraf bash
    apt update && apt install -y curl
    curl --unix-socket /var/run/docker.sock http://localhost/containers/json
    
    若无法返回容器列表,说明socket挂载或权限存在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:13:17