Monitoring

Zabbix-agent 無法訪問

  • December 1, 2015

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 顯示從代理到伺服器都有效。
  • 我已經啟動了ActiveServerzabbix-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 伺服器。

引用自:https://serverfault.com/questions/739353