国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng)①

2017-10-20 03:08劉學敏董科軍
計算機系統(tǒng)應用 2017年10期
關鍵詞:監(jiān)測數(shù)據(jù)數(shù)值可視化

董 博,李 翀,劉學敏,董科軍

(中國科學院 計算機網(wǎng)絡信息中心,北京 100190)

基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng)①

董 博,李 翀,劉學敏,董科軍

(中國科學院 計算機網(wǎng)絡信息中心,北京 100190)

近年來,隨著互聯(lián)網(wǎng)技術的快速發(fā)展,云計算服務開始全面普及,大型互聯(lián)網(wǎng)公司以及中小型企業(yè)已經(jīng)開始提供自己的云計算服務,中國科學院也提供了云計算服務平臺——中科院“科技云”.本文針對中國科學院 “科技云”項目的實際需求,參考已有商業(yè)云監(jiān)控系統(tǒng)的功能和運行模式,設計并實現(xiàn)了一種基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng).該系統(tǒng)相比商業(yè)云監(jiān)控系統(tǒng),支持URL(布爾)類型數(shù)據(jù)監(jiān)測的同時,增加了對數(shù)值類型、文本類型的監(jiān)測,更好的支持第三方服務的監(jiān)測,并實現(xiàn)了服務故障警報,監(jiān)測數(shù)據(jù)可視化以及監(jiān)測數(shù)據(jù)分布式存儲.

數(shù)據(jù)監(jiān)控; 網(wǎng)絡爬蟲; 云計算; 分布式; 可視化

隨著信息技術和互聯(lián)網(wǎng)產(chǎn)業(yè)創(chuàng)新的不斷發(fā)展,以云計算為代表的變革性技術正在迅速的普及,互聯(lián)網(wǎng)進入了大數(shù)據(jù)時代,云計算技術得到了廣泛的應用和快速的發(fā)展.特別是近幾年來,隨著云基礎服務能力的提升,基于云計算的互聯(lián)網(wǎng)輕量級小規(guī)模服務不斷增多,大量的微小服務急需第三方支持的松耦合數(shù)據(jù)監(jiān)控系統(tǒng),進行有效的服務監(jiān)控和提醒[1].

本論文針對中國科學院 “科技云”項目的實際需求,設計并實現(xiàn)了一種基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng).此系統(tǒng)為“科技云”項目所所涵蓋的基礎設施服務、平臺服務、軟件即服務等公開發(fā)布的數(shù)據(jù)及服務狀態(tài),提供有效的服務監(jiān)控和數(shù)據(jù)匯聚.以滿足服務管理人員對服務進行實時監(jiān)控、以及用戶對服務狀況進行了解,并提供科技云服務門戶監(jiān)控服務.

1 研究現(xiàn)狀和相關工作

云計算,是一種基于互聯(lián)網(wǎng)的計算方式,通過此種方式,可以按需把共享的軟硬件資源和信息提供給計算機和其他設備.云計算描述了一種基于互聯(lián)網(wǎng)的新的IT服務增加、使用和交付模式,其通常涉及通過互聯(lián)網(wǎng)來提供動態(tài)易擴展且經(jīng)常是虛擬化的資源[2].

根據(jù)美國國家標準和技術院對云計算服務的定義可明確三種服務模式[3]:Software-as-a-Service(SaaS,軟件即服務)、Platform-as-a-Service(PaaS,平臺即服務)及Infrastructure-as-a-Service(IaaS,基礎設施即服務).如今的云計算服務已經(jīng)非常普及,包括大型互聯(lián)網(wǎng)公司提供的公有云服務、中小型企業(yè)提供的私有云服務等.他們在提供云服務的同時,還提供負責監(jiān)控云服務資源的使用情況、健康狀況等信息的云服務監(jiān)測功能,如大型的云服務提供商Amazon、阿里巴巴、騰訊等都有自己的云服務監(jiān)控系統(tǒng).下面簡單介紹一下以上三個云服務監(jiān)控系統(tǒng):

Amazon CloudWatch 是一項針對 AWS (Amazon web services)云資源和在AWS上運行的應用程序進行監(jiān)控的服務.Amazon CloudWatch 能夠監(jiān)控 Amazon EC2 實例、Amazon DynamoDB 表和 Amazon RDS DB實例等各種AWS資源,同時也能夠監(jiān)控應用程序和服務生成的定制指標,以及應用程序生成的任何日志文件[4].

阿里云監(jiān)控是一項針對阿里云資源和互聯(lián)網(wǎng)應用進行監(jiān)控的服務.云監(jiān)控服務可用于收集獲取阿里云資源的監(jiān)控指標,探測互聯(lián)網(wǎng)服務可用性,以及針對指標設置警報.阿里云監(jiān)控服務能夠監(jiān)控云服務ECS、云數(shù)據(jù)庫RDS和負載均衡等各種云服務資源,同時也能夠通過HTTP、CMP等通用網(wǎng)絡協(xié)議監(jiān)控互聯(lián)網(wǎng)應用的可用性[5].

