Zabbix4.0分佈式監控 ------ 第12章

1. Zabbix分佈式監控系統概述

Zabbix有三種監控架構,分別是Server-Agent、Server-Node-Agent和Server-Proxy-Agent。在大型環境中Zabbix有兩種解決方案,使用節點(Node)和使用代理(Proxy)。使用節點和代理是有區別的:

① Proxy用於 本區域數據收集並將數據發送給Zabbix Server,它不做分析監控以及數據展示。Proxy只有一個proxy的daemon進程,Proxy也有自己的數據庫(不完整的),但是它的數據庫只會保存一定時間的數據,它與Master通信是將一批信息打包後發送到Master。Master將這些數據merger到Master數據庫。

② Node提供完整的Zabbix Server用於 建立分佈式監控的層級。Node本身是一臺Zabbix Server,它有 完整的Web頁面和完整的數據庫,它會將數據源源不斷地傳給Master

節點是重量級應用,而代理是輕量級的應用。Master-Proxy相比Master-Node的優點有:Proxy壓力小,數據庫只存儲一定時間的數據;Master壓力變小,數據不是源源不斷獲取,減小IO壓力(Node是收集數據就發數據,Proxy是保存一定時間然後一次性發送);架構更清晰,容易維護(在Master的Zabbix Server集中統一配置)。

2. Server-Node-Agent架構特性

在這裏插入圖片描述
Server-Node-Agent架構是用來 解決主機過多時單臺Server面臨性能瓶頸 的問題。方案有使用多個實例,沒有實例是獨立的一套Zabbix,有數據庫和前臺(可選)。該架構支持熱插拔,Node和Server的連接可以隨時斷開,但不會影響Node的正常運行。Node定時向Server發送Configuration,History,Event等。Server定時給Node發送Configuration。所有的配置變更只能在Node節點操作,不能在Server操作。支持樹狀結構,Node又可以是個Server。

3. Server-Proxy-Agent架構特性

在這裏插入圖片描述
在這裏插入圖片描述
Proxy不會向Server同步Configuration,只會接收。Proxy的數據庫會 定時將數據傳送給Server,本地數據庫只保存最近沒有發送的數據。 其實,Proxy僅僅是 數據收集器,它不具有觸發器、生成事件或發送警報等功能。Zabbix Server的功能有:監控遠程區域;監控不可靠通信的位置;減輕Zabbix Server的壓力;簡化分佈式監控的維護;與Zabbix Server是單TCP連接的,這種方式很容易繞過防火牆,只需要配置一條防火牆規則。

注意:Zabbix Proxy必須使用一個單獨的數據庫,不可以於Server使用同一個數據庫。也不建議放到同一個物理服務器上

Zabbix的特性:

特性項 是否支持
Zabbix agent checks Yes
Zabbix agent checks(active) Yes
Simple checks Yes
Trapper items Yes
SNMP checks Yes
SNMP traps Yes
IPMI checks Yes
JMX checks Yes
Log file monitoring Yes
Internal checks No
SSH checks Yes
Telnet checks Yes
External checks Yes
Buit-in web monitering Yes
Network discovery Yes
Low-level discovery Yes
Calculating triggers No
Processing events No
Sending alerts No
Remote commands No
4. 分佈式監控的實現

準備3臺服務器,一臺做=作Zabbix Server,另外一臺作Zabbix Proxy,剩下一臺作Zabbix Proxy的Agent。這三臺服務器分別對應10.0.0.2、10.0.0.5和10.0.0.6。Zabbix Server和Zabbix Agent已經在前面介紹過,這裏不贅述。爲了測試方便,這裏把MySQL和Zabbix Proxy放在統一臺服務器上,首先安裝與配置數據庫:

# 安裝MySQL數據庫
[root@zabbix-proxy ~]# yum install mariadb-server
# 初始化數據庫
[root@zabbix-proxy ~]# mysql_secure_installation 
# 設置開機自啓
[root@zabbix-proxy ~]# chkconfig mariadb on
# 創建zabbix_proxy數據庫
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
# 創建新用戶並且授予權限
MariaDB [(none)]> grant all on zabbix_proxy.* to zbxuser@'%' identified by '123456';
# 刷新權限
MariaDB [(none)]> flush privileges;

安裝完成之後開始安裝Zabbix Proxy:

