郭彬 吳學(xué)離 周浩潔
摘要:計算機操作系統(tǒng)的確為系統(tǒng)運維人員提供了豐富的指令集,可以監(jiān)控到系統(tǒng)所有的狀態(tài)信息;但是這些都是分立的命令,給出的均是命令行輸出,不利于分析和發(fā)現(xiàn)問題。Zabbix是一個基于WEB的分布式監(jiān)控系統(tǒng)開源軟件,可以集中監(jiān)控各種設(shè)備運行狀態(tài),保障系統(tǒng)安全運營。因此需要為計算機運營系統(tǒng)配置一套Zabbix監(jiān)控系統(tǒng)運行環(huán)境,便于系統(tǒng)運維。目前ARM64架構(gòu)主機已經(jīng)可以在計算機系統(tǒng)中承擔(dān)部分輕量級的業(yè)務(wù)角色,同時具備更低的系統(tǒng)生成和運營成本,因此我們嘗試在ARM64主機上搭建Zabbix集中監(jiān)控系統(tǒng)。文中給出系統(tǒng)搭建的過程,明確安裝過程中需要注意的配置操作,深化對操作系統(tǒng)、關(guān)系數(shù)據(jù)庫等相關(guān)軟件按的認(rèn)識;最終我們展示了Zabbix系統(tǒng)發(fā)布系統(tǒng)的可視化系統(tǒng)運行數(shù)據(jù)。
關(guān)鍵詞:Linux操作系統(tǒng);ARM架構(gòu);Nginx服務(wù);MySQL數(shù)據(jù)庫;Zabbix集中監(jiān)控系統(tǒng)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)03-0242-04
1 概述
Zabbix系統(tǒng)由兩部分組成,Zabbix_server和Zabbix_agent;Zabbix_server可以通過Agent,SNMP等多種接口方式獲取被監(jiān)控服務(wù)器狀態(tài);它可以部署在Linux/UNIX等操作系統(tǒng)上;支持Oracle,MySQL和DB2等主流數(shù)據(jù)庫系統(tǒng);靈活的信息接入方式,支持多種主流操作系統(tǒng)和數(shù)據(jù)庫,兼具易用性和易維護性,這些都是我們選擇Zabbix的原因。
配置Zabbix需要事先在相關(guān)節(jié)點上安裝Linux操作系統(tǒng);運行Zabbix_server的節(jié)點需要安裝MySQL數(shù)據(jù)庫,畢竟相對于Oracle和DB2而言MySQL是一個輕量級的關(guān)系數(shù)據(jù)庫系統(tǒng),更適用于當(dāng)前系統(tǒng)應(yīng)用;Zabbix_server還需要一個web信息發(fā)布平臺,我們選擇Nginx和PHP為其提供web發(fā)布功能。綜上所述,我們要為Zabbix_server搭建一個完整的LMNP(Linux OS,MySQL,Nginx和PHP)運行環(huán)境。
2 系統(tǒng)運行環(huán)境描述
ARM主機選用天啟科技的AI0-3399J高性能主機,主機上搭載RK3399 64位處理器,安裝Ubuntu操作系統(tǒng),通過操作系統(tǒng)命令uname -nmo: lsb release -d[1]可以杏到系統(tǒng)參數(shù)如下:
解讀命令輸出信息:主機名firefly,aarch64為ARM64處理器指令集,操作系統(tǒng)版本為Ubuntu16 for ARM;同時我們選取一臺X86_64架構(gòu)主機,通過操作系統(tǒng)命令查看系統(tǒng)參數(shù)如下:
計劃在firefly(ARM64架構(gòu))主機上部署Zabbix服務(wù)和Agent功能,因此需要在該節(jié)點上部署LMNP運行環(huán)境;由于本節(jié)點具備Agent功能,這樣firefly主機提供Zabbix監(jiān)控服務(wù)同時可以監(jiān)控自身的運行狀態(tài);在X86_64主機上僅部署Zabbix的Agent功能,發(fā)送主機運行信息到Zabbix服務(wù)節(jié)點。
3 在系統(tǒng)主機上配置LMNP運行環(huán)境
Linux操作系統(tǒng)已經(jīng)在各個節(jié)點上安裝,略過。我們從MySQL數(shù)據(jù)庫安裝和配置開始。
3.1 在ARM64主機上配置MySQL數(shù)據(jù)庫程序
官網(wǎng)下載mysql-5.7.26.tar.gz源碼包,在預(yù)設(shè)mysql用戶家目錄下解壓和編譯MySQL數(shù)據(jù)程序;在編譯MySQL之前需要準(zhǔn)備其它相關(guān)軟件,如boost_1_59_o和cmake等,具體配置選項和編譯參考相關(guān)技術(shù)網(wǎng)站。MySQL程序編譯完成之后,配置/etc/my. cnf文件和/etc/init.d/mysqld文件,通過如下命令行程序初始化MySQL數(shù)據(jù)庫
./bin/mysqld -initialize -basedir=/media/nvmeOnl/mysql -datadir=/usr/users/mysqldata[2]
如上述操作成功完成后在輸出信息結(jié)尾將給出初始的口令,可以通過mysql -u root -p登陸MySQL數(shù)據(jù)庫,進(jìn)入mysql程序命令行交互界面,執(zhí)行SQL命令如下:
set password=password(ytdf000)[3];
flush privileges;
更新MySQL數(shù)據(jù)庫root用戶口令并即時生效,本例設(shè)置MySQL數(shù)據(jù)庫root用戶口令為ytdf000,實際口令設(shè)置復(fù)雜度需參考系統(tǒng)需求。通過操作系統(tǒng)命令systemctl enable mysqld設(shè)置MySQL服務(wù)自動啟動。
如上述操作完成MySQL數(shù)據(jù)庫軟件編譯部署和數(shù)據(jù)庫初始化。
3.2 在MySQL數(shù)據(jù)庫系統(tǒng)中生成Zabbixdb數(shù)據(jù)庫
當(dāng)前步驟需要完成Zabbix應(yīng)用數(shù)據(jù)庫創(chuàng)建,然后進(jìn)行Zab-bix應(yīng)用程序的編譯部署。在ARM64主機Ubuntu系統(tǒng)中預(yù)設(shè)zabbix用戶,在用戶家目錄下部署Zabbix軟件;官網(wǎng)下載zab-bix-4.0.13rcl.tar.gz代碼包并解壓,首先執(zhí)行Zabbix代碼包釋放路徑下的MySQL腳本,創(chuàng)建Zabbix應(yīng)用數(shù)據(jù)庫,相關(guān)腳本如下:sql是數(shù)據(jù)庫記錄腳本;在上述腳本路徑位置以MySQL的root用戶進(jìn)入mysql交互命令界面,參考如下步驟:
1)創(chuàng)建zabbixdb數(shù)據(jù)庫
create database zabbixdb character set utf8[3];
2)聲明zabbixdb數(shù)據(jù)庫下名為zabbix的用戶
grant all on zabbixdb.半 to zabbix@dbsl identified by'ytdf000[3]
本例口令為ytdf000;
3)執(zhí)行Zabbix數(shù)據(jù)庫系統(tǒng)生成腳本
通過use zabbixdb;命令切換到zabbix數(shù)據(jù)庫,通過source命令執(zhí)行Zabbix應(yīng)用數(shù)據(jù)庫腳本,如下:
source schema.sql;
sourcelmages.sql;
source data.sql;
通過終端提示可以驗證腳本執(zhí)行是否正確??梢酝ㄟ^show tables;等命令檢查zabbixdb參數(shù)表生成情況。
3.3 在ARM64主機上配置Nginx信息發(fā)布引擎
官網(wǎng)下載nginx_1.16.1.orig.tar.gz,在解壓釋放路徑下編譯Nginx程序,命令如下:
./configure -prefix=/media/nvmeOnl/nginx; make&&makeinstall:
編譯完成后需要編輯其配置文件/media/nvmeOn l/nginx/conf/nginx.conf以適應(yīng)Zabbix的php格式信息發(fā)布腳本,修改內(nèi)容如下:
①第20行l(wèi)og_format main去掉注釋使生效;
②第24行access_log logs/access.log main;去掉注釋使生效;
③第44行index后添加index.php;
④第65-71行取消注釋,開放有關(guān)location - Vphp$的語句塊;
在文件安裝路徑/media/nvmeOnl/nginx/sbin目錄下直接執(zhí)行命令:./nginx—c/media/nvmeOnl/nginx/conf/nginx.conf[4],
通過系統(tǒng)命令簡單測試,命令和查詢結(jié)果如下
驗證Nginx進(jìn)程已經(jīng)運行;可以在/lib/systemd/system/目錄下編輯nginx.serwce文件,通過systemctl指令配置nglnx自動啟動,配置文件內(nèi)容參考其它Nginx相關(guān)資料。
3.4 在ARM64主機上編譯安裝PHP腳本解釋程序
官網(wǎng)下載php-7.3.4.tar.gz源碼包,并解壓編譯;編譯配置注意結(jié)合MySQL并支持php-fpm,具體編譯配置選項參考相關(guān)技術(shù)論壇;編譯配置監(jiān)測過程中可能會提示缺少部分相關(guān)程序,可以通過Ubuntu系統(tǒng)的apt-get install聯(lián)網(wǎng)安裝或者通過官網(wǎng)下載代碼包編譯。運行配置腳本之后通過make&&make in-stall命令編譯安裝;編譯安裝完成后將代碼路徑下的init.d.php-fpm文件拷貝到/etc/init.d路徑下,如命令:
cp./s api/fpm/init.d.php-fpm /etc/init. d/php-fpm
通過systemctl enable php-fpm配置服務(wù)自動啟動,通過systemctl start php-fpm運行php進(jìn)程管理軟件;通過命令
netstat -antp I grep php-fpm檢查配置運行情況顯示
說明php-fpm運行且監(jiān)聽于9000端口;
在Zabbix配置過程中需要修改php.im部分選項參數(shù),如下表。
上述操作基本完成LNMP的配置。
4 在ARM64主機上編譯安裝Zabbix軟件并配置Zab-bix-server和Zabbix-agent運行
4.1 Zabbix程序的編譯生成
在ARM64主機Ubuntu系統(tǒng)中預(yù)設(shè)zabbix用戶,在用戶家目錄下部署Zabbix軟件;官網(wǎng)下載zabbix-4.0.13rcl.tar.gz代碼包并解壓,在ARM64上Zabbix程序編譯需要明確使用zabbix-server和zabbix-agent功能,結(jié)合MySQL,net-snmp等系統(tǒng)功能,詳細(xì)配置參考Zabbix官網(wǎng)和相關(guān)論壇;配置完成之后生成編譯腳本文件,通過make&&make install編譯并且安裝。
編譯安裝之后首先編輯$HOME/etc下的zabbix_agentd.conf和zabbix_ server.conf文件。
4.2 Zabbix編輯Zabbix_server運行配置文件
1)在zbbbix用戶家目錄下設(shè)置tmp目錄,設(shè)置項LogFile=/media/nvmeOnl/z abbix/tmp/zabbix_server.log保存程序運行日志信息;文中設(shè)置PID文件生成路徑PidFile=/media/nvmeOnl/zab-bix/tmp/zabbix_server.pid;設(shè)置Socket文件生成路徑SocketDir=/media/nvmeOnl/zabbix/tmp;
2)已經(jīng)在MySQL配置過程中于/etc[hosts設(shè)置dbsl網(wǎng)絡(luò)主機名;設(shè)置DBHost=dbsl;設(shè)置Zabbix數(shù)據(jù)庫名DBName=zab-bixdb,設(shè)置訪問Zabbixdb數(shù)據(jù)庫用戶DBUser=zabbix,訪問口令設(shè)置DBPassword=ytdf000;
3)設(shè)置子配置文件路徑項Include=/media/nvmeOnl/z abbix/etc/zabbix_server.conf.d/*.conf
4.3 編輯Zabbix_agent運行配置文件
1)設(shè)置日志文件保存路徑項為LogFile=/media/nvmeOnl/zabbix/tmp/zabbix_agentd.log;設(shè)置PID文件生成路徑為PidFile=/media/nvmeOnl/zabbix/tmp/z abbix_agentd.pid;
2)設(shè)置提供Zabbix服務(wù)節(jié)點Server=172.20.82.41,當(dāng)前為本機IP;若設(shè)置Agent為主動工作方式,ServerActive=172.20.82.41,當(dāng)前對應(yīng)本機IP;設(shè)置Agent主機Hostname=fire-fly,為本機節(jié)點名稱;與Zabbix信息發(fā)布系統(tǒng)配置的host主機列表一致,見下文。
3)設(shè)置子配置文件路徑項為Include=/media/nvmeOnl/zab-bix/etc/zabbix_agentd.conf. d/*.conf;
4.4 配置Zabbix程序自動運行
完成進(jìn)程配置文件修改后配置Zabbix服務(wù)和Agent進(jìn)程自動運行,切換到非HO ME/zabbix-4.0.1 3rc l/misc/init.d/debian路徑下,確認(rèn)zabbix-agent和zabbix-server文件內(nèi)容,特別是DAE-MON路徑信息是否正確,如下:
DAEMON=/media/nvmeOnl/zabbix/sbin/$ {NAME)
需要結(jié)合實際應(yīng)用程序所在路徑填寫;最后拷貝zabbix-agent和zabbix-server到/etc/init. dl路徑下,通過systemctl enable命令設(shè)置zabbix-server和zabbix-agent自動運行;配置完成執(zhí)行如下命令
顯示zabbix服務(wù)和Agent運行;分別監(jiān)聽于10051和10050端口。
5 配置Zabbix信息發(fā)布
5.1 將Zabbix信息發(fā)布目錄配置到Nginx上
在Zabbix用戶家目錄下,切換路徑到$HOME/zabbix-4.0.13 rc l/frontends位置,拷貝php目錄到nginx信息發(fā)布根目錄下,如下命令
cp -rp php /media/nvmeOnl/nginx/html/zabbix,將php目錄拷貝成zabbix;在新生成的/media/nvmeOnl/nginxf html/zabbix路徑下增加文件phpinfo.php,文件內(nèi)容為,目的在于調(diào)試。
5.2 Zabbix信息發(fā)布配置
在運維工作站打開瀏覽器,輸入Nginx服務(wù)運行主機地址,本例為http:// 172.20.8 2.4 1/zabbix/setup. php,首次登陸用戶為Admin,口令為zabbix,登人后顯示如下信息發(fā)布圖形界面,按照引導(dǎo)操作。
1) Zabbix預(yù)配置檢查
單擊Next Step進(jìn)入Check of pre-requisites界面,主要是檢查php.ini文件配置信息,我們此前做過配置;如果有選項參數(shù)仍需要修改,按照提示修改php.im文件中的配置項,然后重新運行php-fpm服務(wù)使修改生效;
2)填寫Zabbix數(shù)據(jù)庫信息
單擊Next Step按鈕進(jìn)入Configure DB Connection,填寫數(shù)據(jù)庫類型為MySQL;數(shù)據(jù)庫主機為dbsl;數(shù)據(jù)庫端口為3306;數(shù)據(jù)庫名為zabbixdb;數(shù)據(jù)庫用戶為zabbix;數(shù)據(jù)庫登陸口令為ytdf000;上述配置參數(shù)均與Zabbix數(shù)據(jù)庫生成部分相對應(yīng);
3)填寫Zabbix服務(wù)器信息
單擊Next Step按鈕進(jìn)入Zabbix server details,填寫主機寫主機名稱firefly或IP;端口號填寫10051;服務(wù)器名稱填寫主機名稱或IP;下一步顯示Pre-installation summary(預(yù)配置匯總信息);核實無誤單擊Next Step按鈕顯示信息提示配置成功。
6 在X86_64架構(gòu)主機上部署Zabbix agent
6.1 在X86_64架構(gòu)主機上編譯Zabbix軟件
在RHEL6.10操作系統(tǒng)中預(yù)設(shè)zabbix用戶,在用戶家目錄下部署Zabbix軟件;軟件安裝過程與前文所述相似,編譯配置命令為:./c onfigure -prefix=/u sr/local/z abbix -enable-agent
通過編譯選項僅生成zabbix的agent功能。
6.2 編輯Zabbix_agent運行配置文件
編譯安裝完成之后,編輯$HOME/etc/zabbix_agentd.conf文件,修改內(nèi)容如下:
1)在zabbix用戶家目錄預(yù)設(shè)tmp目錄,設(shè)置PID問價生成位置項為PidFile=/u sr/users/zabbix/tmp/z abbix_agentd.pid;設(shè)置日志文件保存位置為LogFile=/usr/us ers/zabbix/tmp/z ab -bix_agentd.log;
2)設(shè)置提供Zabbix服務(wù)節(jié)點Server=172.20.82.41,指向Zb-bix server運行節(jié)點IP;若設(shè)置Agent為主動工作方式,Server-Active=172.20.82.41.指向提供Zabbix服務(wù)節(jié)點IP;設(shè)置Agent主機Hostname=lpdesktop,為本機節(jié)點名稱;
3)設(shè)置子配置文件路徑項為Include=/usr/users/zabbix/etc/zabbix_agentd.conf.d/* .conf;
6.3 配置Zabbix_agent服務(wù)自動運行
在zabbix代碼釋放路徑下切換到/usr/users/zabbix/zabbix-4.0.13 rc l/misc/init.d/fedora/core路徑下,確認(rèn)zabbix_agentd文件內(nèi)容路徑信息是否正確,如下:
顯示zabbix_agentd運行,監(jiān)聽于10050端口。
6.4 在Zabbix信息發(fā)布系統(tǒng)中加入lpdesktop主機
1)在Zabbix信息發(fā)布系統(tǒng)中加入被監(jiān)控主機信息
通過瀏覽器登錄我們剛剛配置好的Zabbix信息發(fā)布系統(tǒng),點擊第一行菜單中Configuration熱點,然后點擊第二行菜單的host熱點,點擊右上Create Host按鈕,在彈出的Hosts頁面填寫新增的主機信息,Hostname項填寫被監(jiān)控主機節(jié)點名,在此填寫lpdesktop,與前文zabbix_agent。conf文件中Hostname項一致;通過Select按鈕選取主機功能所屬組,本例為Linux Servers和Zabbix Server;代理接口填寫當(dāng)前主機可以訪問Zabbix服務(wù)器的網(wǎng)絡(luò)接口IP,Agent端口號10050;操作完成需要單擊Update按鈕確認(rèn);
2)為被監(jiān)控主機選取Templates
返回Hosts頁面,看到lpdesktop主機已經(jīng)加上;單擊host列表中的lpdesktop主機,再次進(jìn)入其host設(shè)置界面;點擊Tem-plates進(jìn)入Templates配置頁面,通過Select選取模板類型;例如本例選擇Temlate APP Zabbix Server和Template OS Linux,通過單擊ADD按鈕加入已連接模板列表,通過Update按鈕更新主機信息;
3)為被監(jiān)控主機設(shè)置部署信息
在被監(jiān)控lpdesktop主機的hosts設(shè)置界面,單擊Host inven-torv進(jìn)入主機部署頁面,默認(rèn)狀態(tài)為Disabled,單擊Automated按鈕,而后單擊頁面底部的Update按鈕,完成操作返回返回Hosts頁面。
完成上述操作就完成了在Zabbix系統(tǒng)中加入一臺被監(jiān)控目標(biāo)主機的加人工作,通過Hosts頁顯示主機已經(jīng)處于Enabled狀態(tài)。
通過Zabbix瀏覽頁面第一行Monitor按鈕進(jìn)入系統(tǒng)監(jiān)視頁,通過graphs選取圖表輸出功能;在Group下拉列表選取
Linux servers,在Host下拉列表選取lpdesktop,在Graph下拉列表選取需要查看的內(nèi)容,效果如下圖:
如上圖示,說明lpdesktop主機運行狀態(tài)信息通過自身的Zabbix_agent服務(wù)發(fā)送到ARM主機的Zabbix_server,再由Nginx信息發(fā)布顯示到瀏覽器上,Zabbix agent功能配置完成。
7 總結(jié)
我們終于完成了將Zabbix功能部署于ARM主機的工作。實現(xiàn)了對計算機系統(tǒng)的有效監(jiān)控,同時兼顧監(jiān)控系統(tǒng)的投入和運營的經(jīng)濟性。需要說明的是Zabbix集中監(jiān)控系統(tǒng)提供的功能很完備,還可以監(jiān)視諸如Solaris,AIX和HP-UX等UNIX小型機運行狀態(tài),被監(jiān)控主機僅需要部署Zabbix-agent功能,部署相對簡單,資源占用少,不影響服務(wù)器自身業(yè)務(wù)負(fù)荷;也可以經(jīng)由SNMP,JMX和IPMI接口實現(xiàn)對目標(biāo)主機監(jiān)控,由于實驗環(huán)境和篇幅所限不在此敘述。
通過上文我們可以基本了解在LMNP齊備的情況下配置Zabbix服務(wù)的過程,同時更深入了解操作系統(tǒng)、關(guān)系數(shù)據(jù)庫等相關(guān)知識;并且我們驗證了ARM64架構(gòu)處理器的處理能力,完全可以勝任一些輕量級的業(yè)務(wù)角色。
參考文獻(xiàn):
[1]劉遄.Linux就該這么學(xué)[M].北京:人民郵電出版社,2017:47-78,89-96.
[2][美]保羅,迪布瓦(Paul DuBois)著,張雪平,何莉莉,陶虹等譯.MySQL技術(shù)內(nèi)幕(第5版).,北京:人民郵電出版社,2015:412-440.
[3]劉增杰.MySQL5.7從入門到精通[M].北京:清華大學(xué)出版社,2016:29-36.37-46.47-79.347-365.
[4]高俊峰.高性能Linux服務(wù)器構(gòu)建實戰(zhàn):運維監(jiān)控、性能調(diào)優(yōu)與集群應(yīng)用(第1版)[M].北京:機械工業(yè)出版社,2012:1-14,22-28.