騰訊云監(jiān)控為騰訊云服務提供全方位監(jiān)控,借助于騰訊海量數(shù)據(jù)處理能力能夠?qū)τ谫Y源及成本進行智能化的分析,直觀展示各種云服務的資源使用狀況、負載狀況性能及系統(tǒng)健康狀況等[6].

以上公有云服務平臺提供的云監(jiān)控服務,存在以下兩個方面的缺陷:

(1)以企業(yè)自有的公有云服務為出發(fā)點.例如阿里云監(jiān)控主要針對阿里ECS等主機服務提供詳細的云監(jiān)控服務,依賴于具體主機所提供的內(nèi)部接口服務.例如主機安全監(jiān)控服務、網(wǎng)絡流量監(jiān)控服務等.

(2)針對第三方的監(jiān)控服務類型有限.例如對于外部的第三方服務,阿里云只能提供URL服務正常率訪問監(jiān)測等服務,利用分布式站點來實現(xiàn)對第三方端口服務的定期探測,為第三方服務提供服務故障郵件等提醒通知.但是沒有提供文本類型數(shù)據(jù)和數(shù)值類型數(shù)據(jù)的監(jiān)測功能.

通過對以上云監(jiān)控系統(tǒng)的分析可知,目前還沒有一款能夠友好全面支持第三方服務的云監(jiān)控系統(tǒng).根據(jù)中科院“科技云”的實際需求,在能夠定期監(jiān)測服務健康率的同時,還需實現(xiàn)對文本類型和數(shù)值類型數(shù)據(jù)的監(jiān)測功能,因此在已有商業(yè)云服務監(jiān)控系統(tǒng)的功能和運行模式,本課題增加了基于文本類型數(shù)據(jù)和數(shù)值類型數(shù)據(jù)的監(jiān)測方法,并對云服務資源和監(jiān)控系統(tǒng)之間進行解耦,使其能夠友好地支持第三方服務監(jiān)控,同時滿足對中科院“科技云”云服務的監(jiān)控.

本文參考阿里云監(jiān)控等已有商業(yè)云服務監(jiān)控系統(tǒng)的功能和運行模式,結合中科院“科技云”的實際需求,設計并實現(xiàn)了一種基于爬蟲的數(shù)據(jù)監(jiān)控平臺.

2 系統(tǒng)架構設計

根據(jù)中國科學院科技云服務監(jiān)控需求,科技云服務監(jiān)控的類型劃分為以下三種類型:文本類型數(shù)據(jù)監(jiān)控、數(shù)值類型數(shù)據(jù)監(jiān)控以及布爾類型數(shù)據(jù)監(jiān)控(URL類型數(shù)據(jù)監(jiān)控).其中URL類型數(shù)據(jù)指傳統(tǒng)的服務可用性監(jiān)控,通常每次監(jiān)控為布爾值數(shù)據(jù),即 0或 1; 數(shù)值類型的數(shù)據(jù)指具體以浮點類型所監(jiān)控到的數(shù)據(jù),例如某項服務的數(shù)據(jù)值等; 文本類型數(shù)據(jù)為字符串類型,每種類型的文本類型數(shù)據(jù)可自定義解析代碼,在后期進行數(shù)據(jù)解析、處理和可視化.

根據(jù)每種數(shù)據(jù)類型的特點和網(wǎng)絡爬蟲技術,分別實現(xiàn)對相應數(shù)據(jù)的爬取; 并為方便服務管理人員和用戶快速聚焦到關注的服務和數(shù)據(jù)上,而實現(xiàn)了數(shù)據(jù)的可視化,以及發(fā)生故障的報警.系統(tǒng)設計主要分為數(shù)據(jù)獲取層、數(shù)據(jù)存儲層及數(shù)據(jù)訪問層三部分,整體架構圖如圖1所示.

數(shù)據(jù)獲取層通過爬蟲引擎和相應的適配器獲取各類資源數(shù)據(jù),然后按照對應的時間單位 (例如:分鐘,小時,天等)拼接成JSON字符串,每次爬取都會生成一個JSON字符串.把JSON數(shù)據(jù)傳輸?shù)綌?shù)據(jù)存儲層,通過Cobar中間件交由分布式MySQL數(shù)據(jù)庫進行存儲.當數(shù)據(jù)訪問層訪問數(shù)據(jù)時,直接從數(shù)據(jù)存儲層拉取對應的JSON數(shù)據(jù)并解析,對解析出來的數(shù)據(jù)進行可視化或者提供給接口訪問等.為了方便對數(shù)據(jù)的處理,這三個模塊之間統(tǒng)一利用JSON數(shù)據(jù)作為傳輸手段,省去了各模塊之間傳輸數(shù)據(jù)不一致造成的麻煩.

圖1 系統(tǒng)總體框圖

2.1 數(shù)據(jù)獲取層

數(shù)據(jù)獲取層主要實現(xiàn)用戶定制監(jiān)測項、服務器定時監(jiān)測指定監(jiān)測項并爬取監(jiān)測項數(shù)據(jù).根據(jù)監(jiān)測的數(shù)據(jù)類型,分別利用不同適配器進行監(jiān)測和爬取數(shù)據(jù).適配器主要分為布爾類型、數(shù)值類型、文本類型以及數(shù)據(jù)庫爬取等類型.

布爾類型適配器通過http協(xié)議訪問[7],定時探測URL 地址,分為 GET、POST、HEAD 訪問,根據(jù)訪問獲取的狀態(tài)碼和響應時間判斷監(jiān)控對象是否能夠正常訪問,然后將其轉換成布爾值并存儲.監(jiān)測數(shù)值類型與文本類型數(shù)據(jù)的方法相一致,都是通過URL地址去訪問被監(jiān)測對象的接口[8],兩者利用相同的適配器爬取其中的數(shù)據(jù),然后在后臺分析數(shù)據(jù)所屬類型,并進行相應的存儲.數(shù)據(jù)庫爬取適配器即根據(jù)用戶的數(shù)據(jù)庫配置信息連接遠程數(shù)據(jù)庫,從中爬取數(shù)據(jù),并根據(jù)分析數(shù)據(jù)的所屬類型進行存儲.

2.2 數(shù)據(jù)存儲層

數(shù)據(jù)存儲層主要實現(xiàn)對監(jiān)測數(shù)據(jù)的存儲和查詢.由于單節(jié)點數(shù)據(jù)庫無法滿足對大量監(jiān)測數(shù)據(jù)的存取,且對服務器的性能要求較高,因此本系統(tǒng)數(shù)據(jù)存儲層采用分布式數(shù)據(jù)庫存儲技術[9].分布式數(shù)據(jù)庫對網(wǎng)絡中各結點計算機配置要求不高,同時提高了系統(tǒng)的可靠性,再者其非常便于擴充[10].

本系統(tǒng)的分布式數(shù)據(jù)庫將數(shù)據(jù)表進行水平拆分,均衡地分配給各個數(shù)據(jù)庫結點,然后利用中間件來管理各個數(shù)據(jù)庫結點,并將其作為應用層訪問數(shù)據(jù)庫的統(tǒng)一接口.如圖2所示.

圖2 數(shù)據(jù)存儲層架構

2.3 數(shù)據(jù)訪問層

數(shù)據(jù)訪問層包括接口封裝和訪問、可視化與展示、故障報警.

接口封裝和訪問,是提供給用戶的公共URL訪問接口.接口模塊有兩種用途:第一,用于供用戶訪問并獲取監(jiān)測的數(shù)據(jù).用戶可以通過URL請求,訪問指定監(jiān)測對象的監(jiān)測數(shù)據(jù),數(shù)據(jù)以統(tǒng)一的JSON格式展現(xiàn),支持三種數(shù)據(jù)類型的數(shù)據(jù).第二,用于給可視化模塊提供接口訪問,完成數(shù)據(jù)的可視化,數(shù)據(jù)格式的統(tǒng)一,為數(shù)據(jù)可視化提供很大的便利; 可視化模塊通過訪問對應的接口,利用統(tǒng)一的解析方法對數(shù)據(jù)進行解析,最終可視化出相應的圖表.

3 數(shù)據(jù)爬取與統(tǒng)計策略

本監(jiān)控系統(tǒng)的監(jiān)控流程為:用戶定制監(jiān)測項(包括監(jiān)測時間粒度、監(jiān)測地址、數(shù)據(jù)庫配置信息等)、服務器提取監(jiān)測項配置信息并按照配置進行定時監(jiān)測、服務器把監(jiān)測數(shù)據(jù)持久化、用戶通過系統(tǒng)提供的接口查看監(jiān)測數(shù)據(jù)以及對監(jiān)測數(shù)據(jù)進行可視化.

本系統(tǒng)支持多類型數(shù)據(jù)的監(jiān)測,包括URL探測、對象接口以及DB的爬取.監(jiān)測不同類型的數(shù)據(jù)需要實現(xiàn)不同的適配器,且需要在同樣的任務調(diào)度邏輯中進行,因此抽取共有的任務調(diào)度邏輯聲明為接口job,其中調(diào)度方法為call().不同類型數(shù)據(jù)的適配器通過實現(xiàn)job中的call()方法完成不同的監(jiān)測邏輯,且共用一致的調(diào)度邏輯,這樣任務調(diào)度不用關心每種類型監(jiān)測項的監(jiān)測邏輯的具體實現(xiàn),只需執(zhí)行接口job中的call()方法即可.如圖3所示.

圖3 任務調(diào)度架構

3.1 數(shù)據(jù)爬取策略

本平臺通過爬取不同類型的數(shù)據(jù)實現(xiàn)對各類云服務的監(jiān)控.數(shù)據(jù)類型有文本類型、數(shù)值類型、以及布爾類型數(shù)據(jù),爬取不同類型數(shù)據(jù)需要不同的適配器,不同適配器的實現(xiàn)方式包括通過HTTP協(xié)議的GET、POST、HEAD請求訪問監(jiān)控對象,爬取監(jiān)控對象的接口,直接爬取監(jiān)控對象數(shù)據(jù)庫等方式.如圖4所示.

圖4 爬取策略

根據(jù)GET、POST、HEAD請求訪問服務器,監(jiān)測服務器響應時間、狀態(tài)碼等數(shù)據(jù),并根據(jù)以上數(shù)據(jù)判斷服務是否能夠正常訪問,此類數(shù)據(jù)歸為布爾類型數(shù)據(jù),即用1、0分別表示服務正常與否,主要用來監(jiān)測云服務的健康度,這也是主流的監(jiān)控系統(tǒng)所具備的通用功能,如阿里云監(jiān)控、騰訊云監(jiān)控等.

爬取數(shù)據(jù)庫是通過服務器端直接訪問監(jiān)測對象數(shù)據(jù)庫,并利用用戶設置的SQL語句直接查詢監(jiān)測對象的數(shù)據(jù)庫,并把數(shù)據(jù)存儲到監(jiān)控系統(tǒng)中,由于數(shù)據(jù)庫中存儲著多種類型的數(shù)據(jù),包括文本類型、數(shù)值類型等,不能把爬取的數(shù)據(jù)統(tǒng)一歸為某一數(shù)據(jù)類型,必須對爬取的數(shù)據(jù)進行解析并判斷所屬類型,然后存儲至相應的數(shù)據(jù)庫或表中.

爬取監(jiān)控對象接口是通過訪問監(jiān)控對象提供的接口獲取數(shù)據(jù).服務提供的數(shù)據(jù)接口主要以JSON數(shù)據(jù)返回,但是直接將JSON數(shù)據(jù)存儲到監(jiān)控系統(tǒng)中無法從中挖掘到監(jiān)控信息,必須對JSON數(shù)據(jù)進行解析,從而獲取有價值的數(shù)據(jù),并分辨出數(shù)據(jù)類型,然后把數(shù)據(jù)存儲至對應的數(shù)據(jù)庫或表中,供監(jiān)控系統(tǒng)分析監(jiān)控對象的狀況.

數(shù)據(jù)的爬取策略主要目的是通過對爬取到的各類型數(shù)據(jù)進行統(tǒng)一的解析、過濾,從中挖掘出有價值的數(shù)據(jù),并按照對應的類型存儲至相應的數(shù)據(jù)庫或表中.通過對數(shù)據(jù)進行統(tǒng)一地處理、存儲,大大降低了監(jiān)控系統(tǒng)對監(jiān)測對象數(shù)據(jù)分析的難度,監(jiān)控系統(tǒng)只需從數(shù)據(jù)庫提取數(shù)據(jù),并對數(shù)值類型、文本類型、布爾類型這三種數(shù)據(jù)進行處理分析即可,而無需關心數(shù)據(jù)的來源.此外,接口訪問模塊只需提供這三類數(shù)據(jù)接口,同時可視化只要針對這三種類型數(shù)據(jù)進行可視化.數(shù)據(jù)的爬取策略從整體上減少了各模塊的耦合,降低了開發(fā)成本.

以下是爬取的三類數(shù)據(jù)示例:

(1)該類數(shù)據(jù)中只有單純的數(shù)值,這類數(shù)據(jù)歸為數(shù)值類型數(shù)據(jù).

(2)這類數(shù)據(jù)中除了數(shù)值數(shù)據(jù)外,還有其它文本數(shù)據(jù),不能對其進行統(tǒng)一的解析,必須為其實現(xiàn)單獨的解析策略,因此將其歸為文本類型數(shù)據(jù).

(3)該類數(shù)據(jù)是通過http協(xié)議訪問URL地址獲取的數(shù)據(jù),用來監(jiān)測服務是否正常,其中health表示服務是否正常(1表示正常),avgReponseTime表示響應時間,該類數(shù)據(jù)歸為URL監(jiān)測數(shù)據(jù),即布爾類型數(shù)據(jù).

3.2 數(shù)據(jù)統(tǒng)計策略

本系統(tǒng)主要爬取三種類型數(shù)據(jù),因此存儲時需對三類數(shù)據(jù)進行分別存儲,同時為方便對三類監(jiān)測數(shù)據(jù)進行訪問以及可視化,需對這些數(shù)據(jù)分別進行統(tǒng)計,以此滿足系統(tǒng)的需求.

