Telegraf无法连接同Docker网络下的RabbitMQ报连接被拒绝问题求助
问题根源
你遇到的连接拒绝错误核心原因是Telegraf容器内的localhost指向自身环回地址,而非RabbitMQ服务的访问地址:
- 宿主机能访问127.0.0.1:15672是因为RabbitMQ容器做了宿主机端口映射
- 同Docker网络内的容器互访不需要走宿主机端口映射,也不能用
localhost寻址
解决方案
- 修改Telegraf配置中rabbitmq输入插件的url参数,将
http://localhost:15672替换为http://rabbitmq:15672,Docker自定义网络testnet会自动将服务名rabbitmq解析为对应容器的内网IP,修改后配置如下:
[[inputs.rabbitmq]] ## Management Plugin url. (default: http://localhost:15672) url = "http://rabbitmq:15672" ## Credentials username = "test" password = "test"
- 将修改后的配置文件复制到Telegraf容器的
/etc/telegraf/telegraf.conf路径,重启容器生效:docker restart telegraf
连通性验证
如果修改后仍报错,可进入Telegraf容器内部执行命令验证网络连通性:docker exec -it telegraf curl -u test:test http://rabbitmq:15672/api/queues/
正常返回数据即证明网络无问题,可进一步排查配置是否加载正确。
内容的提问来源于stack exchange,提问作者rising02
相关产品推荐
相关产品推荐

