一 分佈式Zabbix介紹
zabbix proxy 能夠代替 zabbix server 收集性能和可用性數據,而後把數據彙報給 zabbix server,而且在必定程度上分擔了zabbix server 的壓力。
此外,當全部agents和proxy報告給一個Zabbix server而且全部數據都集中收集時,使用proxy是實現集中式和分佈式監控的最簡單方法。
zabbix proxy 使用場景:
- 監控遠程區域設備
- 監控本地網絡不穩定區域
- 當 zabbix 監控上千設備時,使用它來減輕 server 的壓力
- 簡化分佈式監控的維護
二 分佈式Zabbix架構
2.1 架構示意圖
2.2 環境準備
節點主機名
|
IP地址
|
備註
|
zabbixserver
|
172.24.8.71/24
|
Zabbix服務器
|
zabbixpoxy01
|
172.24.8.72/24
|
Zabbix poxy代理服務器1
|
zabbixpoxy02
|
172.24.8.73/24
|
Zabbix poxy代理服務器2
|
node01
|
172.24.8.74/24
|
模擬poxy1所監控的服務器node01
|
node02
|
172.24.8.75/24
|
模擬poxy2所監控的服務器node02
|
1 # systemctl stop firewalld
2 # systemctl disable firewalld
3 # setenforce 0
4 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
5 # vi /etc/hosts #添加在server和proxy節點添加如下主機名配置
6 172.24.8.71 zabbixserver
7 172.24.8.72 zabbixpoxy01
8 172.24.8.73 zabbixpoxy02
提示:可關閉防火牆和SELinux,若沒有關閉可參考《004.Zabbix3.2-Server服務端安裝》進行相應放通。
2.3 工做模式
Passive(被動模式),zabbix-server和zabbix-agent之間的通訊是zabbix的專用協議,數據格式爲JSON。默認狀況下,zabbix-agent工做在被動模式下,工做的模式是由Key和zabbix_agentd.conf參數配置決定的。
- Server打開一個TCP鏈接。
- Server發送一個key爲agent.ping\n。
- Agent接收到這個請求,而後響應數據<HEADER><DATALEN>1.
- Server對接收到的數據進行處理。
- TCP鏈接關閉。
Active(主動模式),主動模式因爲是Agent將採集到的數據主動發送給Server,而不須要Server每次鏈接Agent等待採集,因此採用主動模式會使Zabbix-Server具備最好的性能。在大型環境下,必定要將工做模式設置爲主動模式,並儘量採用更多的proxy以下降Server的負擔,通常多機房,每一個機房確定都要設置proxy的。
- Agent向Server創建一個TCP的鏈接。
- Agent請求須要檢測的數據列表。
- Server響應Agent,發送一個Items列表(item key、delay)。
- Agent響應請求。
- TCP鏈接完成本次會話後關閉。
- Agent開始週期性的收集數據。
提示:本環境採用主動模式,即Zabbix Agent---->Zabbix Proxy---->Zabbix Server。
不管是主動模式仍是被動模式都是對zabbix客戶端(zabbix_agentd)來講的,許多設備都是經過snmp協議進行監控的,是沒法實行主動監控,由於監控類型不支持。
2.4 模式配置
被動模式設置主要參數
1 Server=172.24.8.71 #被動模式下的Zabbix服務端地址
2 ListenPort=10050
3 ServerActive=172.24.8.71 #主動模式下的Zabbix服務端地址,若純被動模式可註釋此行
主動模式設置主要參數
1 Server=127.0.0.1,172.24.8.71 #被動模式下的Zabbix服務端地址,若純主動模式可註釋此行
2 StartAgents=0
3 ServerActive=172.24.8.71 #主動模式下的Zabbix服務端地址
三 部署Zabbix-Proxy
3.1 安裝Zabbix官方源和epel源
1 [root@proxy01 ~]# yum -y install epel-release.noarch
2 [root@proxy01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
3.2 安裝Zabbix-proxy等組件
1 [root@proxy01 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mariadb mariadb-server zabbix-agent
注意:1 Zabbix官方的yum源爲:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/。
2 服務器端也須要監控,所以也安裝Zabbix-Agent。
3.3 簡單優化MariaDB
1 [root@proxy01 ~]# vi /etc/my.cnf
2 [mysqld]
3 datadir=/var/lib/mysql
4 socket=/var/lib/mysql/mysql.sock
5 symbolic-links=0
6 character-set-server=utf8 #設置字符集爲utf8
7 innodb_file_per_table=1 #設置innodb的每一個表文件單獨存儲
8 [mysqld_safe]
9 log-error=/var/log/mariadb/mariadb.log
10 pid-file=/var/run/mariadb/mariadb.pid
11 ……
12 [root@proxy01 ~]# systemctl enable mariadb #設爲開機啓動
13 [root@proxy01 ~]# systemctl start mariadb #開啓MariaDB數據
3.4 設置數據庫相關項
1 [root@proxy01 ~]# mysql_secure_installation #設置安全性,並設置數據庫root密碼
2 [root@proxy01 ~]# mysql -u root -p
3 MariaDB [(none)]> create database zabbixproxydb character set utf8 collate utf8_bin;
#建立數據庫且字符集爲utf8,使web界面顯示中文不出現亂碼
4 MariaDB [(none)]> grant all privileges on zabbixproxydb.* to proxy@'localhost' identified by 'x120952576';
#建立zabbixproxydb數據庫和proxy用戶,且賦予此用戶擁有此數據庫所有權限。
5 MariaDB [(none)]> flush privileges;
6 MariaDB [(none)]> exit;
注意:1 若以後忘記該密碼可以使用如下命令修改密碼——
UPDATE zabbixproxydb.user SET passwd=md5('proxy') WHERE alias='Admin'
3.5 導入數據庫相關表
1 [root@proxy01 ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.0/ #進入數據庫模板所在目錄
2 [root@proxy01 zabbix-proxy-mysql-4.0.0]# ls
3 AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
4 [root@proxy01 zabbix-proxy-mysql-4.0.0]# zcat schema.sql.gz | mysql -uroot -p zabbixproxydb
#將模板數據恢復至Zabbix數據庫,此處爲須要輸入MariaDB的root用戶密碼。
5 Enter password:
6 [root@proxy01 ~]# mysql -u proxy -p #用proxy用戶登陸
注意:也能夠gunzip create.sql.gz解壓後使用mysql -uroot -p zabbixproxydb< create.sql恢復模板。
1 MariaDB [(none)]> show databases;
2 MariaDB [(none)]> use zabbixproxydb;
3 MariaDB [zabbixproxydb]> show tables; #查看數據表
4 MariaDB [zabbixproxydb]> exit
3.6 配置zabbix_proxy.conf項
1 [root@proxy01 ~]# vi /etc/zabbix/zabbix_proxy.conf
2 ProxyMode=0 # 默認即爲0,表明 Proxy 處於主動模式,即 Proxy 主動去請求 Zabbix Server 獲取監控項;1 表明被動模式
5 Server=127.0.0.1,172.24.8.71 #若爲純主動模式須要註釋此行
6 ServerActive=172.24.8.71 #主動模式,Proxy主動向Server傳送數據
7 ServerPort=10051 # 默認即爲10051,Zabbix Server 監聽端口,同上只在 Proxy 爲主動模式時生效
9
10 Hostname=zabbixpoxy01 # Server端添加proxy的時候須要一致,建議採用主機名
12 LogFile=/var/log/zabbix/zabbix_proxy.log # Proxy 日誌文件位置
13 LogFileSize=0
14 PidFile=/var/run/zabbix/zabbix_proxy.pid
15 DBHost=localhost # 鏈接數據庫的主機
16 DBName=zabbixproxydb # 數據庫名
17 DBUser=proxy # 鏈接用戶
18 DBPassword=x120952576 # 用戶密碼
19 ConfigFrequency=60 # proxy主動從server端檢索配置更新的頻率,單位秒,主動proxy 參數, 被動 proxies忽略此項
21 DataSenderFrequency=60 # Proxy 向 Zabbix Server 發送監控數據間隔,單位爲秒
23 Timeout=4
提示:對於DBHost,強烈建議不要喝Server端相同,避免損毀Server端數據庫;更多參數解釋參考官方文檔:https://www.zabbix.com/documentation/3.4/zh/manual/appendix/config/zabbix_proxy
3.7 Proxy自身agent配置
1 [root@imxhy02 ~]# vi /etc/zabbix/zabbix_agentd.conf
2 PidFile=/var/run/zabbix/zabbix_agentd.pid
3 LogFile=/var/log/zabbix/zabbix_agentd.log
4 LogFileSize=0
5 Server=127.0.0.1,172.24.8.71 #若爲純主動模式須要註釋此行
6 ServerActive=172.24.8.71 #主動模式,proxy自身主Server傳送數據
7 Hostname=zabbixserver #zabbix server web上添加自身須要用到
提示:爲防止proxy異常致使監控故障,Server端須要監控Proxy。
3.8 zabbix啓動級開機啓動
1 [root@proxy01 ~]# systemctl start zabbix-proxy.service
2 [root@proxy01 ~]# systemctl enable zabbix-proxy.service
3 [root@proxy01 ~]# systemctl start zabbix-agent.service
4 [root@proxy01 ~]# systemctl enable zabbix-agent.service
提示:Proxy02參考proxy01配置便可,hostname配置爲Hostname=zabbixpoxy02。
四 部署Zabbix-Server
4.1 安裝Zabbix官方源和epel源
1 [root@server ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
2 [root@server ~]# ls /etc/yum.repos.d/ #查看Zabbix源是否安裝成功
3 epel.repo epel-testing.repo zabbix.repo
4.2 安裝Zabbix Server等組件
1 [root@server ~]# yum -y install zabbix-get zabbix-server-mysql zabbix-web-mysql zabbix-web zabbix-agent mariadb mariadb-server
注意:1 Zabbix官方的yum源爲:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/。
2 服務器端也須要監控,所以也安裝Zabbix-Agent。
4.3 簡單優化MariaDB
1 [root@server ~]# vi /etc/my.cnf
2 [mysqld]
3 datadir=/var/lib/mysql
4 socket=/var/lib/mysql/mysql.sock
5 symbolic-links=0
6 character-set-server=utf8 #設置字符集爲utf8
7 innodb_file_per_table=1 #設置innodb的每一個表文件單獨存儲
8 [mysqld_safe]
9 log-error=/var/log/mariadb/mariadb.log
10 pid-file=/var/run/mariadb/mariadb.pid
11 ……
12 [root@server ~]# systemctl enable mariadb #設爲開機啓動
13 [root@server ~]# systemctl start mariadb #開啓MariaDB數據
4.4 設置數據庫相關項
1 [root@server ~]# mysql_secure_installation #設置安全性,並設置數據庫root密碼
2 [root@server ~]# mysql -u root -p
3 MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
4 #建立數據庫且字符集爲utf8,使web界面顯示中文不出現亂碼
5 MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'x120952576';
6 #建立zabbix數據庫和Zabbix用戶,且賦予此用戶擁有此數據庫所有權限。
7 MariaDB [(none)]> flush privileges;
8 MariaDB [(none)]> exit;
注意:1 若以後忘記該密碼可以使用如下命令修改密碼——
UPDATE zabbix.user SET passwd=md5('zabbix') WHERE alias='Admin'
4.5 導入數據庫相關表
1 [root@server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.0/ #進入數據庫模板所在目錄
2 [root@server zabbix-server-mysql-4.0.0]# ls
3 AUTHORS ChangeLog COPYING create.sql.gz NEWS README
4 [root@server zabbix-server-mysql-4.0.0]# zcat create.sql.gz | mysql -uroot -p zabbix #將模板數據恢復至Zabbix數據庫
注意:也能夠gunzip create.sql.gz解壓後使用mysql -uroot -p zabbix < create.sql恢復模板。
1 [root@server ~]# mysql -u zabbix -px120952576 zabbix -e "show tables" #查看數據表項
4.6 配置Zabbix_server.conf項
1 [root@server ~]# vi /etc/zabbix/zabbix_server.conf
2 LogFile=/var/log/zabbix/zabbix_server.log
3 LogFileSize=0
4 PidFile=/var/run/zabbix/zabbix_server.pid
5 DBHost=localhost #修改主機
6 DBName=zabbix
7 DBUser=zabbix
8 DBPassword=x120952576 #修改DB密碼(以前所建立密碼)
9 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
10 Timeout=4
11 AlertScriptsPath=/usr/lib/zabbix/alertscripts
12 ExternalScripts=/usr/lib/zabbix/externalscripts
13 LogSlowQueries=3000
4.7 Server自身agent配置
1 [root@server ~]# vi /etc/zabbix/zabbix_agentd.conf
2 PidFile=/var/run/zabbix/zabbix_agentd.pid
3 LogFile=/var/log/zabbix/zabbix_agentd.log
4 LogFileSize=0
5 Server=127.0.0.1,172.24.8.71 #若爲純主動模式須要註釋此行
6 ServerActive=172.24.8.71 #主動模式,Server自身主動向本身傳送數據
7 Hostname=zabbixserver #zabbix server web上添加自身須要用到
提示:爲防止Server異常致使監控故障,Server端也須要被監控。
4.8 啓動Zabbix服務
1 [root@server ~]# systemctl enable zabbix-server #設爲開機啓動Zabbix服務
2 [root@server ~]# systemctl start zabbix-server #啓動Zabbix服務
3 [root@server ~]# systemctl start zabbix-agent #須要監控本身,所以也開啓agent
4 [root@server ~]# systemctl enable zabbix-agent #啓動Zabbix服務
4.8 配置php
1 [root@server ~]# vi /etc/php.ini
2 date.timezone= Asia/Shanghai
3 max_execution_time = 300
4 post_max_size = 16M
5 memory_limit = 128M
6 [root@server ~]# vi /etc/httpd/conf.d/zabbix.conf
7 Alias /zabbix /usr/share/zabbix
8 <Directory "/usr/share/zabbix">
9 Options FollowSymLinks
10 AllowOverride None
11 Require all granted
12 <IfModule mod_php5.c>
13 php_value max_execution_time 300
14 php_value memory_limit 128M
15 php_value post_max_size 16M
16 php_value upload_max_filesize 2M
17 php_value max_input_time 300
18 php_value max_input_vars 10000
19 php_value always_populate_raw_post_data -1
20 php_value date.timezone Europe/Riga
21 </IfModule>
22 </Directory>
注意:1 若以後配置web時,提示任何參數不知足安裝配置要求,修改對應的參數後重啓httpd便可;
2 yum安裝可能zabbix.conf中已包含相關配置。
4.9 啓動Apache服務
1 [root@server ~]# systemctl start httpd.service
2 [root@server ~]# systemctl enable httpd.service
注意:此處建議爲了防止沒必要要的問題,可關閉SELinux和防火牆。
4.10 Web界面配置
略,可參考《004.Zabbix3.2-Server服務端安裝》。
4.11 Server端添加Proxy
登陸Zabbix Server的Web後,管理---->agent代理程序---->建立代理
Proxy name : 輸入代理名稱,它必須與代理配置文件中的Hostname參數中的名稱相同。
Proxy mode : 選擇代理模式。
Proxy address : 添加的代理主機IP地址。
Description: 輸入代理描述。
提示:參考以上添加Proxy02節點。
五 部署Zabbix Agent節點
5.1 安裝Zabbix官方源和epel源
1 [root@node01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
2 [root@node01 ~]# ls /etc/yum.repos.d/ #查看Zabbix源是否安裝成功
3 epel.repo epel-testing.repo zabbix.repo
5.2 安裝Zabbix Agent等組件
1 [root@node01 ~]# yum -y install zabbix-agent
注意:1 Zabbix官方的yum源爲:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/。
2 node2參考node1部署便可。
5.3 node節點agent配置
1 [root@server ~]# vi /etc/zabbix/zabbix_agentd.conf
2 PidFile=/var/run/zabbix/zabbix_agentd.pid
3 LogFile=/var/log/zabbix/zabbix_agentd.log
4 LogFileSize=0
5 Server=127.0.0.1,172.24.8.72 #若爲純主動模式須要註釋此行
6 ServerActive=172.24.8.72 #主動模式,node01向proxy01主動傳送數據
7 Hostname=node01 #Zabbix server web上添加node須要用到
提示:爲防止Server異常致使監控故障,Server端也須要被監控。
5.4 啓動Zabbix服務
1 [root@node01 ~]# systemctl start zabbix-agent
2 [root@node01 ~]# systemctl enable zabbix-agent #啓動Zabbix agent服務
提示:node2參考node1部署,Server主動模式改成:ServerActive=172.24.8.73,Hostname=node02便可。
六 添加主機
6.1 修改模板監控模式
配置---->模板---->Template OS Linux---->全克隆
在新克隆的模板中,將採集方式修改成主動式。
Linux系統模板---->監控項---->全選---->批量更新---->類型---->zabbix客戶端(主動式)---->更新
提示:Zabbix自帶監控模板的採集方式爲被動式,須要修改成主動式。
Linux系統模板---->自動發現規則,須要將兩個發現規則均改成主動式。
Mounted filesystem discovery自動發現規則修改成主動式。
Network interface discovery參考便可。
6.2 添加Server自身
略,Zabbix Server默認會添加自身節點。
6.3 添加Proxy節點
爲了方便管理,可新建代理節點監控主機組。
配置---->主機---->添加主機
配置項
|
描述
|
主機名(Host name)
|
輸入在agent配置文件中配置的主機名,
必須惟一且不重複且和host定義的Host name名稱一致。
|
訪問名(Visible name)
|
在主機列表、圖表等地方顯示的名字,須要utf-8支持。
|
羣組(Groups in groups)
|
選擇主機所屬的羣組,一個主機必須屬於至少一個主機組。
|
新主機組(New group)
|
自動建立一個新的羣組,並加入此羣組。
|
接口協議
|
Zabbix支持的協議有:Agent、SNMP、JMX和IPMI,選擇對應的便可。
|
IP地址(IP address)
|
須要監控的主機的IP地址
|
DNS名稱(DNS name)
|
須要監控主機的DNS可以解析的名稱
|
與agent的通訊方式(Connect to)
|
鏈接要監控主機的IP地址/要監控主機能解析的DNS名稱
|
端口(Port)
|
TCP協議的端口,Zabbix客戶端使用的默認爲10050
|
代理監控(Monitored by proxy)
|
能夠經過Zabbix服務器或者Zabbix的一個代理去監控客戶端
|
注意:推薦採用DNS監控,防止更換IP後某個網站沒法監控(對固定域名的網站)。
爲主機選擇相應的模板
提示:Proxy02參考proxy01添加便可,主機名及接口地址配置爲proyx02節點信息便可。
6.3 添加node節點
爲了方便管理,可新建代理節點監控應用主機組。
配置---->主機---->添加主機
爲主機選擇相應的模板
提示:參考node01添加node02,node02節點由agent代理程序監測選擇proxy02便可。
七 確認驗證
7.1 查看log
進入相關節點的/var/log/zabbix/zabbix*.log可查看相關日誌。
7.2 主機圖形確認
登陸Zabbix以後查看主機及圖形
隨機查看node01節點監控圖形。