在IT運(yùn)維工作中,監(jiān)控的重要性,想必不用我再多說(shuō)什么了,畢竟誰(shuí)都想及早發(fā)現(xiàn)故障,有效的監(jiān)控,總比對(duì)著服務(wù)器和網(wǎng)絡(luò)設(shè)備燒香、跪拜來(lái)得靠譜吧。
而作為一個(gè)IT外包服務(wù)公司,由于需要監(jiān)控的服務(wù)器和網(wǎng)絡(luò)設(shè)備比較多,而且分布在眾多的局域網(wǎng)內(nèi),所以分布式的監(jiān)控,肯定是非常必要的,當(dāng)然也同樣適用于擁有多地分公司的集團(tuán)企業(yè)。
我們的做法是,在公有云租賃一臺(tái)云主機(jī),部署Zabbix Server,最初監(jiān)控的設(shè)備比較少的時(shí)候,直接在客戶的防火墻或者路由器上開(kāi)放相應(yīng)的端口,然后Zabbix Server逐一添加被監(jiān)控設(shè)備就行了。
但是,隨著需要監(jiān)控的設(shè)備越來(lái)越多,這種方式顯然跟不上節(jié)奏了,所以不得不開(kāi)始部署分布式的Zabbix。
其方法就是:在內(nèi)網(wǎng)部署Zabbix Proxy,來(lái)代表云端的Zabbix server在本地收集數(shù)據(jù),然后將數(shù)據(jù)統(tǒng)一上報(bào)給云端的Zabbix server。
這種方法,有一個(gè)非常顯著的優(yōu)勢(shì),就是不再需要被監(jiān)控的客戶擁有公網(wǎng)固定IP,只要有普通的寬帶就可以了。
還有就是,proxy 只需要一個(gè)到達(dá)Zabbix server的TCP連接即可,路由器僅需配置一條端口就可以了,防火墻的話,當(dāng)然還需要一條放行規(guī)則。
Zabbix Server的安裝和配置,前面已經(jīng)有文章寫(xiě)過(guò)了,所以就不再重復(fù)了, 下面以centos系統(tǒng)為例,講解一下Zabbix Proxy的安裝和配置。
1、安裝MySQL數(shù)據(jù)庫(kù)
yum install mysql-community-server -y
如果報(bào)錯(cuò) 則用yum install mysql-community-server --nogpgcheck -y
啟動(dòng)mysql服務(wù)并設(shè)置開(kāi)機(jī)自啟
查看mysql初始密碼
mysql -u root -p ,然后輸入初始密碼
修改mysql初始密碼
alter user 'root'@'localhost' identified by 'password';
至此mysql安裝成功。
2、部署Zabbix Proxy
步驟一 Install Zabbix repository
# rpm-Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
# yum clean all
步驟二 Install Zabbix proxy
# yum install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy
步驟三 創(chuàng)建初始數(shù)據(jù)庫(kù)
在數(shù)據(jù)庫(kù)主機(jī)上運(yùn)行以下代碼。
# mysql -uroot -p
Password
mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost;
mysql> set global log_bin_tRust_function_creators = 1;
mysql> quit;
導(dǎo)入初始架構(gòu)和數(shù)據(jù),系統(tǒng)將提示您輸入新創(chuàng)建的密碼。
# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
等待一段時(shí)間后,導(dǎo)入數(shù)據(jù)庫(kù)成功。
# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
步驟四 配置Zabbix proxy的數(shù)據(jù)庫(kù)文件
編輯配置文件 /etc/zabbix/zabbix_proxy.conf
主要是填寫(xiě)云端Zabbix Server的彈性IP,以及Zabbix Proxy數(shù)據(jù)庫(kù)對(duì)應(yīng)的密碼。
修改完畢后保存退出。
步驟五 啟動(dòng)zabbix-proxy服務(wù),并設(shè)置為開(kāi)機(jī)自啟動(dòng)。
# systemctl restart zabbix-proxy
# systemctl enable zabbix-proxy
查看zabbix-proxy服務(wù)
# systemctl status zabbix-proxy
正確情況,此時(shí)如下圖所示
Zabbix-proxy部署到此成功。
3、端口映射及防火墻安全策略。
Proxy默認(rèn)聆聽(tīng)端口是10051,由于Server在云端,所以需要將內(nèi)部10051端口映射到公網(wǎng),如果是防火墻的話,當(dāng)然還需要匹配的安全策略,這個(gè)在之前已經(jīng)寫(xiě)過(guò)很多教程了,就沒(méi)必要重復(fù)了,有需要的朋友,可以翻看我之前寫(xiě)的文章。
4、在zabbix-server服務(wù)器上添加proxy和被監(jiān)控的設(shè)備
被監(jiān)控的內(nèi)網(wǎng)設(shè)備,處于一個(gè)撥號(hào)上網(wǎng)的寬帶下,沒(méi)有固定的公網(wǎng)IP,所以選擇主動(dòng)模式,意思就是proxy主動(dòng)向云端的server報(bào)送數(shù)據(jù)。
舉例,華為防火墻監(jiān)控參數(shù)配置如下圖所示:
在云端的Zabbix Server上添加被監(jiān)控的華為防火墻:
下面這個(gè)圖片,是云端Zabbix Server通過(guò)端口映射的方式直接監(jiān)控到內(nèi)網(wǎng)的服務(wù)器,以及Proxy模式監(jiān)控內(nèi)網(wǎng)服務(wù)器的對(duì)比,從圖片中可能看到,無(wú)論采購(gòu)哪種方式,監(jiān)控到數(shù)據(jù)是一樣的。
顯然,需要監(jiān)控的設(shè)備分散在不同的局域網(wǎng)內(nèi)的話,顯然是分布式(即Proxy模式)更方便、更有優(yōu)勢(shì),也在相當(dāng)程度上,減輕了服務(wù)器的負(fù)擔(dān)。