[隱藏]
- 集群架構:
- 構建思路:
- 部署步驟:
- 一、准備階段:
- 二、部署階段:
集群架構:

構建思路:
本監控系統由一個zabbix master和兩個zabbix proxy組成,各自位於不同的網段,且有獨立的MySQL服務器;其中192.168.1.0網段作為三個路由互聯的網段,10.0.0.0網段為zabbix master所處的網段,172.16.0.0和172.26.0.0網段為zabbix proxy1和zabbix proxy2所處的網段。
兩個zabbix proxy負責收集各自網段內主機的數據,每2秒向zabbix master發送監控各自網段內主機的數據。為節約資源,所有zabbix GUI服務均與zabbix server服務配置在同一台主機。
部署步驟:
一、准備階段:
1、准備三台最小化安裝的centos7,修改hostname,關閉selinux和防火牆,打開ipv4核心轉發並重啟:
# vi /etc/hostname
修改:
router1
保存退出
# vi /etc/selinux/config
修改:
SELINUX=disabled
保存退出
# systemctl disable firewalld # vi /usr/lib/sysctl.d/50-default.conf
添加:
net.ipv4.ip_forward = 1
保存退出
# sync # reboot
2、在各router上寫入靜態路由
1)在router1上寫入靜態路由:
# vi /etc/sysconfig/network-scripts/route-ens33
添加:
172.16.0.0/24 via 192.168.1.182 dev ens33 172.26.0.0/24 via 192.168.1.183 dev ens33
保存退出
# sync # reboot
2)在router2上寫入靜態路由:
# vi /etc/sysconfig/network-scripts/route-ens33
添加:
10.0.0.0/24 via 192.168.1.181 dev ens33 172.26.0.0/24 via 192.168.1.183 dev ens33
保存退出
# sync # reboot
3)在router3上寫入靜態路由:
# vi /etc/sysconfig/network-scripts/route-ens33
添加:
10.0.0.0/24 via 192.168.1.181 dev ens33 172.16.0.0/24 via 192.168.1.182 dev ens33
保存退出
# sync # reboot
3、在route1-3上測試靜態路由的連通情況:
1)route1:


2)route2:


3)route3:


4、准備三台安裝好MySQL的主機,配置好IP備用;
5、准備一台zabbix master主機和兩台zabbix ,配置好IP備用;
6、准備六台被監控主機,安裝好相應的服務、配置好IP備用;
7、各主機使用相同的hosts文件:
10.0.0.11 zbx-master 10.0.0.12 mysql1 10.0.0.21 tomcat1 10.0.0.22 tomcat2 172.16.0.11 zbx-proxy1 172.16.0.12 mysql2 172.16.0.21 nginx1 172.16.0.22 nginx2 172.26.0.11 zbx-proxy2 172.26.0.12 mysql3 172.26.0.21 redis1 172.26.0.22 redis2
8、各主機均使用NTP服務器校准時間;
二、部署階段:
對zabbix master的部署:
1、在zabbix master上安裝zabbix相關程序包:
# yum install zabbix22 zabbix22-server zabbix22-server-mysql zabbix22-web zabbix22-web-mysql zabbix22-agent zabbix22-dbfiles-mysql
2、在MySQL1上為zabbix創建用戶和數據庫:
# yum install mariadb-server mariadb # mysql MariaDB> CREATE DATABASE zabbix CHARACTER SET utf8; MariaDB> GRANT ALL on zabbix.* TO ‘zbxuser’@’10.0.0.%’ IDENTIFIED BY ‘zbxpass’; MariaDB> GRANT ALL on zabbix.* TO ‘zbxuser’@’zbx-master’ IDENTIFIED BY ‘zbxpass’; MariaDB> FLUSH PRIVILEGES;
3、復制zabbix master安裝的的數據庫模板至MySQL1:
# cd /usr/share/zabbix-mysql/ # scp *.sql root@mysql1:/root/
4、在MySQL1上導入數據庫模板:
# cd # mysql zabbix < schema.sql # mysql zabbix < images.sql # mysql zabbix < data.sql
5、在zabbix master上動httpd:
# systemctl start httpd.service
6、在zabbix master上編輯zabbix配置文件:
# vim /etc/zabbix/zabbix_server.conf
修改:
DBHost=10.0.0.12 DBName=zabbix DBUser=zbxuser DBPassword=zbxpass
保存退出
7、啟動zabbix-server
# systemctl start zabbix-server.service
8、查看10051端口是否監聽:
# ss –tnl
9、修改php的時區:
# vim /etc/php.ini
啟用:
date.timezone = Asia/Shanghai
保存退出
10、重啟httpd:
# systemctl restart httpd.service
11、在瀏覽器中啟動zabbix的配置界面:
http://10.0.0.11/zabbix