監(jiān)控系統(tǒng)爬取的數(shù)據(jù)是以用戶或管理人員配置監(jiān)測項的時間粒度為單位,以五分鐘、十分鐘、三十分鐘或者一個小時等為時間間隔,每個監(jiān)測項的時間粒度不一定一致,但為方便數(shù)據(jù)的統(tǒng)計以及可視化,需要統(tǒng)一這些監(jiān)測數(shù)據(jù)的統(tǒng)計單位,例如,全部轉換為以天、周或者月等為單位的監(jiān)測數(shù)據(jù),這樣將極大地簡化后續(xù)的數(shù)據(jù)統(tǒng)計及可視化.本系統(tǒng)采用的統(tǒng)計單位為天,即把各個監(jiān)測數(shù)據(jù)最終按天進行統(tǒng)計存儲.

爬取的數(shù)據(jù)類型不同,統(tǒng)一統(tǒng)計單位時所用的策略也就不同,下面對布爾類型數(shù)據(jù)和數(shù)值類型數(shù)據(jù)的統(tǒng)計策略進行簡單介紹.

(1)布爾類型數(shù)據(jù),其數(shù)據(jù)內(nèi)容主要由1、0組成,其代表所監(jiān)測的服務健康與否.監(jiān)測的時間粒度一般為一小時以內(nèi),但按此時間粒度為單位進行統(tǒng)計,統(tǒng)計的數(shù)據(jù)偶然性較大且統(tǒng)計單位過小,不利于從大范圍觀察服務一段時間內(nèi)的整體運行情況.

布爾類型數(shù)據(jù)按天為單位進行統(tǒng)計時,云服務管理人員和用戶關心的是云服務一天的健康情況,即一天內(nèi)服務正常運行所在的比率——健康率,因此我們計算一天內(nèi)服務正常的次數(shù)與上一天的監(jiān)測次數(shù)的比值,算出一天的健康率.

(2)數(shù)值類型數(shù)據(jù),其數(shù)據(jù)內(nèi)容為整型或浮點型數(shù)據(jù),其通常表示一些服務的注冊人數(shù)、登錄人數(shù)、資源使用率等情況.

數(shù)值類型數(shù)據(jù)按天為單位統(tǒng)計時,服務管理人員或用戶關心的是服務在一天內(nèi)增加的個數(shù)、峰值、最小值等信息.關注的是某個點的數(shù)據(jù),而不是比率數(shù)據(jù),因此統(tǒng)計數(shù)值類型數(shù)據(jù)時,主要統(tǒng)計一天內(nèi)最后監(jiān)測的值、最大值以及最小值等數(shù)據(jù).

4 數(shù)據(jù)訪問與可視化

4.1 數(shù)據(jù)訪問

數(shù)據(jù)訪問通過接口訪問模塊進行,接口訪問模塊主要供用戶獲取監(jiān)測數(shù)據(jù),以及給可視化提供數(shù)據(jù)來源.本平臺通過對監(jiān)測數(shù)據(jù)進行處理、解析、格式化,最終轉換為統(tǒng)一的JSON格式.系統(tǒng)對每種類型的監(jiān)測數(shù)據(jù)進行單獨的解析,抽取出對應的關鍵數(shù)據(jù),并把這些數(shù)據(jù)拼接成統(tǒng)一格式的JSON數(shù)據(jù),返回給訪問者,這樣極大地簡化了解析通過接口獲取監(jiān)測數(shù)據(jù)的過程.

通過上一章可知,系統(tǒng)會對爬取的數(shù)據(jù)進行統(tǒng)計.系統(tǒng)會在每天凌晨一點對前一天的布爾類型、數(shù)值類型及文本類型三類數(shù)據(jù)按不同邏輯進行統(tǒng)計,并把實時的監(jiān)測數(shù)據(jù)和統(tǒng)計的監(jiān)測數(shù)據(jù)分開存儲至數(shù)據(jù)庫中.這樣當訪問統(tǒng)計結果時不用臨時計算,而是直接從數(shù)據(jù)庫中查詢即可.

對于布爾類型、數(shù)值類型及文本類型這三類數(shù)據(jù),系統(tǒng)提供了基于JSON的數(shù)據(jù)訪問方式,并提供了基于標準數(shù)據(jù)訪問的可視化訪問.用戶通過URL地址訪問系統(tǒng)接口來進行數(shù)據(jù)訪問和可視化,分別通過以下幾種方式進行訪問(productName為產(chǎn)品名稱、collector-Name為監(jiān)測項名稱):

(1)最新數(shù)據(jù)訪問

訪問最新數(shù)據(jù)時,系統(tǒng)會從數(shù)據(jù)庫中查詢存放實時監(jiān)測數(shù)據(jù)的數(shù)據(jù)表,查詢出距訪問時間最近的一次監(jiān)測數(shù)據(jù),系統(tǒng)將查詢結果拼接成JSON數(shù)據(jù)返回給訪問者.因為三種類型的監(jiān)測數(shù)據(jù)存儲在不同的數(shù)據(jù)表中,所以通過發(fā)送不同的URL請求進行訪問.