# 下載包含數據庫插件的Zabbix Proxy包
[root@zabbix-proxy ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-proxy-mysql-4.0.21-2.el7.x86_64.rpm
# 下載epel源
[root@zabbix-proxy ~]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
# 安裝epel源(也可以使用rpm)
[root@zabbix-proxy ~]# yum install epel-release-7-12.noarch.rpm
# 安裝Zabbix Proxy。使用yum安裝會自動解決依賴問題,自動安裝依賴的fping等
[root@zabbix-proxy ~]# yum localinstall -y zabbix-proxy-mysql-4.0.21-2.el7.x86_64.rpm
# 設置Zabbix Proxy開機自啓
[root@zabbix-proxy ~]# chkconfig zabbix-proxy on
# 查看Zabbix Proxy是否啓動,以及佔用的端口
[root@zabbix-proxy ~]# netstat -tunlp|grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1543/zabbix_proxy   
tcp6       0      0 :::10051                :::*                    LISTEN      1543/zabbix_proxy

配置Zabbix Proxy連接Zabbix Server和MySQL:

# 查詢Zabbix Proxy初始數據
[root@zabbix-proxy ~]# rpm -ql zabbix-proxy-mysql
...
/usr/share/doc/zabbix-proxy-mysql-4.0.21/schema.sql.gz
...
# 解壓sql文件
[root@zabbix-proxy zabbix-proxy-mysql-4.0.21]# gunzip schema.sql.gz 
# 把sql文件導入到數據庫
[root@zabbix-proxy zabbix-proxy-mysql-4.0.21]# mysql -uzbxuser -p zabbix_proxy<schema.sql
# 編輯Zabbix Proxy配置文件
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf 
# 查看需要已經修改過的記錄
[root@zabbix-proxy ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_proxy.conf 
Server=10.0.0.2			# Zabbix Server的地址
Hostname=Zabbix proxy	# 主機名,Web頁面上添加代理的時候代理程序名要和這裏一致
...
DBHost=localhost		# 數據庫的地址(我這裏在本地)
DBName=zabbix_proxy		# 數據庫名
DBUser=zbxuser			# 數據庫用戶名
DBPassword=123456		# 數據庫的密碼
...
# 修改完成後重啓Proxy
[root@zabbix-proxy ~]# systemctl restart zabbix-proxy
# 如果出問題了可以檢查日誌
[root@zabbix-proxy ~]# tailf /var/log/zabbix/zabbix_proxy.log 

在這裏插入圖片描述
配置Zabbix Proxy的Agent:

# 編輯配置文件
[root@proxy-agent ~]# vim /etc/zabbix/zabbix_agentd.conf 
# 查看需要已經修改過的記錄
[root@proxy-agent ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_agentd.conf 
...
Server=10.0.0.5
ServerActive=10.0.0.5	# 這裏不建議配置,否則日誌會報:failed to accept an incoming connection: connection from "10.0.0.2" rejected, allowed hosts: "10.0.0.5",實際上是沒有問題的
Hostname=Zabbix agent	# 主機名。Web界面添加監控主機時,主機名稱一定與這裏完全一致
...
# 如果出問題了可以檢查日誌
[root@proxy-agent ~]# tailf /var/log/zabbix/zabbix_agentd.log

在這裏插入圖片描述

5. 分佈式監控性能調優

提高Zabbix Server和Zabbix Proxy同步數據的效率,可以減小Proxy向Server請求同步配置文件的時間,配置參數是ConfigFrequency,默認3600s同步一次配置。Zabbix Proxy向主服務器打包發一次數據的時間間隔減小,配置參數是DataSenderFrequency,當然系統默認就是1s:

[root@zabbix-proxy zabbix]# grep -Ev '^$|#' zabbix_proxy.conf 
...
ConfigFrequency=3600
DataSenderFrequency=1
...

ProxyLocalBuffer是本地數據保存多久,Proxy收集來自各個Agent的數據要先保存在本地,然後打包發給主服務器,打包發給服務器後還要再保存多久,如果設置了0就表示不保存。如果 Proxy聯繫不到主服務器,也就是Zabbix Server,那麼 數據在本地保存的時間 由ProxyOfflineBuffer來配置,默認是1,表示1h:

[root@zabbix-proxy zabbix]# grep -Ev '^$|#' zabbix_proxy.conf 
...
ProxyLocalBuffer=0
ProxyOfflineBuffer=1
...

Github:https://github.com/ThanlonSmith/Zabbix-Tutorial

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