12、按提示配置zabbix
填入數據庫服務器地址、用戶、密碼等,填完之后還可以測試一下,看到“OK”說明數據庫連接正常:


標記zabbix服務器本身:
Host 10.0.0.11 Port 10051 Name zbx-master
確認后完成zabbix的配置
13、登陸時,默認賬號密碼:
用戶:admin
密碼:zabbix
登陸成功后即可進入zabbix的dashboard:


14、加入zabbix-server本身為監控對象:
配置agent的配置文件(注意:zabbix_agent.conf 和 zabbix_agentd.conf不一樣,要配置的是zabbix_agentd.conf,不能錯!)
# vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=127.0.0.1,10.0.0.11
保存退出
啟動zabbix-agent
# systemctl start zabbix-agent
15、在zabbix GUI配置界面上啟用對本機的監控
點擊Status中的Not monitored,選擇OK:


當綠色的“Z”標志亮起,說明服務器已被正常監控:


16、配置並啟動兩台tomcat服務器的zabbix-agent:
在tomcat1上安裝、配置並啟動zabbix-agent:
# yum install zabbix22-agent # vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=10.0.0.11 ServerActive=10.0.0.11 Hostname=tomcat1
保存退出
# systemctl start zabbix-agent.service
在tomcat2上安裝、配置並啟動zabbix-agent:
# yum install zabbix22-agent # vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=10.0.0.11 ServerActive=10.0.0.11 Hostname=tomcat2
保存退出
# systemctl start zabbix-agent.service
17、將兩台tomcat服務器加入主機列表:


18、至此,zabbix master已部署完畢。
對zabbix proxy1的部署:
1、在zabbix proxy1上安裝程序包:
# yum install zabbix22 zabbix22-proxy zabbix22-proxy-mysql zabbix22-agent zabbix22-dbfiles-mysql
2、在MySQL2上為proxy1創建一個數據庫:
# mysql MariaDB> CREATE DATABASE zabbix_proxy CHARACTER SET utf8; MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’172.16.0.%’IDENTIFIED BY ‘zbxpass’; MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’zbx-proxy1’IDENTIFIED BY ‘zbxpass’; MariaDB> FLUSH PRIVILEGES; MariaDB> quit
3、在zabbix proxy1上復制數據庫文件到MySQL2上:
# cd /usr/share/zabbix-mysql/ # scp *.sql root@mysql2:/root/
4、在MySQL2上導入數據庫文件:
# cd # mysql zabbix_proxy < schema.sql 注意:proxy只需要schema.sql
5、在MySQL2上驗證導入數據庫是否成功:
# mysql MariaDB> USE zabbix_proxy MariaDB> SHOW TABLES;
6、在zabbix proxy1上配置zabbix-proxy的配置文件:
# cd /etc/zabbix # vim zabbix_proxy.conf
修改:
Server=10.0.0.11 ##填寫Master的地址 Hostname=zbx-proxy1 ##填寫本機hostname DBhost=172.16.0.12 ##填寫數據庫地址 DBname=zabbix_proxy DBuser=zbxuser DBpassword=zbxpass DataSenderFrequency=2 ##每隔2秒向Master送一次數據
保存退出
7、在zabbix proxy1上啟動zabbix-proxy服務:
# systemctl start zabbix-proxy
9、在zabbix proxy1上查看服務監聽端口:
# ss –tnl


10、在Maser的GUI界面上添加proxy
找到選項卡:Administration è DM
選擇“Create proxy”
Proxy name zbx-proxy1 Proxy mode Passive ##由Master推送配置 Proxy hosts


這里選擇需要加入的主機(目前還沒有主機加入)
點擊save完成添加


11、在zabbix proxy1上配置agent文件:
# vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=10.0.0.11 ServerActive=10.0.0.11 Hostname=zbx-proxy1
保存退出
# systemctl start zabbix-agent.service
12、在zabbix的GUI界面上添加對proxy1的監控:


