其中一个由Zabbix监控的服务器无法访问。 我不知道为什么这与其他服务器正常工作。
/etc/zabbix/zabbix_agentd.conf
我看到这个有问题的服务器和另一个正常工作之间没有区别。 http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
: http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
zabbix-agent服务重启后的代理日志
10939:20151127:093938.268 Starting Zabbix Agent [agent-server.test]. Zabbix 2.2.11 (revision 56693). 10939:20151127:093938.268 using configuration file: /etc/zabbix/zabbix_agentd.conf 10942:20151127:093938.269 agent #1 started [listener #1] 10945:20151127:093938.269 agent #4 started [active checks #1] 10941:20151127:093938.270 agent #0 started [collector] 10944:20151127:093938.270 agent #3 started [listener #3] 10943:20151127:093938.271 agent #2 started [listener #2] 10945:20151127:141742.930 active check configuration update from [zabbix-server-ip:10051] started to fail (cannot connect to [[zabbix-server-ip]:10051]: [4] Interrupted system call)
当我telnet到代理服务器,然后inputagent.version
,它返回: ZBXD2.2.11
/etc/zabbix/zabbix_server.conf
(服务器)的内容:
ListenPort=10051 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBName=zabbix DBUser=zabbix DBPassword=****** DBSocket=/var/lib/mysql/mysql.sock SNMPTrapperFile=/var/log/snmptt/snmptt.log AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts
/etc/zabbix/zabbix_agentd.conf
(代理)的内容
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 EnableRemoteCommands=1 Server=zabbix-server-ip ListenPort=10050 StartAgents=3 # ServerActive=zabbix-server-ip # commented out Hostname=server.test Timeout=3 AllowRoot=1 Include=/etc/zabbix/zabbix_agentd.d/
在zabbix服务器上的Netstat
$ sudo netstat -lpn | grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 7624/zabbix_server tcp 0 0 :::10051 :::* LISTEN 7624/zabbix_server
有问题的代理的Netstat
$ sudo netstat -lpn | grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3248/zabbix_agentd tcp 0 0 :::10050 :::* LISTEN 3248/zabbix_agentd
Netstat在工作代理上
$ sudo netstat -lpn | grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 24242/zabbix_agentd tcp 0 0 :::10050 :::* LISTEN 24242/zabbix_agentd
主动与被动代理
ActiveServer
选项。 重新启动代理程序后,日志中的错误消息已消失。 接下来尝试:
ActiveServer
设置为zabbix-server-ip,代理重新启动 StartAgents
设置为0,强制使用活动代理。 总而言之,主动模式可能已经在多个服务器上的代理configuration中设置,它从来没有工作过。 所有报告都来自被动的代理人。
代理接口
我不知道为什么会发生这种情况,但似乎很奇怪。
什么会导致这种连接问题? 我如何重新连接服务器与代理?
事实certificate,主机configuration中设置的IP地址(通过Web界面)是zabbix-server本身的IP地址。 这当然应该是代理服务器的地址。
如何在代理盒子上设置SELinux和iptables? 你可以从代理telnet到服务器端口10051?
您可以尝试使用代理程序上的tcpdump -i your_interface tcp port 10050
检查盒子之间的连接性: tcpdump -i your_interface tcp port 10050
。 使用这个你可以看到传入/传出的数据包。
我想,你需要了解zabbix的主动和被动连接模式来解决问题。 这里从zabbix文档 :
被动和主动检查
Zabbix代理可以执行被动和主动检查。
在被动检查中,代理响应数据请求。 Zabbix服务器(或代理)请求数据,例如,CPU负载,Zabbix代理程序发回结果。
主动检查需要更复杂的处理。 代理程序必须首先从Zabbix服务器上检索一个项目列表以进行独立处理。 然后它会定期向服务器发送新的值。
现在工作的主动模式,你需要在Zabbix服务器上打开端口10051,以便客户端的代理可以连接到它。 从错误你得到,这是问题:
[zabbix-server-ip:10051]中的主动检查configuration更新启动失败(无法连接到[[zabbix-server-ip]:10051]:[4]中断的系统调用)[1096:20151127:141742.930]
你所做的testing是关于从Zabbix服务器到客户端的连接,看起来没有任何问题。 但是这对于主动模式不起作用。 从客户端代理到端口10051上的服务器的连接在您的情况下不起作用,您需要专注于此。
您提供的信息是误导性的:
zabbix-server具有不同的安全组,并且没有为端口10050和10051设置规则,所以它们应该被阻止。 Iptables不返回任何规则。
以上关于端口不能为真,因为你正在使用主动模式。 服务器必须打开端口10051供客户端连接,或者必须使用被动模式。
因此,请检查其间的防火墙规则,确保客户端/代理可以访问此端口上的服务器。 我确信其他代理(在其他工作服务器上)可以通过端口10051访问Zabbix服务器。
事实certificate,主机configuration中设置的IP地址(通过Web界面)是zabbix-server本身的IP地址。 这当然应该是代理服务器的地址。