亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Ceilometer Alarm API的操作設(shè)計(jì)和實(shí)現(xiàn)①

        2017-07-19 12:27:20李超雷向忠清
        關(guān)鍵詞:輪詢郵件報(bào)警

        李超雷, 向忠清

        (武漢烽火信息集成技術(shù)有限公司 IT事業(yè)部, 武漢 430074)

        基于Ceilometer Alarm API的操作設(shè)計(jì)和實(shí)現(xiàn)①

        李超雷, 向忠清

        (武漢烽火信息集成技術(shù)有限公司 IT事業(yè)部, 武漢 430074)

        隨著云計(jì)算技術(shù)的不斷發(fā)展, 越來(lái)越多的企業(yè)采用OpenStack來(lái)構(gòu)建私有云或公有云平臺(tái). 云平臺(tái)正逐步替代傳統(tǒng)服務(wù)器, 用來(lái)承載著企業(yè)和用戶的IT業(yè)務(wù). 為了保證云平臺(tái)的服務(wù)質(zhì)量, 本文基于OpenStack的報(bào)警功能接口——Ceilometer Alarm API設(shè)計(jì)和實(shí)現(xiàn)了對(duì)于云平臺(tái)虛擬機(jī)監(jiān)控報(bào)警功能的交互操作頁(yè)面. 通過(guò)使用該功能, 用戶可以監(jiān)控虛擬機(jī)運(yùn)行時(shí)的性能狀態(tài), 保證云平臺(tái)的可靠運(yùn)行.

        云計(jì)算; Openstack; Ceilometer; 報(bào)警

        1 OpenStack介紹

        云計(jì)算技術(shù)在近幾年得到了飛速的發(fā)展, 通常來(lái)說(shuō), 云計(jì)算主要包括基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)作即服務(wù)(PaaS)和軟件即服務(wù)(SaaS)[1]. 本文討論的主要內(nèi)容屬于IaaS內(nèi)容.

        OpenStack[2-4]是一款開(kāi)源云計(jì)算管理平臺(tái), 由NASA和Rackspace合作研發(fā)并發(fā)起, 目前已經(jīng)發(fā)展成為僅次于Linux的全球第二大社區(qū). OpenStack提供了基礎(chǔ)設(shè)施即服務(wù)(IaaS)的解決方案, 其首要任務(wù)是簡(jiǎn)化云的部署過(guò)程并為其帶來(lái)良好的可擴(kuò)展性. OpenStack的核心項(xiàng)目包括計(jì)算(Nova)、網(wǎng)絡(luò)(Neutron)、身份認(rèn)證(Keystone)、塊存儲(chǔ)(Cinder)、對(duì)象存儲(chǔ)(Swift)、測(cè)量(Ceilometer)和操作面板(Horizon). 其中Ceilometer提供了對(duì)整個(gè)云平臺(tái)的資源進(jìn)行計(jì)量和統(tǒng)計(jì)的功能[5]. 本文實(shí)現(xiàn)的虛擬機(jī)告警功能主要基于Ceilometer[6], 為了證明Ceilometer數(shù)據(jù)的有效性, 下一節(jié)內(nèi)容主要對(duì)Ceilometer模塊進(jìn)行了分析.

        2 Ceilometer詳解

        Ceilometer是OpenStack中的一個(gè)子項(xiàng)目, 它能把OpenStack內(nèi)部發(fā)生的幾乎所有事件都收集起來(lái), 然后為計(jì)費(fèi)和監(jiān)控以及其他服務(wù)提供數(shù)據(jù)支撐.

        2.1 核心架構(gòu)

        Ceilometer使用兩種收集數(shù)據(jù)的方式, 一種是OpenStack各個(gè)服務(wù)內(nèi)發(fā)出的notification消息, 一種是通過(guò)調(diào)用各個(gè)服務(wù)的API主動(dòng)獲取數(shù)據(jù).

        Ceilometer之所以采用這兩種收集方式, 首先是因?yàn)? 在OpenStack內(nèi)部, 發(fā)生的一些事件都會(huì)發(fā)出對(duì)應(yīng)的notification消息, 比如創(chuàng)建和刪除虛擬機(jī)等, 這些都是計(jì)量的重要信息, 因此, notification消息作為Ceilometer的第一數(shù)據(jù)來(lái)源. 除此之外, 有些計(jì)量信息通過(guò)notification消息是獲取不到的, 比如說(shuō)虛擬機(jī)的CPU使用率、磁盤(pán)I/O速率等. 這些信息不會(huì)主動(dòng)的通過(guò)notification消息發(fā)送出來(lái), 因此Ceilometer增加了第二種方式, 周期性的調(diào)用相關(guān)API去獲取這些信息. 在Ceilometer源碼中, 如圖1所示, 在/etc/ceilometer/pipeline.yaml文件中配置了輪詢時(shí)間為600秒, 也就是說(shuō)每隔10分鐘Ceilometer會(huì)主動(dòng)獲取當(dāng)前系統(tǒng)中的各項(xiàng)信息并存入到數(shù)據(jù)庫(kù)中, 此信息作為Ceilometer的第二種數(shù)據(jù)來(lái)源, 可以根據(jù)需要適當(dāng)?shù)脑黾踊驕p少輪詢時(shí)間, 需要注意的是, 較短的輪詢時(shí)間會(huì)增加OpenStack后臺(tái)的壓力. Ceilometer輪詢時(shí)間如下:

        Ceilometer的各個(gè)服務(wù)中, 與采集相關(guān)的服務(wù)是ceilometer-collecter、ceilometer-agent-central、ceilometeragent-compute、ceilometer-agent-notification. 關(guān)系如圖1所示.

        圖1 Ceilometer組件關(guān)系圖

        如圖1所示, agent-central、agent-compute、agentnotification負(fù)責(zé)采集信息, 其中agent-compute用來(lái)收集計(jì)算節(jié)點(diǎn)上的信息, 在每一個(gè)計(jì)算節(jié)點(diǎn)上都要運(yùn)行一個(gè)agent-compute, 用來(lái)獲取虛擬機(jī)的CPU、Disk IO、Network IO、Instance這些信息. agent-central運(yùn)行在控制節(jié)點(diǎn)上, 它主要收集其他服務(wù)如Image、Volume、Objects、Network等信息. agent-notification則是負(fù)責(zé)收集各個(gè)組件推送到消息隊(duì)列中的信息, 與agentcentral和agent-compute不同的是, agent-notification只需要監(jiān)聽(tīng)事件的發(fā)生, agent-central和agent-compute都需要定時(shí)poll輪詢收集信息. 采集到的信息由collecter匯總處理, 并將數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中, collecter是在核心架構(gòu)中唯一一個(gè)能夠?qū)?shù)據(jù)庫(kù)進(jìn)行寫(xiě)操作的組件. 目前Ceilometer支持的存儲(chǔ)包括mysql、DB2、HBase、mongoDB, 在本文所用的OpenStack Kilo版本中,Ceilometer使用mongoDB作為后端存儲(chǔ), 目前來(lái)看, 監(jiān)控?cái)?shù)據(jù)的持久化的壓力還是很大的.

        2.2 Ceilometer Alarm

        Ceilometer Alarm是OpenStack Havana版本添加的新功能, 根據(jù)2.1節(jié)的介紹, Ceilometer已經(jīng)實(shí)現(xiàn)了比較完善的監(jiān)控體系, Alarm便是利用Ceilometer收集到的信息對(duì)云平臺(tái)進(jìn)行監(jiān)控報(bào)警.

        Alarm能夠監(jiān)控一個(gè)或多個(gè)指標(biāo)的值, 若高于或低于閾值, 則執(zhí)行相應(yīng)的動(dòng)作. 在Ceilometer中, 實(shí)現(xiàn)了2種Alarm, threshold和combination. Threshold針對(duì)某一個(gè)監(jiān)控指標(biāo)建立Alarm, 根據(jù)監(jiān)控指標(biāo)的閾值去判斷Alarm的狀態(tài). Combination則是將多個(gè)Alarm組合起來(lái)的綜合考慮監(jiān)控指標(biāo)的Alarm, 多個(gè)Alarm之間是or/and的關(guān)系.

        OpenStack提供了RESTful API對(duì)Alarm進(jìn)行操作,例如創(chuàng)建、更新、刪除、查詢等, 表1詳細(xì)的列出了創(chuàng)建一個(gè)Alarm需要的參數(shù).

        ANN指的是通過(guò)大量的神經(jīng)元之間的互相聯(lián)結(jié)和匯通而形成的復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu),將人腦組織結(jié)構(gòu)和運(yùn)行機(jī)制進(jìn)行某種抽象、簡(jiǎn)化和模擬的一種模型。人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,簡(jiǎn)稱ANN ),通過(guò)搭建數(shù)學(xué)模型來(lái)將神經(jīng)元的活動(dòng)進(jìn)行模擬,是一種通過(guò)建立在對(duì)大腦神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和功能進(jìn)行模仿和模擬而搭建成的一種信息處理系統(tǒng)。

        表1中AlarmThresholdRule和AlarmCombinationRule是兩種Alarm類型的參數(shù), 其中AlarmThresholdRule包括:

        meter_name: 監(jiān)控指標(biāo)

        query: 指定用于監(jiān)控何種資源, 可以綁定至具體的虛擬機(jī)上

        period, evaluation_periods: 確定監(jiān)控的時(shí)間范threshold: 閾值

        comparison_operator: 和閾值比較的方式

        statistic: 確定了使用何種數(shù)據(jù)與閾值threshold進(jìn)行比較

        exclude_outliners: 是否除去波動(dòng)較大數(shù)據(jù)AlarmCombinationRule包括:

        operator: 定義alarm之間的邏輯關(guān)系alarm_id: 為alarm的列表

        表1 創(chuàng)建Alarm的詳細(xì)參數(shù)

        本文虛擬機(jī)報(bào)警功能實(shí)現(xiàn)的原理是利用Alarm中的actions功能. actions主要提供兩種形式的接口, 一種是log, 該形式可以將報(bào)警信息寫(xiě)入到指定的日志文件中; 另一種是REST接口, 當(dāng)報(bào)警發(fā)生時(shí), OpenStack會(huì)使用http協(xié)議訪問(wèn)actions里設(shè)置的URL, 同時(shí)產(chǎn)生的報(bào)警信息會(huì)以JSON數(shù)據(jù)的格式包含在HTTP頭文件中以POST形式發(fā)送過(guò)去. 本文采用的報(bào)警接收方式便是使用REST接口形式.

        3 虛擬機(jī)報(bào)警的實(shí)現(xiàn)

        根據(jù)前一節(jié)的描述, Ceilometer提供的Alarm功能可以提供監(jiān)控功能, 不足的是, OpenStack僅僅是提供了Alarm的API, 沒(méi)有提供友好的人機(jī)交互的頁(yè)面.API通常是共程序開(kāi)發(fā)人員使用, 用戶使用起來(lái)并不方便. 本文接下來(lái)將基于OpenStack中的Ceilometer項(xiàng)目,設(shè)計(jì)并實(shí)現(xiàn)虛擬機(jī)報(bào)警功能.

        3.1 虛擬機(jī)報(bào)警功能流程

        考慮到在實(shí)際的使用過(guò)程中, 用戶并不需要考慮所創(chuàng)建的Alarm類型是Threshold還是Combination的, 用戶只需要考慮自己需要監(jiān)控何種數(shù)據(jù), 并創(chuàng)建相應(yīng)的報(bào)警規(guī)則便可. 報(bào)警規(guī)則所監(jiān)控的數(shù)據(jù)可以是單一的某一項(xiàng)數(shù)據(jù), 也可以是監(jiān)控多種數(shù)據(jù).

        Web頁(yè)面的流程上, 當(dāng)用戶規(guī)定好報(bào)警規(guī)則后, 可以根據(jù)需要選擇是否發(fā)送郵件通知, 設(shè)置完通知郵件之后將報(bào)警規(guī)則綁定到一個(gè)或多個(gè)虛擬機(jī)上就可以了.具體的創(chuàng)建流程如圖2所示.

        圖2 告警規(guī)則創(chuàng)建流程

        設(shè)置完報(bào)警規(guī)則之后, OpenStack會(huì)自動(dòng)去監(jiān)控所創(chuàng)建的Alarm的狀態(tài), 當(dāng)報(bào)警觸發(fā)之后, 會(huì)根據(jù)用戶的設(shè)置發(fā)送相應(yīng)的報(bào)警通知. Web后臺(tái)也會(huì)收到該報(bào)警通知, 在接收到通知之后, Web后端會(huì)將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù), 方便用戶今后查看. 接收?qǐng)?bào)警的流程如圖3所示.

        3.2 功能分析

        根據(jù)3.1節(jié)的流程, 虛擬機(jī)報(bào)警功能主要有以下幾個(gè)子功能的實(shí)現(xiàn): 創(chuàng)建報(bào)警規(guī)則、查詢報(bào)警規(guī)則、更新報(bào)警規(guī)則、刪除報(bào)警規(guī)則、發(fā)送報(bào)警通知、查詢已產(chǎn)生報(bào)警信息.

        為了能夠快速實(shí)現(xiàn)上述功能, 本文的Web后臺(tái)采用Django[7]框架進(jìn)行處理, Django是使用Python編寫(xiě)的一款開(kāi)源的Web框架. 使用Django框架可以簡(jiǎn)便、快速的開(kāi)發(fā)Web應(yīng)用程序, 比較符合本文報(bào)警功能開(kāi)發(fā)的需求.

        圖3 報(bào)警接收流程

        3.3 虛擬機(jī)報(bào)警功能實(shí)現(xiàn)

        根據(jù)3.2節(jié)對(duì)虛擬機(jī)報(bào)警功能的需求分析, 對(duì)應(yīng)每個(gè)功能, 本文將詳述其具體實(shí)現(xiàn), 根據(jù)Django項(xiàng)目的開(kāi)發(fā)流程, 每個(gè)功能都有相對(duì)應(yīng)的url和view, 對(duì)于需要對(duì)數(shù)據(jù)庫(kù)操作的功能, 需要生成對(duì)應(yīng)的model.

        3.3.1 虛擬機(jī)報(bào)警規(guī)則查詢

        該功能主要使用Ceilometer提供的API進(jìn)行Alarm查詢, 將查詢到的信息進(jìn)行過(guò)濾, 最終返回給Web頁(yè)面.用戶的每次請(qǐng)求都會(huì)攜帶自身對(duì)應(yīng)的Token, 因此不必?fù)?dān)心接口會(huì)返回其他用戶創(chuàng)建的報(bào)警規(guī)則. 但是, 由于Threshold和Combination這兩種報(bào)警規(guī)則的存在, 為了屏蔽掉這兩種規(guī)則的差別, 在getAlarmList的實(shí)現(xiàn)中需要過(guò)濾掉Combination中的子規(guī)則.

        3.3.2 虛擬機(jī)報(bào)警規(guī)則創(chuàng)建

        該功能接收用戶傳入的數(shù)據(jù)進(jìn)行Alarm的創(chuàng)建, 用戶對(duì)于Alarm的類型是無(wú)感知的, 用戶只需要考慮需要監(jiān)控虛擬機(jī)的何種性能指標(biāo)便可, 為了在Web上屏蔽掉Threshold和Combination的區(qū)別, 在后臺(tái)的實(shí)現(xiàn)上可以通過(guò)判斷報(bào)警規(guī)則中的監(jiān)控?cái)?shù)據(jù)是否單一來(lái)創(chuàng)建相應(yīng)的Alarm, 核心代碼如下:

        新建報(bào)警時(shí)是針對(duì)某臺(tái)虛擬機(jī), 因此需要使用API中的query字段, 具體數(shù)據(jù)形式如下:

        為了使用Alarm的action功能, 在創(chuàng)建Alarm時(shí), 需要在對(duì)應(yīng)action中添加OpenStack后臺(tái)訪問(wèn)Django的URL地址, OpenStack會(huì)使用REST的形式將數(shù)據(jù)傳送過(guò)來(lái), action的具體形式如下:

        其中email_host在配置文件中設(shè)置, 為該項(xiàng)目的IP地址, email是用戶的郵件地址, instance_name是虛擬機(jī)的名字, user_id為用戶ID, 用戶ID對(duì)于每個(gè)用戶是唯一的, 用于識(shí)別報(bào)警所屬用戶.

        3.3.3 虛擬機(jī)報(bào)警規(guī)則更新和刪除

        該功能在實(shí)現(xiàn)上需要注意的是, 對(duì)于Threshold類型的Alarm, 直接使用OpenStack提供的API進(jìn)行更新和刪除便可. 但是對(duì)于Combination類型的Alarm, 用戶其alarm_id中的Alarm是無(wú)感知的, 在更新功能上實(shí)際是更新Combination的alarm_id中所對(duì)應(yīng)的Threshold類型的Alarm. 在刪除Combination類型的Alarm時(shí), 需要?jiǎng)h除alarm_id中的所有Alarm.

        3.3.4 發(fā)送報(bào)警通知

        該功能有兩個(gè)主要用途, 第一, 提供OpenStack可訪問(wèn)接口, 接收?qǐng)?bào)警信息; 第二, 發(fā)送報(bào)警通知并將報(bào)警信息存入數(shù)據(jù)庫(kù). 由于該功能與數(shù)據(jù)庫(kù)相關(guān), 需要使用Django中的model進(jìn)行數(shù)據(jù)庫(kù)的映射. Django的數(shù)據(jù)庫(kù)映射功能使用十分簡(jiǎn)便, 在model.py文件中添加相關(guān)Model便可.

        Django同樣提供了發(fā)送郵件功能, 使用起來(lái)也同樣十分方便. 首先, 在setting文件中設(shè)置好郵件服務(wù)器,之后, 在需要使用到郵件發(fā)送功能的代碼中直接import django.core.mail中的send_mail模塊后, 便可以使用send_mail方法進(jìn)行郵件的發(fā)送. setting文件的配置如下:

        具體實(shí)現(xiàn)上, 當(dāng)接收到OpenStack的報(bào)警通知, 將報(bào)警信息存入數(shù)據(jù)庫(kù)并給用戶發(fā)送郵件通知即可.

        3.3.5 查詢已產(chǎn)生報(bào)警信息

        該功能主要用于用戶查詢已產(chǎn)生的報(bào)警信息, 使用Django的model可以很方便的查詢到數(shù)據(jù)庫(kù)所存的報(bào)警信息, 核心代碼如下:

        4 結(jié)語(yǔ)

        本文基于OpenStack的Ceilometer實(shí)現(xiàn)了虛擬機(jī)的報(bào)警功能, 并且已經(jīng)應(yīng)用于實(shí)際環(huán)境當(dāng)中. 目前, 該功能能夠正常使用, 達(dá)到了虛擬機(jī)實(shí)時(shí)報(bào)警功能. 但是,由于Ceilometer對(duì)數(shù)據(jù)的收集默認(rèn)是600秒主動(dòng)輪詢一次, 報(bào)警的精度最好設(shè)置在600秒以上. 如果需要更加精細(xì)的報(bào)警, 則需縮短Ceilometer的輪詢間隔, 這勢(shì)必會(huì)增加服務(wù)器的壓力, 有可能會(huì)影響到其它功能的正常運(yùn)行. 如何能夠提高Ceilometer的監(jiān)控精度, 并不給服務(wù)器和數(shù)據(jù)庫(kù)造成太大壓力, 這將是今后研究的主要方向.

        1Bohn RB, Messina J, Liu F, et al. NIST cloud computing reference architecture. 2011 IEEE World Congress on Services (SERVICES). Washington DC, USA. 2011.594–596.

        2Floating IP. OpenStack: High Availability Guide. 2015.

        3Lamourine M. OpenStack. Login: the Magazine of USENIX& SAGE, 2014, 39(3): 17–20.

        4高貴升. 基于OpenStack的計(jì)算云的研究與實(shí)現(xiàn)[碩士學(xué)位論文]. 成都: 成都理工大學(xué), 2012.

        5梁宇, 楊海波, 李鴻彬, 等. 基于OpenStack資源監(jiān)控系統(tǒng). 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2014, 23(4): 44–47, 16.

        6Dongmyoung B, Bumchul L. Analysis of telemetering service in OpenStack. 2015 International Conference on Information and Communication Technology Convergence. Jeju, South Korea. 2015. 272–274.

        7Forcier J, Bissex P, Chun W. Django Web開(kāi)發(fā)指南. 徐旭銘,譯. 北京: 機(jī)械工業(yè)出版社, 2009.

        Design and Implementation of the Operation Based on Ceilometer Alarm API

        LI Chao-Lei, XIANG Zhong-Qing
        (IT Division,WuHan Fiberhome Integrated Information Technology Co.Ltd., Wuhan 430074, China)

        With the continuous development of cloud computing technology, more and more enterprises begin to use OpenStack to build a private cloud or public cloud platform. Cloud platform is gradually replacing the traditional server,to undertake the enterprises and user IT business. In order to guarantee the service quality of the cloud platform, this article designs the interactive operation page of monitoring and alarming function for the virtual machine of cloud platform, based on the OpenStack alarm function interface -- Ceilometer Alarm API. Using this function , users can monitor the running state of the virtual machine, ensuring the reliable operation of the cloud platform.

        cloud computing; Openstack; Ceilometer; alarm

        李超雷,向忠清.基于Ceilometer Alarm API的操作設(shè)計(jì)和實(shí)現(xiàn).計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(7):283–287. http://www.c-s-a.org.cn/1003-3254/5854.html

        2016-11-10; 收到修改稿時(shí)間: 2016-12-12

        猜你喜歡
        輪詢郵件報(bào)警
        基于James的院內(nèi)郵件管理系統(tǒng)的實(shí)現(xiàn)
        基于等概率的ASON業(yè)務(wù)授權(quán)設(shè)計(jì)?
        一封郵件引發(fā)的梅賽德斯反彈
        車迷(2018年12期)2018-07-26 00:42:32
        LKD2-HS型列控中心驅(qū)采不一致報(bào)警處理
        2015款奔馳E180車安全氣囊報(bào)警
        依托站點(diǎn)狀態(tài)的兩級(jí)輪詢控制系統(tǒng)時(shí)延特性分析
        利用時(shí)間輪詢方式操作DDR3實(shí)現(xiàn)多模式下數(shù)據(jù)重排
        死于密室的租住者
        奔馳E260車安全氣囊報(bào)警
        將當(dāng)前郵件快速轉(zhuǎn)發(fā)到QQ群
        電腦迷(2012年21期)2012-04-29 22:16:01
        乱码午夜-极品国产内射| 亚洲成人免费av影院| 国产三级在线观看完整版| 男女下面进入的视频| 国产主播在线 | 中文| 国产伦精品一区二区三区在线| 亚洲黄片av在线播放| 美女av一区二区三区| 精品国产看高清国产毛片| 日本一区二区三区四区在线看| 中文字幕第一页人妻丝袜| 久久天天躁狠狠躁夜夜av| 色偷偷88888欧美精品久久久| 蜜臀av中文人妻系列| 人妻久久一区二区三区| 亚洲综合在线一区二区三区| 成人三级在线| 亚洲视频不卡免费在线| 免费av网站大全亚洲一区| 高潮又爽又无遮挡又免费| 色老头久久综合网老妇女| 人妻少妇粉嫩av专区一| 浓毛老太交欧美老妇热爱乱| 少妇放荡的呻吟干柴烈火动漫| 亚洲阿v天堂2018在线观看| 少妇人妻系列中文在线| 久久99国产精品久久| 亚洲人成网7777777国产| 少妇特殊按摩高潮惨叫无码| 草逼视频免费观看网站| 野外亲子乱子伦视频丶| 日韩高清毛片| 免费人成网在线观看品观网| 亚洲av永久无码精品网站| 欧美丰满熟妇aaaaa片| 成人国产精品免费网站| 在线精品国产亚洲av麻豆| 少妇高潮惨叫久久久久久电影| 欧美a视频在线观看| 久久精品伊人久久精品| 疯狂做受xxxx高潮视频免费|