030.Zabbix分布式部署


一 分布式Zabbix介紹

zabbix proxy 可以代替 zabbix server 收集性能和可用性數據,然后把數據匯報給 zabbix server,並且在一定程度上分擔了zabbix server 的壓力。
此外,當所有agents和proxy報告給一個Zabbix server並且所有數據都集中收集時,使用proxy是實現集中式和分布式監控的最簡單方法。
zabbix proxy 使用場景:
  • 監控遠程區域設備
  • 監控本地網絡不穩定區域
  • 當 zabbix 監控上千設備時,使用它來減輕 server 的壓力
  • 簡化分布式監控的維護

二 分布式Zabbix架構

2.1 架構示意圖

121

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參數配置決定的。
  • 被動模式的流程
  1. Server打開一個TCP連接。
  2. Server發送一個key為agent.ping\n。
  3. Agent接收到這個請求,然后響應數據<HEADER><DATALEN>1.
  4. Server對接收到的數據進行處理。
  5. TCP連接關閉。
  • 主動模式
  Active(主動模式),主動模式由於是Agent將采集到的數據主動發送給Server,而不需要Server每次連接Agent等待采集,所以采用主動模式會使Zabbix-Server具有最好的性能。在大型環境下,一定要將工作模式設置為主動模式,並盡可能采用更多的proxy以降低Server的負擔,一般多機房,每個機房肯定都要設置proxy的。
  • 主動模式的流程
  1. Agent向Server建立一個TCP的連接。
  2. Agent請求需要檢測的數據列表。
  3. Server響應Agent,發送一個Items列表(item key、delay)。
  4. Agent響應請求。
  5. TCP連接完成本次會話后關閉。
  6. 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
 
122

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代理程序---->創建代理
123
Proxy name : 輸入代理名稱,它必須與代理配置文件中的Hostname參數中的名稱相同。
Proxy mode : 選擇代理模式。
Proxy address : 添加的代理主機IP地址。
Description: 輸入代理描述。
124
提示:參考以上添加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---->全克隆
125
在新克隆的模板中,將采集方式修改為主動式。
126
Linux系統模板---->監控項---->全選---->批量更新---->類型---->zabbix客戶端(主動式)---->更新
127
提示:Zabbix自帶監控模板的采集方式為被動式,需要修改為主動式。
Linux系統模板---->自動發現規則,需要將兩個發現規則均改為主動式。
128
Mounted filesystem discovery自動發現規則修改為主動式。
129
Network interface discovery參考即可。

6.2 添加Server自身

略,Zabbix Server默認會添加自身節點。

6.3 添加Proxy節點

為了方便管理,可新建代理節點監控主機組。
130
配置---->主機---->添加主機
配置項
描述
主機名(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后某個網站無法監控(對固定域名的網站)。
131
為主機選擇相應的模板
132
提示:Proxy02參考proxy01添加即可,主機名及接口地址配置為proyx02節點信息即可。

6.3 添加node節點

為了方便管理,可新建代理節點監控應用主機組。
133
配置---->主機---->添加主機
134
為主機選擇相應的模板
135
提示:參考node01添加node02,node02節點由agent代理程序監測選擇proxy02即可。

七 確認驗證

7.1 查看log

進入相關節點的/var/log/zabbix/zabbix*.log可查看相關日志。

7.2 主機圖形確認

登錄Zabbix之后查看主機及圖形
136
隨機查看node01節點監控圖形。
137
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM