999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于鐵路系統(tǒng)云平臺監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

2019-12-28 06:10:26聞彩麗蔣文怡
鐵路計算機應(yīng)用 2019年12期
關(guān)鍵詞:服務(wù)系統(tǒng)

聞彩麗,蔣文怡

(北京交通大學(xué) 電子信息工程學(xué)院, 北京 100044)

近年來,為了實現(xiàn)鐵路內(nèi)部各信息系統(tǒng)之間的數(shù)據(jù)共享與業(yè)務(wù)協(xié)同,以及能在同一網(wǎng)絡(luò)基礎(chǔ)上開展業(yè)務(wù)和采用新技術(shù),需要將相關(guān)業(yè)務(wù)系統(tǒng)以及業(yè)務(wù)數(shù)據(jù)遷移到云計算平臺上[1]。為了保證鐵路信息系統(tǒng)能在云上穩(wěn)定運行,平臺需要提供統(tǒng)一的監(jiān)控服務(wù)來實時地監(jiān)控物理服務(wù)器的狀態(tài)和資源使用信息,對出現(xiàn)的異常及時告警,由運維人員進行快速處理。開源的監(jiān)控軟件Zabbix由于其強大的展現(xiàn)功能和可擴展性被廣泛使用。但是由于鐵路的覆蓋范圍廣泛,需要在不同的鐵路局集團公司部署云計算平臺,同時也需要在不同的云計算中心部署監(jiān)控服務(wù)。現(xiàn)有的Zabbix部署方式是通過在服務(wù)器上下載安裝包,然后由運維人員手工進行安裝和系統(tǒng)配置。這種部署方式操作繁多、效率低[2-3],實現(xiàn)的監(jiān)控系統(tǒng)通常只能監(jiān)控平臺的基礎(chǔ)設(shè)備,對平臺中重要的容器服務(wù)的狀態(tài)和性能信息是無法監(jiān)控的[4]。本文基于云計算中的容器技術(shù),提出了基于Zabbix軟件的監(jiān)控系統(tǒng)的自動化部署方式。同時,實現(xiàn)的監(jiān)控系統(tǒng)可以監(jiān)控物理服務(wù)器上的各項指標(biāo)參數(shù)。

1 系統(tǒng)設(shè)計

1.1 系統(tǒng)架構(gòu)設(shè)計

Zabbix作為一個基于Web界面的企業(yè)級監(jiān)控軟件,主要是用來監(jiān)控網(wǎng)絡(luò)的眾多參數(shù)以及服務(wù)器健康的完整性軟件,以保證服務(wù)器系統(tǒng)能夠安全運營[5]。Zabbix提供了靈活的通知機制,允許用戶為任何事件配置基于電子郵件的警報,實現(xiàn)對服務(wù)器問題的快速響應(yīng)[6]。Zabbix是由服務(wù)組件共同協(xié)作來完成監(jiān)控服務(wù)的,包含的組件如下。

(1)Zabbix Server:是 Zabbix的核心組件,可以通過SNMP,Zabbix Agent 等方式提供對遠程服務(wù)器、網(wǎng)絡(luò)設(shè)備的監(jiān)控和數(shù)據(jù)收集功能。

(2)MysqL:負責(zé)用來存儲用戶的配置信息和從Agent上收集到的數(shù)據(jù)。

(3)ZabbixProxy:常用于分布式監(jiān)控環(huán)境中,代理Server收集部分被監(jiān)控的數(shù)據(jù)并統(tǒng)一發(fā)往Server端。

(4)Zabbix Web:提供Web界面,方便用戶通過界面瀏覽每個服務(wù)器的數(shù)據(jù)信息和監(jiān)控狀態(tài)。

(5)Zabbix Agent: 部署在被監(jiān)控主機上,負責(zé)收集本地數(shù)據(jù),并將數(shù)據(jù)發(fā)往Server端或Proxy端。

當(dāng)需要被監(jiān)控的主機的數(shù)量較多時,可以基于Zabbix的分布式架構(gòu),實現(xiàn)監(jiān)控系統(tǒng)的可用性和可擴展性。監(jiān)控系統(tǒng)的分布式架構(gòu)圖,如圖1所示。

圖1 監(jiān)控系統(tǒng)的分布式架構(gòu)圖

1.2 系統(tǒng)功能

Zabbix可以用來監(jiān)控不同的物理設(shè)備。這里只介紹對物理主機的監(jiān)控。Zabbix已經(jīng)提供了一些強大的的功能,如圖2的功能概括圖所示,實現(xiàn)了對主機的全面監(jiān)控。

