Zabbix-agent 無法訪問
Zabbix 監控的其中一台伺服器無法訪問。我不知道為什麼這可以與其他伺服器正常工作。
- 被監控伺服器上的 zabbix-agent 服務正在執行。
- 我們有幾台伺服器,都由 zabbix 監控。在
/etc/zabbix/zabbix_agentd.conf
我看來,這個有問題的伺服器和另一個正常工作的伺服器之間沒有區別。- zabbix server 和被監控的伺服器(agent-server)都由 Amazon 託管。
- 所有 zabbix 監控的伺服器都連結到一個安全組,其中 zabbix-server IP 的埠 10050 和 10051 有兩個入站規則。因此,應該允許從 zabbix-server 到這些伺服器上的 zabbix-agents 的傳入請求。他們在多台伺服器上工作,但不在這台伺服器上。
- zabbix-server 有不同的安全組,10050 和 10051 埠沒有設置規則,所以應該被屏蔽。iptables 不返回任何規則。
- 我可以打開從 zabbix-server 到代理的 telnet 會話。它會自動斷開連接,但它會連接。所以我猜防火牆不是問題。
- 伺服器:Amazon Linux(類似 Centos)
- 安裝文件:
http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
- SELinux 在所有這些代理和伺服器上都被禁用。
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 到代理伺服器,然後輸入
agent.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
主動與被動代理
- 我已經在伺服器上為有問題的代理 IP 打開了埠 10051。
- Telnet 顯示從代理到伺服器都有效。
- 我已經啟動了
ActiveServer
zabbix-server-ip 作為值的選項。重新啟動代理後,錯誤消息在日誌中消失了。- 問題還在。。。
下次嘗試:
- 我為工作代理做了同樣的事情,可以從代理遠端登錄到伺服器。
ActiveServer
用zabbix-server-ip設置,代理重啟StartAgents
設置為 0,以強制使用活動代理。- Zabbix 報告此伺服器無法訪問…
- 然後我重置為被動。
總而言之,活動模式可能已在多個伺服器的代理配置中設置,它從未起作用。所有報告均來自被動代理。
代理介面
- 通過監控 > 最新數據打開,選擇主機=全部,我點擊伺服器名稱,然後選擇主機清單
- 工作代理顯示其自己的 IP 地址。
- 有問題的代理顯示 zabbix-server-ip。
我不知道為什麼會發生這種情況,但這似乎很奇怪。
什麼可能導致此連接問題?如何重新連接伺服器與代理?
解決方案
事實證明,主機配置中設置的 IP 地址(通過 Web 界面)是 zabbix-server 本身的 IP 地址。這當然應該是代理伺服器的地址。
代理盒上 SELinux 和 iptables 的目前設置如何?您可以通過埠 10051 從代理 telnet 到伺服器嗎?
您可以嘗試使用 tcpdump on agent: 來檢查盒子之間的連接性
tcpdump -i your_interface tcp port 10050
。使用它,您可以看到傳入/傳出的數據包。
我認為,您需要了解zabbix的主動和被動連接模式才能解決問題。這裡來自zabbix 文件:
被動和主動檢查
Zabbix 代理可以執行被動和主動檢查。
在被動檢查中,代理響應數據請求。Zabbix 伺服器(或代理)請求數據,例如 CPU 負載,Zabbix 代理髮回結果。
主動檢查需要更複雜的處理。代理必須首先從 Zabbix 伺服器檢索項目列表以進行獨立處理。然後它會定期向伺服器發送新值。
現在主動模式工作,你需要在 Zabbix 伺服器上打開 10051 埠,以便客戶端的代理可以連接到它。從你得到的錯誤來看,這就是問題所在:
10945:20151127:141742.930 主動檢查配置更新來自
$$ zabbix-server-ip:10051 $$開始失敗(無法連接到 $$ [zabbix-server-ip $$:10051]:$$ 4 $$中斷的系統呼叫)
您所做的測試是關於從 Zabbix 伺服器到客戶端的連接,它似乎可以正常工作。但這還不足以讓活動模式發揮作用。從客戶端代理到埠 10051 上的伺服器的連接在您的情況下不起作用,您需要關注這一點。
您提供的資訊具有誤導性:
zabbix-server 有不同的安全組,10050 和 10051 埠沒有設置規則,所以應該被屏蔽。iptables 不返回任何規則。
上面關於埠的說法不正確,因為您使用的是活動模式。伺服器必須打開埠 10051 以供客戶端連接,否則您必須使用被動模式。
因此,請檢查中間的必要防火牆規則,並確保客戶端/代理可以訪問此埠上的伺服器。我確信其他代理(在其他工作伺服器上)可以訪問埠 10051 上的 Zabbix 伺服器。