目前,企業(yè)文化受到了企業(yè)管理者的高度重視,具體是從和諧、發(fā)展、利益角度進行規(guī)范。在財務管理方面的文化構建還是較少的,中小企業(yè)必須要從這方面進行完善。企業(yè)文化指導財務管理制度的制定,主要是因為財務管理是企業(yè)的核心,同時企業(yè)文化需要財務管理作為介質(zhì)進行體現(xiàn)。企業(yè)經(jīng)營的目的是收益最大化,而財務管理恰恰是有效的控制和計算該目的的工具。企業(yè)能否正常經(jīng)營并得到高效的回報,取決于正確的準則和精神指導,這樣才能加強員工之間的交流合作,為企業(yè)創(chuàng)造更多的經(jīng)濟效益[4]。

http://{hostname}/probe/api/data/{productName}/{c ollectorName},訪問最新數(shù)值和文本類型數(shù)據(jù);http://{hostname}/probe/api/url/{productName}/{collecto rName},訪問最新布爾類型數(shù)據(jù),如下所示:

獲取最新的數(shù)據(jù)類型數(shù)據(jù),其中watchTime是這條數(shù)據(jù)的獲取時間,data字段是監(jiān)控值.

(2)統(tǒng)計數(shù)據(jù)訪問

用戶可訪問最近n天、n月或者n年的統(tǒng)計數(shù)據(jù).系統(tǒng)把各類統(tǒng)計數(shù)據(jù)存放在單獨的數(shù)據(jù)表中,本系統(tǒng)只存儲以天為單位的統(tǒng)計數(shù)據(jù).當用戶訪問統(tǒng)計數(shù)據(jù)時,系統(tǒng)通過解析URL地址判斷訪問的數(shù)據(jù)類型,并判斷訪問統(tǒng)計數(shù)據(jù)的計量單位(天、月、年等).若以天為單位進行訪問,系統(tǒng)直接根據(jù)URL中指定的天數(shù),從存放統(tǒng)計數(shù)據(jù)的表中查詢最近的n天數(shù)據(jù); 若按月或者年為單位進行訪問時,系統(tǒng)依然從存放統(tǒng)計數(shù)據(jù)的表中查詢,由于表中只存放以天為單位的統(tǒng)計數(shù)據(jù),因此系統(tǒng)需對查詢的統(tǒng)計數(shù)據(jù)進行計算,并把結果拼接成JSON數(shù)據(jù)返回給用戶.

不同類型的數(shù)據(jù),其計算方式不同.如上一章所述,若為布爾類型數(shù)據(jù),對查詢的最近n月或者n年數(shù)據(jù)按時間段求平均值; 若為數(shù)值類型或文本類型,則查詢最近n月或者n年的數(shù)據(jù)中每個時間段的最后的監(jiān)測數(shù)據(jù),或者最大值、最小值等數(shù)據(jù).

http://{hostname}/probe/api/stats/{productName}/{c ollectorName}?[day|month|year]=value,訪問最近一段時間的監(jiān)測數(shù)據(jù),其中參數(shù)“day|month|year”表示“天|月|年”為單位,例如day=30表示之前30天的數(shù)值統(tǒng)計.如下所示:

獲取監(jiān)測項最近5天的統(tǒng)計數(shù)據(jù),data中的五組數(shù)據(jù)為每天的統(tǒng)計結果.

4.2 可視化

布爾類型數(shù)據(jù)主要展示一個服務的正常率,反映一個網(wǎng)站或服務近期的健康狀態(tài),為用戶維護網(wǎng)站或服務提供參考.監(jiān)控系統(tǒng)對每個監(jiān)控對象的監(jiān)測數(shù)據(jù)(主要包括狀態(tài)碼,響應時間等)進行統(tǒng)計,計算出監(jiān)控對象每天、每周、每月、每年等不同時間粒度的服務正常率,即對監(jiān)測數(shù)據(jù)按不同時間粒度求平均值.該值通過訪問系統(tǒng)的統(tǒng)計數(shù)據(jù)接口獲得,然后結合時間粒度的數(shù)據(jù),組成坐標軸中的X軸、Y軸(平均值為Y軸,時間粒度為X軸),通過折線圖、柱狀圖等形式可視化,以此反映最近一段時間內(nèi)不同時間粒度下的服務正常率.

數(shù)值類型數(shù)據(jù)的可視化主要是展示一些隨著時間變化、且對用戶有參考價值的數(shù)值數(shù)據(jù)或者展示某一類資源的實時狀態(tài).數(shù)值類型數(shù)據(jù)的可視化由二維數(shù)據(jù)構成,其中X 軸為一組數(shù)據(jù),Y軸為一組數(shù)據(jù),通過折線圖或者柱狀圖展示兩者之間的關系.例如,注冊用戶數(shù)、網(wǎng)站訪問量、服務器資源利用率、超級計算機的作業(yè)數(shù)量等都是數(shù)值類型數(shù)據(jù)的可視化.

通過該 URL 地址,http://{hostname}/probe/api/chart/{productName}/{collectorName},訪問監(jiān)測對象的可視化結果,圖5為某布爾類型數(shù)據(jù)的可視化結果.