(1)為主機關(guān)聯(lián)模板:Zabbix提供的默認(rèn)模板,已經(jīng)定義好了監(jiān)控項可以直接使用。我們也可以創(chuàng)建自定義監(jiān)控項。

(2)主機監(jiān)控指標(biāo)收集:實現(xiàn)這一功能的前提是已在主機上部署了Zabbix Agent服務(wù),在模板關(guān)聯(lián)后,就開始收集數(shù)據(jù)。

(3)問題自動檢測:在創(chuàng)建監(jiān)控項時,需要為監(jiān)控項設(shè)置觸發(fā)器,系統(tǒng)會自動檢測獲取的數(shù)據(jù)是否會超過閾值。

(4)告警及時通知:當(dāng)系統(tǒng)檢測到問題時,需要通知相關(guān)人員進行查看和處理。

(5)監(jiān)控數(shù)據(jù)可視化顯示:為了方便用戶查看監(jiān)控信息的變動,可以通過可視化界面將數(shù)據(jù)以圖像的形式顯示出來。

圖2 監(jiān)控系統(tǒng)的功能概括圖

Zabbix提供的主機默認(rèn)監(jiān)控項有CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)接口以及操作系統(tǒng)的相關(guān)監(jiān)控信息等。這些監(jiān)控項只是從主機的系統(tǒng)信息的角度考慮。在主機上還有許多用來構(gòu)建云平臺的服務(wù)容器還沒有監(jiān)控起來,當(dāng)某個容器掛掉之后,云平臺對外提供服務(wù)就會受到影響。尤其是對于大量的鐵路業(yè)務(wù)數(shù)據(jù)的存儲是通過ceph容器實現(xiàn)的。這時就需要能實時監(jiān)控容器的狀態(tài)和性能信息。因此我們需要在原有監(jiān)控項的基礎(chǔ)上通過編寫腳本來實現(xiàn)對容器模板和監(jiān)控項的自定義。

2 技術(shù)支撐

實現(xiàn)Zabbix系統(tǒng)的自動化部署到服務(wù)的快速啟動過程,需要借助Docker技術(shù)和AnsibLe技術(shù)。Docker通過構(gòu)建鏡像來將Zabbix相關(guān)服務(wù)組件進行容器化。AnsibLe用來實現(xiàn)將各個組件容器在多個主機上進行自動化部署和系統(tǒng)配置[7]。

2.1 Docker

Docker是一個開源項目,它基于Linux內(nèi)核的Cgroup、Namespace等技術(shù),對進程進行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù)[8]。由于隔離的進程獨立于宿主機和其它的進程,因此也稱其為容器,這與虛擬機的虛擬化技術(shù)有著明顯的差別。如圖3所示,虛擬機的虛擬化實現(xiàn)是在物理硬件和操作系統(tǒng)之間加了一層中間軟件層,即Hypervisor,它可以對下層的硬件資源進行封裝、隔離、抽象,使它們成為另一種形式的邏輯資源,再提供給上層的虛擬機[9]。對每個虛擬機來說都擁有獨立的操作系統(tǒng)。對于容器的虛擬化實現(xiàn)來說,容器是共享主機的操作系統(tǒng)的。在操作系統(tǒng)的上層通過通過Docker Engine,將不同的應(yīng)用鏡像打包,使它們相互隔離[10]。

圖3 容器和虛擬化技術(shù)的比較

2.2 Ansible

Ansible是一個自動化運維工具,可以實現(xiàn)批量系統(tǒng)配置、批量程序部署、批量運行命令等功能[11]。Anisble包含許多基于Python編寫的模塊,為部署提供某項具體的功能。Ansible要完成在多個主機上部署服務(wù)的功能,不僅需要模塊的支持,還需要通過Hosts文件來管理這些主機,默認(rèn)通過SSH來實現(xiàn)主機之間的通信。在主機上執(zhí)行的任務(wù)通常是通過playbooks來定義的,將多個任務(wù)也就是執(zhí)行的命令定義在roles文件中,由Ansible自動執(zhí)行的。由于Ansible具有配置簡單、擴展性強、部署簡單等優(yōu)勢,被廣泛應(yīng)用在了云計算平臺。

3 系統(tǒng)實現(xiàn)

3.1 系統(tǒng)部署實現(xiàn)

