第6章Zabbix分佈式監控

Zabbix是一個分佈式的監控系統。分佈式監控適合跨機房、跨地域的網絡監控。從多個Proxy收集數據,而每個Proxy可以採集多個設備的數據,從而輕鬆地構建分佈式監控系統。

ZabbixProxy可以用在以下環境中。

1.監控遠程區域。

2.監控擁有不可靠網絡連接的區域。

3.當監控以千計的設備時分擔Zabbix-Server服務器的壓力。

4.簡化分佈式監控的維護。

Proxy架構的使用環境可以用6-1來表示。

image.png

6-1

1.ProxyServer之間只需要一個TCP端口連接。因此,從安全方面考慮,需要一條防火牆規則來確保數據傳輸的安全。

2.Proxy採集到的數據在傳送給服務器之前都報錯在本地。這樣保證ProxyServer斷開數據不丟失。ProxyLocalBufferProxyOfflineBuffer控制數據在本地保存的時間。

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:單擊AdministratorPrxies 如圖6-2所示

image.png

6-2

1.4監控Proxy架構主機

1.監控一臺Agent主機,Agent端調整爲主動模式,以及監聽的ServerProxyIP

[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

image.png

6-3

3.添加主動模式)模板,如圖6-4所示

image.png

6-4

4.查看使用Proxy監控,如圖6-5、圖6-6

image.png

6-5

image.png

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-ServerZabbix-Agent之間的通信是Zabbix的專用協議,數據格式爲JSON。主動模式由於是Agent將採集到的數據主動發送給Server,而不要需要Server每次連接Agent等待採集,所以採用主動模式會使Zabbix-Server具有最好的性能,在實際生產環境中,一定要將工作模式設置爲主動模式,並儘可能地採用更多的Proxy,以降低Server的負擔。

1.5.1Porxy被動模式

默認情況下,Zabbix-Agent工作在被動模式下,工作的模式是由KeyZabbix_agent.conf參數配置決定的。

image.png

6-7

zabbix-agent.conf文件中設置被動模式,即將Server參數設置爲允許連接的Server,修改配置文件需要重啓Zabbix-agent

Server  127.0.0.1,192.168.90.11

被動模式的流程

1.Server打開一個TCP連接。

2.Server發送一個KeyAgent.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批量修改爲主動模式。

image.png

6-8

image.png

6-9

AgentServer請求檢測列表

1.AgentServer建立一個TCP的連接。

2.Agent請求需要檢測的數據列表。

3.Server響應Agent,發送一個Items列表。

4.Agent響應請求。

5.TCP連接完成本次會話後關閉。

6.Agent開始週期性地收集數據。

Agent發送數據給Server

1.AgentServer建立一個TCP連接。

2.Agent發送在採集週期內,需要採集數據給server

3.Server處理Agent發送的數據。

4.TCP連接關閉。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章