5 系統(tǒng)實現(xiàn)與應用

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

本監(jiān)控系統(tǒng)基于Spring MVC框架,利用分布式數(shù)據(jù)庫存儲服務監(jiān)測項以及服務監(jiān)測數(shù)據(jù),采用Spring中集成的Quartz——開源作業(yè)調(diào)度框架實現(xiàn)服務平臺的定時任務功能,借用Echarts——純Javascript的圖表庫,設計并實現(xiàn)監(jiān)測數(shù)據(jù)的可視化.

數(shù)據(jù)訪問層利用Spring MVC框架實現(xiàn).Spring MVC框架是一個基于驅(qū)動的MVC框架,通過實現(xiàn)Model-View-Controller模式很好的將數(shù)據(jù)、業(yè)務與展現(xiàn)進行分離.用戶在視圖層可以配置監(jiān)測對象信息,在模型層進行任務調(diào)度、數(shù)據(jù)爬取以及存儲邏輯.

數(shù)據(jù)爬取通過定時執(zhí)行多種適配器來爬取監(jiān)測數(shù)據(jù),本系統(tǒng)利用Quartz來實現(xiàn)任務調(diào)度和定時任務.Quartz是OpenSymphony開源組織在Job scheduling領域的一個開源項目,其開源作業(yè)調(diào)度框架完全由java編寫,它可以與J2EE和J2SE應用程序相結合也可以單獨使用.Quartz具有很大的靈活性而又不失簡單性,用戶可以通過它來為一個作業(yè)創(chuàng)建簡單的或復雜的調(diào)度[11].

數(shù)據(jù)存儲層利用分布式數(shù)據(jù)庫存儲數(shù)據(jù).本系統(tǒng)的分布式數(shù)據(jù)庫由Cobar中間件和多個MySQL數(shù)據(jù)庫實例組成.

Cobar是Alibaba開源的MySQL分布式處理中間件,是阿里巴巴B2B前臺應用訪問數(shù)據(jù)庫的統(tǒng)一入口[12],它可以在分布式的環(huán)境下像傳統(tǒng)數(shù)據(jù)庫一樣提供海量數(shù)據(jù)服務.Cobar支持將一張表水平拆分成多份并分別放入不同的庫,以此實現(xiàn)表的水平拆分,也支持將不同的表放入不同的庫.本系統(tǒng)主要使用第一種方式,將監(jiān)測數(shù)據(jù)表進行水平拆分,均衡地分配到每個數(shù)據(jù)庫實例中,每個數(shù)據(jù)庫中保存被分配的數(shù)據(jù)分片,以及其他數(shù)據(jù)分片的備份,在保證高性能的同時提高穩(wěn)定性.

應用層通過Cobar進行數(shù)據(jù)訪問,Cobar根據(jù)解析收到的SQL語句,判斷該語句所涉及的數(shù)據(jù)分布在哪些分庫上,然后分發(fā)到各個分庫執(zhí)行,Cobar將分庫的執(zhí)行結果進行合并、處理,最后返回給應用層.