監(jiān)控系統(tǒng)是通過在多個主機上部署Zabbix服務(wù)組件,由組件之間互相通信來實現(xiàn)的。傳統(tǒng)的部署方式需要操作人員下載安裝包,手動進行安裝,這種方式不適合用于在多個主機上部署服務(wù)。基于Docker技術(shù),將Zabbix的服務(wù)組件容器化。基于AnsibLe技術(shù),實現(xiàn)服務(wù)的自動化部署過程。Zabbix容器化到自動化部署的過程,如圖4所示。

圖4 Zabbix容器化到自動化部署的實現(xiàn)流程圖

3.1.1 鏡像的構(gòu)建和推送

Zabbix各個組件鏡像的制作是Docker 通過執(zhí)行Dockerfile文件來實現(xiàn)的。Dockerfile文件中包括基礎(chǔ)鏡像,以及在基礎(chǔ)鏡像的上執(zhí)行的一些命令和定義的參數(shù)。構(gòu)建出的鏡像是與主機環(huán)境隔離的,不受主機環(huán)境的影響。將構(gòu)建好的鏡像通過Docker命令推送到自己的代碼倉庫中方便管理。Zabbix中需要制作鏡像的組件包括:Zabbix Server、Zabbix Web、Zabbix Proxy、Zabbix Agent。圖5是Zabbix-agent的Dockerfile文件主要代碼。

3.1.2 自動化部署的實現(xiàn)

自動化部署是基于Ansible技術(shù)通過編寫部署代碼來實現(xiàn)的。其中,包括對Zabbix服務(wù)容器的的啟動、配置和擴展的自動化實現(xiàn)。自動化部署的代碼實現(xiàn)流程圖,如圖6所示。

其中,group_vars文件夾中all.yml定義的是部署Zabbix各個服務(wù)組件時用到的一些常用變量,包括各個鏡像的名稱、容器的名稱、數(shù)據(jù)庫的地址、用戶和密碼等。inventory文件夾中的hosts文件定義的是要部署服務(wù)的主機組和主機。roles文件夾下定義的是要執(zhí)行的任務(wù)以及執(zhí)行任務(wù)的先后順序。順序如下:

(1)為了方便數(shù)據(jù)的統(tǒng)一管理,我們選擇在云計算平臺的數(shù)據(jù)庫添加Zabbix數(shù)據(jù)庫。正如圖6中所示,需要創(chuàng)建Zabbix數(shù)據(jù)庫、用戶、密碼,用戶和密碼是用來登錄Zabbix數(shù)據(jù)庫的。

(2)啟動Zabbix Server、Zabbix Web 容器。需要先從Docker倉庫中拉取該服務(wù)的鏡像來啟動容器。該服務(wù)需要部署到將要作為Server的物理節(jié)點上,讓這兩服務(wù)先對外提供服務(wù),為后面的服務(wù)連接提供保障。

(3)在已經(jīng)啟動好的Zabbix Server中在創(chuàng)建主機組和導(dǎo)入自定義的模板。當(dāng)部署多個異地的云計算中心時,監(jiān)控系統(tǒng)也需要部署多個,該步驟可以保證不同監(jiān)控系統(tǒng)的起始數(shù)據(jù)的一致性。這使得維護人員不需要重新創(chuàng)建模板,或者是手動導(dǎo)入模板,極大地簡化了維護操作流程。

(4)啟動Zabbix Proxy服務(wù)。需要先從Docker倉庫中拉取該服務(wù)的鏡像來啟動容器。該服務(wù)是用來對監(jiān)控系統(tǒng)實現(xiàn)分布式管理的,部署到其他的主機上,當(dāng)需要監(jiān)控的物理節(jié)點較多時,可以采用分布式架構(gòu)。

(5)啟動Zabbix Agent服務(wù)。需要先從Docker倉庫中拉取該服務(wù)的鏡像來啟動容器。該服務(wù)要部署到需要被監(jiān)控的每臺物理節(jié)點上,由Agent來收集主機的監(jiān)控信息,發(fā)往Server端。

圖5 Docker file文件中的主要代碼圖

圖6 自動化部署的代碼實現(xiàn)流程圖

只需要在部署服務(wù)器上拷貝Zabbix 部署的代碼,通過執(zhí)行“ansible-playbook -i ./inventory/hosts site.yml -e action=collect”該命令,既可以將整個監(jiān)控服務(wù)搭建起來,完成部署的所有操作,縮短了部署的時間。部署成功后在物理節(jié)點上執(zhí)行“Docker ps”,出現(xiàn)如圖7所示的界面,說明通過自動化部署在物理節(jié)點control上成功部署了Zabbix Server、Zabbix Web、Zabbix Agent的服務(wù)。

圖7 部署成功的結(jié)果圖

3.2 系統(tǒng)功能的實現(xiàn)