13、配置並啟動兩台nginx服務器的zabbix-agent:
在nginx1上安裝、配置並啟動zabbix-agent:
# yum install zabbix22-agent # vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=172.16.0.11 ServerActive=172.16.0.11 Hostname=nginx1
保存退出
# systemctl start zabbix-agent.service
在nginx2上安裝、配置並啟動zabbix-agent:
# yum install zabbix22-agent # vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=172.16.0.11 ServerActive=172.16.0.11 Hostname=nginx2
保存退出
# systemctl start zabbix-agent.service
14、將兩台nginx服務器以proxy的模式加入主機列表:




15、至此,zabbix proxy1已部署完畢。
對zabbix proxy2的部署:
1、在zabbix proxy2上安裝程序包:
# yum install zabbix22 zabbix22-proxy zabbix22-proxy-mysql zabbix22-agent zabbix22-dbfiles-mysql
2、在MySQL3上為proxy2創建一個數據庫:
# mysql MariaDB> CREATE DATABASE zabbix_proxy CHARACTER SET utf8; MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’172.26.0.%’IDENTIFIED BY ‘zbxpass’; MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’zbx-proxy2’IDENTIFIED BY ‘zbxpass’; MariaDB> FLUSH PRIVILEGES; MariaDB> quit
3、在zabbix proxy2上復制數據庫文件到MySQL3上:
# cd /usr/share/zabbix-mysql/ # scp *.sql root@mysql3:/root/
4、在MySQL3上導入數據庫文件:
# cd # mysql zabbix_proxy < schema.sql
5、在MySQL3上驗證導入數據庫是否成功:
# mysql MariaDB> USE zabbix_proxy MariaDB> SHOW TABLES;
6、在zabbix proxy2上配置zabbix-proxy的配置文件:
# cd /etc/zabbix # vim zabbix_proxy.conf
修改:
Server=10.0.0.11 Hostname=zbx-proxy2 DBhost=172.26.0.12 DBname=zabbix_proxy DBuser=zbxuser DBpassword=zbxpass DataSenderFrequency=2
保存退出
7、在zabbix proxy2上啟動zabbix-proxy服務:
# systemctl start zabbix-proxy
8、在zabbix proxy2上查看服務監聽端口:
# ss –tnl


9、在Maser的GUI界面上添加proxy
找到選項卡:Administration è DM
選擇“Create proxy”
Proxy name zbx-proxy2 Proxy mode Passive ##由Master推送配置 Proxy hosts


這里選擇需要加入的主機(目前還沒有主機加入)
點擊save完成添加


10、在zabbix proxy2上配置agent文件:
# vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=10.0.0.11 ServerActive=10.0.0.11 Hostname=zbx-proxy2
保存退出
# systemctl start zabbix-agent.service
11、在zabbix的GUI界面上添加對proxy2的監控:


12、配置並啟動兩台redis服務器的zabbix-agent:
在redis1上安裝、配置並啟動zabbix-agent:
# yum install zabbix22-agent # vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=172.26.0.11 ServerActive=172.26.0.11 Hostname=redis1
保存退出
# systemctl start zabbix-agent.service
在redis2上安裝、配置並啟動zabbix-agent:
# yum install zabbix22-agent # vim /etc/zabbix/zabbix_agentd.conf
修改:
Server=172.26.0.11 ServerActive=172.26.0.11 Hostname=redis2
保存退出
# systemctl start zabbix-agent.service
13、將兩台redis服務器以proxy的模式加入主機列表:




14、至此,zabbix proxy2已部署完畢。
監控主機全家福:


發現問題:
2個proxy后的主機均不能正常監控,Dashboard報錯:
Zabbix agent on nx1 unreachable for 5 minutes.


解決問題:
查詢zabbix master的日志,發現如下信息:
“172.26.0.11”failed: proxy “zbx-proxy2” is configured in passive mode.


說明此時proxy的工作模式和server的不一致,默認情況下,proxy是運行在active模式中的,故應該修改2個proxy的配置文件,使其運行在passive模式中:
在zbx-proxy1上修改:
# cd /etc/zabbix # vi zabbix_proxy.conf
修改:
ProxyMode=1
保存退出
# systemctl restart zabbix-proxy
在zbx-proxy2上修改:
# cd /etc/zabbix # vi zabbix_proxy.conf
修改:
ProxyMode=1
保存退出
# systemctl restart zabbix-proxy
問題解決:


經測試,passive模式工作的proxy的延遲要遠高於active模式,正確配置passive模式后如果proxy后的hosts無法顯示被監控,請耐心等待master向proxy推送新配置信息。
至此,整個zabbix分布式監控的部署完成。