可視化模塊通過百度的Echarts——純Javascript的圖表庫實現(xiàn),此圖表庫可以流暢的運行在PC和移動端,兼容當前主流瀏覽器 (IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴輕量級的 Canvas類庫 ZRender,提供直觀、生動、可交互、可高度個性化定制的數(shù)據(jù)可視化圖表.

本系統(tǒng)將Echarts集成到系統(tǒng)中,并基于Echarts實現(xiàn)更多的定制功能,讓其在同一表中實現(xiàn)對多種時間粒度的可視化,并可任意切換.如圖5所示可同時對以日、周、月、年為時間粒度進行可視化.

5.2 應用

目前,本監(jiān)控系統(tǒng)已部署在服務器上并應用于中科院科技云中,用戶可以根據(jù)配置信息定時監(jiān)控科技云的用戶數(shù)據(jù)、服務資源利用率、服務健康率等數(shù)據(jù).服務管理人員和用戶可以通過監(jiān)控系統(tǒng)定制監(jiān)控對象,監(jiān)控時間粒度來監(jiān)測關注的服務.該系統(tǒng)除監(jiān)控科技云服務外,可對第三方服務進行監(jiān)控,用戶只需正確配置監(jiān)控對象信息,系統(tǒng)便可執(zhí)行監(jiān)控,實現(xiàn)了對布爾類型、數(shù)值類型、文本類型的監(jiān)控.本監(jiān)控系統(tǒng)除可用于中科院科技云監(jiān)控外,也可作為企業(yè)和公司內(nèi)部私有云的監(jiān)控系統(tǒng).

圖6列出了中科院“科技云”托管的云服務的運行情況.可視化出了各個服務每天的健康運行情況.

圖5 監(jiān)測對象可視化結果

圖6 服務資源使用情況

圖7和圖8是中科院計算機網(wǎng)絡信息中心下超級計算機中的作業(yè)運行情況和資源利用率等信息,包含了中科院內(nèi)一些研究所利用超級計算機的情況.圖9和圖10是中科院“科技云”下團隊文檔庫的.團隊文檔庫是計算機網(wǎng)絡信息中心對外提供的團隊協(xié)作服務,圖中分別列出了團隊文檔庫的月活躍用戶數(shù)和日訪問量.

圖7 超級計算機作業(yè)運行情況

圖8 超級計算機資源使用情況

圖9 團隊文檔庫月活躍用戶

圖10 團隊文檔庫日訪問量

6 結語

本文根據(jù)中科院科技云的實際情況,基于網(wǎng)絡爬蟲技術設計并實現(xiàn)了數(shù)據(jù)監(jiān)控系統(tǒng).結合科技云的服務和數(shù)據(jù)的特點,重點設計了數(shù)據(jù)爬取和統(tǒng)計策略、監(jiān)控和存取邏輯,以適應對多種類型數(shù)據(jù)的爬取和存儲; 同時,為保證服務正常、高效地運行,設計和實現(xiàn)了對數(shù)據(jù)的可視化以及故障報警功能.該系統(tǒng)兼容多類型數(shù)據(jù)的爬取,具備可定制性強、可視化界面簡潔重點突出、實時故障報警等特點,能夠滿足服務管理人員和用戶對科技云服務監(jiān)控的需求.

1Aceto G,Botta A,DE Donato W,et al.Cloud monitoring:A survey.Computer Networks,2013,57(9):2093–2115.[doi:10.1016/j.comnet.2013.04.001]

2Armbrust M,Fox A,Griffith R,et al.A view of cloud computing.Communications of the ACM,2010,53(4):50–58.[doi:10.1145/1721654]

3Mell P,Grance T.The NIST definition of cloud computing.Communications of the ACM,2010,53(6):50–50.

4Varia J,Mathew S.Overview of amazon web services.Amazon Web Services,2014.

5云監(jiān)控.http://www.aliyun.com/product/jiankong/.

6基礎監(jiān)控 BCM.https://www.qcloud.com/product/cm.html#wiki.

7劉繼紅,吳軍華,任明鑫.基于改進的網(wǎng)絡蜘蛛算法抽取Web站點結構的方法.江南大學學報(自然科學版),2009,8(5):555–559.

8徐遠超,劉江華,劉麗珍,等.基于 Web 的網(wǎng)絡爬蟲的設計與實現(xiàn).微計算機信息,2007,23(21):119–121.[doi:10.3969/j.issn.1008-0570.2007.21.048]

9邵佩英.分布式數(shù)據(jù)庫系統(tǒng)及其應用.北京:科學出版社,2000.

10龐惠,翟正利.論分布式數(shù)據(jù)庫.電腦知識與技術,2011,7(2):271–273.

11胡利強,周冬初,王偉.Quartz 調(diào)度器與 Web 程序整合的研究和應用.計算機與現(xiàn)代化,2010,(8):98–99,104.

Spider-Based Data Monitor System

DONG Bo,LI Chong,LIU Xue-Min,DONG Ke-Jun

(Computer Network Information Center,Chinese Academy of Sciences,Beijing 100190,China)

In recent years,with the rapid development of Internet technology,cloud computing services begin to widely spread.Large-scale Internet companies,small and medium enterprises have begun to provide their own cloud computing services.The Chinese Academy of Sciences also provides a cloud computing service platform - CAS “science-cloud”.Concerned with the actual needs of the “Science Cloud” project of the Chinese Academy of Sciences,this paper designs and implements a spider-based data monitoring system referencing the function and operation mode of the existing commercial cloud monitoring systems.Compared with the commercial cloud monitoring system,this system supports the monitoring of URL (Boolean)type data,adds the monitoring of numeric types and text types,supports better monitoring of the third party services,and realizes service failure alarm and monitoring data Visualization and monitoring data distributed storage.

data monitor; web crawler; cloud computing; distributed; visualization

董博,李翀,劉學敏,董科軍.基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng).計算機系統(tǒng)應用,2017,26(10):53–60.http://www.c-s-a.org.cn/1003-3254/5978.html

中國科學院十二五信息化專項《科研信息化應用推進工程》(XXH12503)

2017-01-10; 采用時間:2017-02-13

猜你喜歡
監(jiān)測數(shù)據(jù)數(shù)值可視化
基于CiteSpace的足三里穴研究可視化分析
自然資源可視化決策系統(tǒng)
思維可視化
體積占比不同的組合式石蠟相變傳熱數(shù)值模擬
數(shù)值大小比較“招招鮮”
自然資源可視化決策系統(tǒng)
艦船測風傳感器安裝位置數(shù)值仿真
鋁合金加筋板焊接溫度場和殘余應力數(shù)值模擬
淺談環(huán)境監(jiān)測垂直管理的優(yōu)勢
環(huán)保驗收監(jiān)測異常數(shù)據(jù)的分析與處理探討