范永合 楊澎濤 朱應(yīng)科 孫劍 湛林福 付巧娟
摘要:隨著云計算技術(shù)的發(fā)展,許多企業(yè)單位都建有私有云或共享中心,用于資源集中共享使用并提供服務(wù)。隨著計算機節(jié)點的線性增多,應(yīng)用服務(wù)膨脹增長,導(dǎo)致系統(tǒng)運維壓力極大增加。如何利用各種自動化運維監(jiān)控工具,提高運維質(zhì)量、效率和水平,保障應(yīng)用服務(wù)的穩(wěn)定高效,成為面臨的緊要問題。為此,本文基于Ansible實現(xiàn)Zabbix自動部署,幫助運維人員進(jìn)行自動化運維監(jiān)控平臺的快速構(gòu)建和優(yōu)化管理,有效提升云中心智能運維的管理水平。
關(guān)鍵詞:Ansible;Zabbix;自動部署
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)35-0000-00
隨著云計算技術(shù)的發(fā)展,資源中心的節(jié)點規(guī)模極其龐大,設(shè)備類型多樣,操作系統(tǒng)版本也不盡相同。從安全、運維等方面需要對這些設(shè)備實現(xiàn)實時監(jiān)控?,F(xiàn)許多企業(yè)采用開源的Zabbix方案來構(gòu)建自己的監(jiān)控平臺,該方案需要被監(jiān)控設(shè)備安裝客戶端,傳統(tǒng)部署方式需要手工安裝客戶端,煩瑣費時,同時由于操作系統(tǒng)多樣性導(dǎo)致人工配置過程復(fù)雜易出錯。由于應(yīng)用環(huán)境復(fù)雜,各企業(yè)監(jiān)控關(guān)注點各有側(cè)重,而Zabbix自帶的監(jiān)控模板及參數(shù)無法滿足實際應(yīng)用需求。這就需要各企業(yè)根據(jù)自身需求進(jìn)行客戶端參數(shù)定制,從原型測試到快速部署需要一種自動化運維技術(shù)進(jìn)行支持。
為此采用Ansible技術(shù)來實現(xiàn)Zabbix客戶端及配置相關(guān)參數(shù)的自動分發(fā)部署。通過該方案,可以實現(xiàn)對海量監(jiān)控節(jié)點的自動化部署,參數(shù)優(yōu)化修正,應(yīng)用群組定制監(jiān)控方案等功能。
1 技術(shù)實現(xiàn)
需要考慮的難點問題包括:針對不同的主機操作系統(tǒng)安裝相應(yīng)的客戶端版本;實現(xiàn)客戶端配置文件定制及自動化生成;指定應(yīng)用群組主機定制功能分發(fā)。
實現(xiàn)該方案的基礎(chǔ)準(zhǔn)備包括:安裝配置實現(xiàn)控制對應(yīng)主機的Ansible控制主機;配置安裝Zabbix客戶端的YUM環(huán)境;已安裝調(diào)試正常的Zabbix環(huán)境及測試腳本。
(1)不同操作系統(tǒng)安裝相應(yīng)客戶端
解決方法有多種,其中之一:對主機操作系統(tǒng)版本信息獲取并分組,然后對應(yīng)的每組主機安裝相應(yīng)的repo文件,最后操縱相應(yīng)主機安裝客戶端。
yum模塊用于yum包管理軟件的管理。主要參數(shù)為name和state。name:指定進(jìn)行操作的軟件包的名字;state:表示進(jìn)行的操作,可選擇installed(安裝)、latest(安裝最新版本),刪除軟件包可選擇absent、removed。示例:ansible 192.168.1.1-myum-a“name=zabbix-agent state=installed”安裝zabbix-agent服務(wù)
setup模塊用于主機信息獲取。使用setup模塊查機器的所有facts信息,facts信息包括遠(yuǎn)程主機發(fā)行版,IP地址,CPU核數(shù),系統(tǒng)架構(gòu),主機名等等,使用filter來查看指定信息。示例:ansible all-m setup—a”filter=ansible_distribution_major_ver-sion”獲取所有主機的操作系統(tǒng)版本號
group_by模塊僅能在playbook中使用,使用facts獲取的信息組合加工后實現(xiàn)主機分組。示例:group_by: key=machine_{{ansible_machine}}可以實現(xiàn)主機體系架構(gòu)分組。
當(dāng)然也可以使用特定host文件或文件中指定分組的方式,達(dá)到類似目的。這種情況需要運維人員對主機組情況非常了解。僅使用host文件方法的話,運維人員需要多了解主機組與操作系統(tǒng)關(guān)系映射。
(2)客戶端配置文件的定制及自動生成參數(shù)
Zabbix客戶端安裝后,需要配置zabbix-agent.conf文件中相應(yīng)參數(shù),才能正常使用客戶端。需要配置的參數(shù)最少要包括:
Server=192.X.X.X
#填寫zabbix服務(wù)器IP地址
ServerActive=192.X.X.X
#填寫zabbix服務(wù)器IP地址
Hostname=test01
#zabbix_agent客戶端計算機名(被監(jiān)控主機)
在海量節(jié)點添加操作中,如果使用手工操作,簡直不可想象。解決方法就是自動獲取機器名并修改配置文件。
template模塊基于模板方式生成一個文件復(fù)制到遠(yuǎn)程主機。template使用Jinjia2格式作為文件模版,進(jìn)行文檔內(nèi)變量的替換。主要參數(shù)為src和dest。src:在Ansible控制器上的Jinja2格式化模板的路徑。dest:將模板渲染到遠(yuǎn)程機器上的位置。group:目標(biāo)文件屬組。mode:目標(biāo)文件的權(quán)限模式,模式可以被指定為符號模式(例如,u+rwx或u=rw,g=r,o=r)。示例:
-name: copy template
template:
src: test.j2
dest: /tmp/test.conf
可以實現(xiàn)對應(yīng)conf配置文件的模板化復(fù)制。
Jinja2是基于python的模板引擎。使用"{%%}"對控制語句進(jìn)行包含,比如"if"控制語句、"for"循環(huán)控制語句等都需要包含在"{%%}"中。可以直接使用ansible的facts獲取的變量參數(shù)。示例:Hostname={{ansible_hostname))可以直接匹配對應(yīng)遠(yuǎn)端主機的機器名。
2 實例演示
(1)操作系統(tǒng)分組后安裝客戶端
執(zhí)行對應(yīng)playbook,將所有主機節(jié)點按照版本號分組,復(fù)制對應(yīng)版本的zabbix客戶端repo源配置文件,然后執(zhí)行安裝最新版本的操作。如果體系建設(shè)完整的話,可以更新YUM服務(wù)器端的軟件源后,直接再次執(zhí)行playbook劇本達(dá)到更新客戶端的目的。
(2)客戶端配置文件定制及自動化部署
通過執(zhí)行對應(yīng)playbook,完成客戶端配置文件的定制分發(fā),服務(wù)的啟動及使能。同時也可以部署企業(yè)定制化的功能腳本,以完善擴展Zabbix平臺的功能。
3 總結(jié)
隨著云中心節(jié)點數(shù)量的不斷增長和應(yīng)用復(fù)雜度的增加,原有的手工運維已經(jīng)不能滿足新形勢下的需求。因此需要充分利用各種自動化運維工具,運用智能運維思路來建設(shè)維護(hù)云中心的體系,提升運維質(zhì)量效率。基于Ansible實現(xiàn)Zabbix自動部署,做到了安裝Zabbix客戶端、修改Agent配置文件的自動化,簡化了客戶端安裝步驟,智能配置參數(shù),實現(xiàn)海量節(jié)點的批量配置修改,提高計算機運維監(jiān)控人員的工作效率。
參考文獻(xiàn):
[1]吳夫丹.基于云平臺的服務(wù)器監(jiān)控系統(tǒng)設(shè)計[D].西安:西安工業(yè)大學(xué),2014.
[2]李曉暉,基于Zabbix的應(yīng)用監(jiān)控系統(tǒng)[J].價值丁程,2018,37(28).
[3]孫春雨.基于Linux集群的Ansible部署與自動化管理研究[J].中國管理信息化,2019(9):165-166.
[4]周萌,林國策,楊厚云.CENTOS下ZABBIX的配置與使用[J].北京信息科技大學(xué)學(xué)報:自然科學(xué)版,2015,30(1):90-94.
[5]通過ansible自動化部署zabbix應(yīng)用.https://www.cnblogs.com/flytor/p/11440822.html
[6]ansible官方文檔.https://docs.ansible.com/ansible/latest/index.html
[7]zabbix官方文檔.https://www.zabbix.com/documentation/4.0/zh/manual
【通聯(lián)編輯:唐一東】
收稿日期:2019-08-20
作者簡介:范永合(1974-),男,山東東營人,大學(xué),工程師,主要從事勘探開發(fā)領(lǐng)域的軟硬件運維管理工作。