对接矿机与Zabbix的外部脚本获取数据为零问题求助
报错[107] Transport endpoint is not connected 排查方向
该报错本质是脚本发起的socket连接未成功和目标矿机的API端口建立有效链路,可按以下方向依次排查:
1. 矿机端API与网络连通性排查
- 确认蚂蚁矿机后台已开启API功能,且已将运行脚本的服务器IP加入API访问白名单,蚂蚁矿机默认API监听端口为4028,默认仅允许本机访问
- 在脚本运行服务器上执行端口连通性测试:
telnet 矿机实际IP 4028或nc -zv 矿机实际IP 4028,若端口不通,说明网络链路存在拦截,或矿机API未正常启动 - 手动调用矿机API验证返回:执行
echo '{"command":"stats"}' | nc 矿机实际IP 4028,若该命令无有效数据返回,需优先解决矿机API本身的访问问题,与脚本、Zabbix配置无关
2. 脚本配置校验
- 检查脚本内填写的矿机IP、端口、API鉴权密钥(若矿机开启了API鉴权)是否和实际配置完全一致,无拼写、格式错误
- 直接在命令行以调试模式运行脚本,这类监控脚本通常支持
-v或--debug参数输出详细连接日志,可确认脚本发起连接的目标地址、请求参数是否符合预期,是否存在连接超时、主动拒绝的日志
3. Zabbix侧配置校验
- 若通过Zabbix Agent/代理调用脚本,确认脚本所在的全路径目录,对Zabbix运行用户(默认通常为zabbix)开放可读可执行权限,仅给脚本本身加chmod 755不代表上级目录权限符合要求
- 检查Zabbix Agent/代理配置文件中的
Timeout参数,默认值通常为3秒,矿机API响应延迟较高时会导致连接未建立就被中断,可调整为10-15秒后重启对应服务生效 - 查看Zabbix Server/代理的运行日志,对比命令行直接运行脚本的返回结果,确认是否存在脚本执行超时、权限拒绝类报错
4. 特殊场景排查
- 若脚本运行服务器为多网卡环境,确认路由配置正常,脚本发起的API请求走的是可连通矿机的内网网卡,避免请求被路由到公网被拦截
- 检查服务器与矿机之间的三层交换机、路由器等设备,是否存在ACL规则拦截4028端口的访问,仅关闭服务器自身防火墙不代表中间链路无拦截
- 若批量监控多台矿机,确认脚本并发请求数未超过矿机API的承载上限,蚂蚁矿机API默认支持的同时连接数较低,并发过高会主动断开连接
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