在Zabbix提供的原有功能外,通對Zabbix Agent進行二次開發(fā),使它能獲取主機上容器的監(jiān)控數(shù)據(jù)。因為容器是與主機外的環(huán)境是隔離的。因此在啟動Zabbix Agent容器時需要將主機上的Docker.socket進程掛載到容器中,通過該進程獲取主機外的容器的相關(guān)信息。在該容器中編寫Python腳本來實現(xiàn)對所有容器的監(jiān)控的。圖8是腳本中用來監(jiān)控容器的CPU使用率的關(guān)鍵代碼。

通過自定義用來監(jiān)控容器的模板,實現(xiàn)了對容器的性能信息和狀態(tài)信息的監(jiān)控。

圖8 實現(xiàn)獲取容器CPU使用率的相關(guān)代碼圖

4 結(jié)束語

利用Docker技術(shù)和Ansible技術(shù),基于Zabbix軟件的監(jiān)控系統(tǒng)的自動化部署方式,已在學(xué)校實驗室的云平臺環(huán)境得到了應(yīng)用。應(yīng)用結(jié)果表明,該方法可以在2 min中內(nèi)將整個監(jiān)控系統(tǒng)部署好,并且監(jiān)控系統(tǒng)可以根據(jù)在部署時導(dǎo)入的自定義模板實時監(jiān)控到云環(huán)境中的物理服務(wù)器的狀態(tài)和性能信息。通過對Zabbix軟件的功能擴展,實現(xiàn)的監(jiān)控系統(tǒng)也可以實時監(jiān)控到云平臺中的容器服務(wù)的狀態(tài)和性能信息。隨著鐵路云計算平臺的擴展,該監(jiān)控系統(tǒng)的容器化和自動化方式將會得到快速的應(yīng)用。

猜你喜歡
服務(wù)系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
半沸制皂系統(tǒng)(下)
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
主站蜘蛛池模板: 国产喷水视频| 亚洲人成网址| 2021精品国产自在现线看| 久久久久无码国产精品不卡| 日韩午夜福利在线观看| 国产成人无码Av在线播放无广告| 久久久久亚洲精品成人网| 久久精品丝袜| 2022国产无码在线| 欧美亚洲日韩中文| 国产福利大秀91| 欧美成在线视频| 青青草原国产免费av观看| 2020最新国产精品视频| 二级特黄绝大片免费视频大片| 91精品伊人久久大香线蕉| 国产日韩欧美在线播放| 蝌蚪国产精品视频第一页| 午夜精品久久久久久久无码软件| a亚洲天堂| 国产精品漂亮美女在线观看| 精品丝袜美腿国产一区| 国产美女免费| 国产精品久久久久久搜索| 国产国模一区二区三区四区| 国产精品手机视频一区二区| 57pao国产成视频免费播放| 色悠久久综合| 91网址在线播放| 国产精品护士| 青青草原国产一区二区| 国产精品国产主播在线观看| 午夜性刺激在线观看免费| 欧美伦理一区| 国产91特黄特色A级毛片| 99精品影院| 欧美日韩在线亚洲国产人| 亚洲成人动漫在线观看| 一级香蕉视频在线观看| 扒开粉嫩的小缝隙喷白浆视频| 伊人久久大线影院首页| 中文字幕在线免费看| 国产一国产一有一级毛片视频| 亚洲国产高清精品线久久| 一级黄色欧美| 无码中字出轨中文人妻中文中| 亚洲人在线| 午夜福利无码一区二区| 五月婷婷丁香色| 亚洲乱亚洲乱妇24p| a级免费视频| 中文字幕无码制服中字| 亚洲色图狠狠干| 久久精品aⅴ无码中文字幕| 91精品久久久无码中文字幕vr| 欧美成人手机在线观看网址| 国产手机在线ΑⅤ片无码观看| 激情综合图区| 无码人妻免费| 国产91九色在线播放| 国产成人欧美| 久久久久无码精品| 波多野衣结在线精品二区| 午夜高清国产拍精品| 午夜精品一区二区蜜桃| www.亚洲国产| 亚洲综合第一页| 无码在线激情片| www.狠狠| 国产亚洲欧美在线视频| 最新国产精品鲁鲁免费视频| 精品国产99久久| 一区二区三区四区在线| 色精品视频| 国产精品99久久久久久董美香| 亚洲第一黄色网址| 91无码视频在线观看| 88av在线看| 欧美不卡在线视频| 久久无码av三级| 亚洲精品你懂的| 国产v精品成人免费视频71pao |