昨天监控公司的托管主机时发现监控不上,回想起来其实就是个小问题,分分钟能解决的事,排错的过程才是真正耗心费神的。
监控环境:
A zabbix server: 192.168.17.110 server端设在公司内部 B zabbix agent: 10.200.66.90 (被动模式)这台服务器为托管机 A(192.168.17.110)通过vpn与托管机B(10.200.66.90)通信,由于防火墙策略,A能 ping 通B,B不能 ping 通A,即发起tcp连接的机器必须为A(A--->B),从B方发起的连接(B--->A)是被拒绝的。 |
zabbix agent端配置文件:
egrep - v "^#|^$" /usr/local/zabbix/conf/zabbix_agentd .conf LogFile= /tmp/zabbix_agentd .log DebugLevel=3 Server=192.168.17.120 ListenPort=10050 #ServerActive=192.168.17.120 Hostname=10.200.66.92 |
在zabbix server端运行zabbix_get获取数据报错:
Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer
zabbix_get [30318]: Check access restrictions in Zabbix agent configuration
是由于AB只能单向发起连接请求导致的吗?
在过去的几小时笔者也在纠结是否是这个原因,是不是agent端因为不能主动发起连接所以server获取不到数据呢?
ssh端口转发能解决吗?
既然A到B能通,B到A不通,那可以将B端的10050端口转发到A主机吗?
ssh端口转发的三种模式:本地端口转发,远程端口转发,动态端口转发
A到B能通,B到A不通,照理说应该在A机器上进行ssh远程端口转发,打通B端10050口到A端的通道,但被动模式下A并不是用确定的端口与B的10050通信,所以ssh端口转发并不能解决笔者的问题
问题所在
前面一系列猜想都是因为未对zabbix被动模式有深入理解而导致的,被动模式并不要求AB能互相发起连接,只要A(server)能向B(agentd)发起连接足矣。A通过B的10050端口向B发起TCP连接,三次握手完成后即可进行数据传输。因此问题不应该在此。应该还是配置出问题了!!
查看agent端日志
tail /tmp/zasbbix_agentd .log <br>......<br>...... 104276:20170829:095704.310 failed to accept an incoming connection: connection from "10.200.58.10" rejected, allowed hosts: "192.168.17.110" |
日志说明了一切,都是vpn惹的祸,server(192.168.17.110)通过vpn后进行了地址转换,最终与agent通信的已经不是在内网中的真实IP了,而是变成了10.200.58.10。
解决该问题只需更改server名或server IP即可:将agent配置文件中Server=192.168.17.120改为Server=10.200.58.10
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2016-07-20 修改SVN中文件的可执行属性
2016-07-20 widow下svn上传项目时的文件可执行权限问题
2016-07-20 svn 设置文件可执行权限
2015-07-20 如何在svn系统中使用git
2012-07-20 MessageBox、::MessageBox 、AfxMessageBox三者的区别 .
2012-07-20 各种语言性能测试工具一览表
2012-07-20 使用 Visual Studio 分析器找出应用程序瓶颈