Zabbix是一個分佈式的監控系統。分佈式監控適合跨機房、跨地域的網絡監控。從多個Proxy收集數據,而每個Proxy可以採集多個設備的數據,從而輕鬆地構建分佈式監控系統。
ZabbixProxy可以用在以下環境中。
1.監控遠程區域。
2.監控擁有不可靠網絡連接的區域。
3.當監控以千計的設備時分擔Zabbix-Server服務器的壓力。
4.簡化分佈式監控的維護。
Proxy架構的使用環境可以用6-1來表示。
圖6-1
1.Proxy和Server之間只需要一個TCP端口連接。因此,從安全方面考慮,需要一條防火牆規則來確保數據傳輸的安全。
2.Proxy採集到的數據在傳送給服務器之前都報錯在本地。這樣保證Proxy和Server斷開數據不丟失。ProxyLocalBuffer和ProxyOfflineBuffer控制數據在本地保存的時間。
1.1準備部署Proxy環境
下面要開始實踐了,首先說明下實踐環境:
主機名 | IP地址 | 描述 | 系統版本 |
linux-node1.com | 192.168.90.11 | Zabbix-Server | CentOS7 |
linux-node2.com | 192.168.90.12 | Zabbix-Proxy | CentOS7 |
linux-node4.com | 192.168.90.14 | Zabbix-Agent | CentOS6 |
1.2安裝Zabbix-proxy
源碼安裝Zabbix的時候加上--enable-proxy參數。
1.採用yum安裝,yum安裝方式如下:
[root@linux-node2 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
[root@linux-node2 ~]# yum install zabbix-proxy zabbix-proxy-mysql mariadb -y
1. 導入Zabbix-Proxy的數據庫
[root@linux-node2 ~]# systemctl start mariadb
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbi_proxy@localhost identified by 'zabbix_proxy';
MariaDB [(none)]> flush privileges;
[root@linux-node2 ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.3/
[root@linux-node2 zabbix-proxy-mysql-3.0.3]# zcat schema.sql.gz |mysql -uroot zabbix_proxy
3.配置Zabbix-Proxy.conf
zabbix-proxy配置文件詳解:https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_proxy
[root@linux-node2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=192.168.90.11
Hostname=Zabbix proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
4.啓動Zabbix-Proxy服務
[root@linux-node2 ~]# systemctl start zabbix-proxy
[root@linux-node2 ~]# systemctl enable zabbix-proxy
1.3Web界面配置Proxy
在Zabbix Server GUI中配置zabbix-proxy:單擊Administrator→Prxies 如圖6-2所示
圖6-2
1.4監控Proxy架構主機
1.監控一臺Agent主機,Agent端調整爲主動模式,以及監聽的Server爲Proxy的IP
[root@linux-node4 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1
ServerActive=192.168.90.12
Hostname=linux-node4.com
Include=/etc/zabbix/zabbix_agentd.d/
2.添加主機的方式和正常模式一樣。唯一的不同是Monitored by Proxy選項選擇的是Proxy名稱。如圖6-3
圖6-3
3.添加主動模式)模板,如圖6-4所示
圖6-4
4.查看使用Proxy監控,如圖6-5、圖6-6
圖6-5
圖6-6
如果zabbix_proxy出現錯誤:started to fail (ZBX_TCP_READ() failed: [4] Interrupted system call)
解決辦法:註釋server以及Proxy主機上hosts中取消Zabbix Agent,重啓server以及Proxy
1.5Proxy主被模式
zabbix-agent的工作方式有Active(主動模式)和Passive(被動模式)。Zabbix-Server和Zabbix-Agent之間的通信是Zabbix的專用協議,數據格式爲JSON。主動模式由於是Agent將採集到的數據主動發送給Server,而不要需要Server每次連接Agent等待採集,所以採用主動模式會使Zabbix-Server具有最好的性能,在實際生產環境中,一定要將工作模式設置爲主動模式,並儘可能地採用更多的Proxy,以降低Server的負擔。
1.5.1Porxy被動模式
默認情況下,Zabbix-Agent工作在被動模式下,工作的模式是由Key和Zabbix_agent.conf參數配置決定的。
圖6-7
在zabbix-agent.conf文件中設置被動模式,即將Server參數設置爲允許連接的Server,修改配置文件需要重啓Zabbix-agent
Server = 127.0.0.1,192.168.90.11
被動模式的流程
1.Server打開一個TCP連接。
2.Server發送一個Key爲Agent.ping
3.Agent接受到這個請求,然後響應數據
4.Server對接收到的數據進行處理。
5.TCP連接關閉。
1.5.2Proxy主動模式
在zabbix-agent.conf文件中設置主動模式,即將ServerActive參數設置爲允許連接的{Server|Proxy},即可配置主動模式。修改配置文件需要重啓Zabbix-agent
ServerActive = 127.0.0.1,192.168.90.11
在item中,將Items的檢測方式修改爲主動模式(默認爲被動模式),爲了提高性能或者環境需要,將所有的items批量修改爲主動模式。
圖6-8
圖6-9
Agent向Server請求檢測列表
1.Agent向Server建立一個TCP的連接。
2.Agent請求需要檢測的數據列表。
3.Server響應Agent,發送一個Items列表。
4.Agent響應請求。
5.TCP連接完成本次會話後關閉。
6.Agent開始週期性地收集數據。
Agent發送數據給Server
1.Agent向Server建立一個TCP連接。
2.Agent發送在採集週期內,需要採集數據給server
3.Server處理Agent發送的數據。
4.TCP連接關閉。