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测试:
或者将容器内的telegraf用户加入docker组(需宿主机docker组gid与容器内匹配)。# 在docker-compose.yml的telegraf服务中添加 user: root - 单独设置插件采集间隔:在
[[inputs.docker]]段手动添加interval = "10m",强制覆盖全局配置,避免插件意外继承了其他间隔设置。 - 监控进程状态:通过
docker logs telegraf查看进程是否持续运行,有无意外退出;用docker stats telegraf监控资源占用,排除OOM killer导致进程重启的情况。 - 测试Docker API连通性:进入容器安装curl后,直接调用Docker API验证socket连通性:
若无法返回容器列表,说明socket挂载或权限存在问题。docker exec -it telegraf bash apt update && apt install -y curl curl --unix-socket /var/run/docker.sock http://localhost/containers/json
内容的提问来源于stack exchange,提问作者draekster
相关产品推荐
相关产品推荐

