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