□ 王莉 郝春云/中國(guó)科學(xué)技術(shù)信息研究所 北京 100038
劉玉海/北京九瑞網(wǎng)絡(luò)科技有限公司 北京 100101
NSTL全國(guó)服務(wù)體系監(jiān)測(cè)平臺(tái)的構(gòu)建策略和關(guān)鍵技術(shù)*
□ 王莉 郝春云/中國(guó)科學(xué)技術(shù)信息研究所 北京 100038
劉玉海/北京九瑞網(wǎng)絡(luò)科技有限公司 北京 100101
文章提出NSTL全國(guó)服務(wù)體系監(jiān)測(cè)平臺(tái)的構(gòu)建策略,包括監(jiān)測(cè)指標(biāo)、三級(jí)監(jiān)測(cè)體系,以及從數(shù)據(jù)收集、跟蹤、告警到存儲(chǔ)的核心業(yè)務(wù)邏輯分析,對(duì)Shell編程、JMX框架、數(shù)據(jù)存儲(chǔ)和報(bào)警機(jī)制等關(guān)鍵技術(shù)進(jìn)行了描述。
NSTL監(jiān)測(cè)平臺(tái),Shell編程,JMX框架,報(bào)警機(jī)制
國(guó)家科技圖書文獻(xiàn)中心(以下簡(jiǎn)稱中心)經(jīng)過(guò)十余年的發(fā)展,已經(jīng)建成國(guó)內(nèi)最大的公益性、普惠性科技文獻(xiàn)信息資源保障與服務(wù)系統(tǒng),并且通過(guò)地方建站、本地嵌入、接口、知識(shí)庫(kù)以及集成揭示等多種方式輻射全國(guó),形成既滿足終端用戶信息需求,又支持第三方科技信息機(jī)構(gòu)的全國(guó)服務(wù)體系架構(gòu)[1]。截至2012年年底,中心正式開(kāi)通服務(wù)站41個(gè),用戶管理平臺(tái)19個(gè),覆蓋全國(guó)除港澳臺(tái)外的34個(gè)省市自治區(qū)[2]。這些已經(jīng)開(kāi)通的區(qū)域性站點(diǎn)究竟有沒(méi)有達(dá)到預(yù)期的目的和效果?已經(jīng)購(gòu)買的資源對(duì)用戶的價(jià)值到底有多大?隨著服務(wù)規(guī)模的擴(kuò)大,監(jiān)測(cè)和評(píng)價(jià)的重要性日益突出。在這一背景下,2012年中心啟動(dòng)了全國(guó)服務(wù)體系監(jiān)測(cè)項(xiàng)目,旨在對(duì)中心主站和全國(guó)站點(diǎn)展開(kāi)服務(wù)性能和服務(wù)效果的全面監(jiān)測(cè),作為考量中心政策措施延續(xù)、改進(jìn)和終止的重要依據(jù)。
對(duì)服務(wù)性能和效果的監(jiān)測(cè)屬于數(shù)字圖書館績(jī)效評(píng)估的范疇,也一直是業(yè)界研究的熱點(diǎn)問(wèn)題。相關(guān)研究從早期偏重于投入逐漸發(fā)展到以用戶為中心,關(guān)注服務(wù)影響和效果,并且出現(xiàn)了若干指標(biāo)體系,涉及硬件設(shè)施和環(huán)境配置、信息資源建設(shè)和利用、服務(wù)獲取、用戶感知、教育等方方面面[3-8]。然而對(duì)于本項(xiàng)目而言,并沒(méi)有一套完全適用的指標(biāo)體系和評(píng)測(cè)方法,更重要的是理論聯(lián)系實(shí)際,在參考借鑒已有研究成果和案例的基礎(chǔ)上,結(jié)合NSTL自身特點(diǎn),建立有針對(duì)性的、可操作的、持續(xù)有效的監(jiān)測(cè)體系,通過(guò)來(lái)自全國(guó)不同站點(diǎn)相關(guān)指標(biāo)的具體數(shù)據(jù)對(duì)比,支持站點(diǎn)間的自動(dòng)測(cè)評(píng)。
NSTL全國(guó)服務(wù)體系監(jiān)測(cè)平臺(tái)是一個(gè)工程性項(xiàng)目,圍繞“NSTL各大系統(tǒng)和站點(diǎn)能否為用戶提供穩(wěn)定的信息服務(wù)”這樣一個(gè)問(wèn)題展開(kāi),在充分調(diào)研NSTL管理與運(yùn)維需求以及相關(guān)技術(shù)的基礎(chǔ)上,遵循不加重運(yùn)維人員負(fù)擔(dān)、不影響在線服務(wù)系統(tǒng)性能兩大建設(shè)原則,采用整合已有的在線監(jiān)測(cè)技術(shù)、挖掘日志文件、增強(qiáng)業(yè)務(wù)統(tǒng)計(jì)相結(jié)合的技術(shù)手段,快速實(shí)現(xiàn)對(duì)NSTL核心服務(wù)系統(tǒng)以及分布在全國(guó)各地服務(wù)站點(diǎn)的遠(yuǎn)程集中監(jiān)測(cè)。
2.1 分級(jí)監(jiān)測(cè)體系
(1)監(jiān)測(cè)指標(biāo)
指標(biāo)體系的設(shè)立是評(píng)估的重要環(huán)節(jié)。項(xiàng)目組充分調(diào)研NSTL管理和運(yùn)維需求,強(qiáng)調(diào)客觀性、可操作性和可比性三項(xiàng)設(shè)計(jì)原則,從定量分析的角度提出操作系統(tǒng)、中間件、數(shù)據(jù)庫(kù)、應(yīng)用等四個(gè)層面的監(jiān)測(cè)指標(biāo)。前三個(gè)層面的監(jiān)測(cè)主要是在線性能監(jiān)測(cè),為系統(tǒng)運(yùn)維人員發(fā)現(xiàn)問(wèn)題、解決問(wèn)題服務(wù)。應(yīng)用監(jiān)測(cè)是對(duì)業(yè)務(wù)數(shù)據(jù)的分析統(tǒng)計(jì),定期生成統(tǒng)計(jì)報(bào)告,為中心管理人員決策提供數(shù)據(jù)參考。詳細(xì)監(jiān)測(cè)指標(biāo)如表1所示。
表1 監(jiān)測(cè)指標(biāo)
(2)三級(jí)監(jiān)測(cè)體系
不同監(jiān)測(cè)對(duì)象適用的監(jiān)測(cè)粒度應(yīng)該是不同的。從整體需求出發(fā),NSTL全國(guó)服務(wù)體系監(jiān)測(cè)平臺(tái)劃分為三級(jí)監(jiān)測(cè)體系:
●Ⅰ級(jí)
NSTL中心站點(diǎn)各大服務(wù)系統(tǒng),主要包括網(wǎng)絡(luò)服務(wù)系統(tǒng)、回溯數(shù)據(jù)庫(kù)、參考咨詢、預(yù)印本、引文數(shù)據(jù)庫(kù)和開(kāi)放獲取資源服務(wù)系統(tǒng)等,位于NSTL城域網(wǎng)內(nèi)部,作為重點(diǎn)監(jiān)測(cè)對(duì)象,列入Ⅰ級(jí)監(jiān)測(cè)體系,實(shí)施全面監(jiān)測(cè),實(shí)時(shí)掌握系統(tǒng)運(yùn)行情況。
●Ⅱ級(jí)
服務(wù)站和用戶管理平臺(tái)分布在互聯(lián)網(wǎng)各地,硬件和操作系統(tǒng)級(jí)別的運(yùn)維由本地機(jī)構(gòu)負(fù)責(zé),應(yīng)用系統(tǒng)由NSTL網(wǎng)絡(luò)管理中心集中運(yùn)維,因此重點(diǎn)關(guān)注的是業(yè)務(wù)系統(tǒng),如服務(wù)的連通性與服務(wù)的數(shù)量,側(cè)重應(yīng)用層面的監(jiān)測(cè)。同時(shí),從NSTL網(wǎng)管中心的角度看,雖然對(duì)操作系統(tǒng)的監(jiān)測(cè)需求并不強(qiáng)烈,但是主機(jī)性能數(shù)據(jù)對(duì)于應(yīng)用系統(tǒng)的問(wèn)題診斷是有幫助的,因此采用本地記錄、定期收割分析的方式實(shí)現(xiàn)對(duì)這部分主機(jī)的監(jiān)測(cè)功能。
●Ⅲ級(jí)
Ⅲ級(jí)監(jiān)測(cè)體系針對(duì)NSTL訂購(gòu)的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)以及集成的開(kāi)放獲取資源平臺(tái)。這些資源/服務(wù)以Web方式提供,完全不可控,需要了解的僅僅是服務(wù)的連通性。這些數(shù)據(jù)對(duì)中心的資源采購(gòu)及采購(gòu)談判具有重要價(jià)值。
圖1 監(jiān)測(cè)平臺(tái)業(yè)務(wù)流程圖
2.2 監(jiān)測(cè)平臺(tái)框架
項(xiàng)目要求實(shí)現(xiàn)遠(yuǎn)程集中監(jiān)測(cè),整體架構(gòu)采用B/S三層結(jié)構(gòu)模式。服務(wù)器端完成“數(shù)據(jù)收集-跟蹤-告警-存儲(chǔ)”這一核心業(yè)務(wù)邏輯。數(shù)據(jù)呈現(xiàn)由Web服務(wù)器完成,用戶采用瀏覽器方式訪問(wèn)Web服務(wù)器,完成與數(shù)據(jù)的交互。
對(duì)于服務(wù)站和用戶管理平臺(tái)而言,這些系統(tǒng)與NSTL主系統(tǒng)之間開(kāi)通了特定訪問(wèn)權(quán)限,已經(jīng)建立并使用特殊方式通信,屬于可控對(duì)象??紤]互聯(lián)網(wǎng)上數(shù)據(jù)傳輸?shù)男蕟?wèn)題,采用C/S架構(gòu)實(shí)現(xiàn)這部分主機(jī)的性能數(shù)據(jù)采集更為合適。因此,平臺(tái)設(shè)計(jì)采用B/S與C/S混合架構(gòu),選用Java Spring開(kāi)源框架實(shí)現(xiàn)。
圖1展現(xiàn)了監(jiān)測(cè)平臺(tái)的業(yè)務(wù)邏輯,包括數(shù)據(jù)采集、跟蹤、存儲(chǔ)與呈現(xiàn)四個(gè)核心環(huán)節(jié)。
(1)數(shù)據(jù)采集
數(shù)據(jù)采集是從監(jiān)測(cè)對(duì)象獲得可用數(shù)據(jù)的流程,由采集器實(shí)現(xiàn)。監(jiān)測(cè)對(duì)象和指標(biāo)不同,采集方式也有所不同,一般來(lái)說(shuō),可以分為直接讀取和推斷測(cè)量?jī)煞N方式。所謂直接讀取,是指被監(jiān)測(cè)對(duì)象提供指標(biāo)數(shù)據(jù)的訪問(wèn)接口,或者直接記錄指標(biāo)數(shù)據(jù),這時(shí)只需要擁有讀取權(quán)限即可獲得這些數(shù)據(jù)。例如,數(shù)據(jù)庫(kù)監(jiān)測(cè)中,NSTL應(yīng)用系統(tǒng)采用了Oracle 10g數(shù)據(jù)庫(kù),Oracle提供了大量的性能視圖,以計(jì)數(shù)和累計(jì)兩種方式記錄會(huì)話、實(shí)例、磁盤I/O、內(nèi)存和系統(tǒng)競(jìng)爭(zhēng)等相關(guān)信息。這些視圖以v$開(kāi)頭,對(duì)它們進(jìn)行關(guān)聯(lián)和統(tǒng)計(jì)查詢,可以從不同粒度上獲得Oracle數(shù)據(jù)庫(kù)的當(dāng)前性能數(shù)據(jù)。所謂推斷測(cè)量,是指針對(duì)被監(jiān)測(cè)對(duì)象模擬某種操作,分析響應(yīng)結(jié)果,進(jìn)而得到需要的數(shù)據(jù)。典型的例子是對(duì)NSTL訂購(gòu)的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的可用性測(cè)試,基本思路是利用HTTP協(xié)議,訪問(wèn)指定URL,獲取對(duì)方Web服務(wù)器返回信息,計(jì)算返回結(jié)果和發(fā)送請(qǐng)求的時(shí)間差,從而得到服務(wù)器的響應(yīng)時(shí)間。這個(gè)時(shí)間可以作為系統(tǒng)可用性的推斷測(cè)量。
(2)跟蹤
跟蹤是指通過(guò)消息觸發(fā)機(jī)制從采集器得到測(cè)量數(shù)據(jù),并按照事先定義好的格式規(guī)范輸出的過(guò)程。常見(jiàn)的觸發(fā)機(jī)制有輪詢和監(jiān)聽(tīng)兩種。輪詢是指跟蹤程序按固定頻率調(diào)用采集器,獲得指標(biāo)的當(dāng)前值,主要用于對(duì)那些頻繁變化的主機(jī)性能數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)測(cè),例如每分鐘讀取主機(jī)CPU利用率。監(jiān)聽(tīng)是指采集器將其自身注冊(cè)為被監(jiān)測(cè)對(duì)象的事件監(jiān)聽(tīng)程序,跟蹤程序在事先不需要采用輪詢方式周期性查看數(shù)據(jù)指標(biāo),當(dāng)關(guān)注的事件發(fā)生時(shí)(例如數(shù)據(jù)超出設(shè)定閾值),監(jiān)聽(tīng)程序能夠立刻知曉,并執(zhí)行相應(yīng)的任務(wù)。對(duì)WebLogic中間件的監(jiān)測(cè)就采用了這種方法,相關(guān)技術(shù)細(xì)節(jié)見(jiàn)本文“關(guān)鍵技術(shù)-JMX框架”部分。
(3)存儲(chǔ)
收集到的指標(biāo)數(shù)據(jù)采用“名稱-值”形式表示,非常簡(jiǎn)單,其最大的特點(diǎn)在于時(shí)間相關(guān)性,隨著時(shí)間的流逝數(shù)據(jù)量不斷增長(zhǎng),越積越多,而應(yīng)用最關(guān)心的總是最近一段時(shí)間的數(shù)據(jù)。處理這類數(shù)據(jù)最常見(jiàn)的工具是RRDTool,其核心思想是RRD數(shù)據(jù)庫(kù)(Round Robin Database)。簡(jiǎn)單地說(shuō),在建立數(shù)據(jù)庫(kù)時(shí)指定一個(gè)循環(huán)時(shí)間,當(dāng)?shù)竭_(dá)循環(huán)時(shí)間的時(shí)候,數(shù)據(jù)庫(kù)會(huì)自動(dòng)覆蓋最老的數(shù)據(jù),從而形成一個(gè)環(huán)形的數(shù)據(jù)區(qū)域[9]。由于RRDTool采用的是基于文件的數(shù)據(jù)存儲(chǔ),與系統(tǒng)的集成度不好,而且也不能很好地支持未來(lái)的數(shù)據(jù)挖掘與分析,因此本項(xiàng)目并沒(méi)有直接集成RRDTool工具,而是借鑒RRD思想,采用純Java編程在MySQL數(shù)據(jù)庫(kù)中實(shí)現(xiàn),主要的技術(shù)點(diǎn)是歷史數(shù)據(jù)的歸檔機(jī)制,詳見(jiàn)本文“關(guān)鍵技術(shù)-數(shù)據(jù)存儲(chǔ)”部分。
(4)呈現(xiàn)
數(shù)據(jù)指標(biāo)的呈現(xiàn)主要包括告警、實(shí)時(shí)顯示和報(bào)告三種方式。告警是當(dāng)某項(xiàng)指標(biāo)數(shù)據(jù)超過(guò)設(shè)定閾值時(shí),及時(shí)提醒相關(guān)人員注意,除了在控制中心實(shí)時(shí)顯示之外,常用方法有電子郵件、IM和短信分發(fā)。具體的報(bào)警機(jī)制將在本文“關(guān)鍵技術(shù)”中深入討論。實(shí)時(shí)顯示是以Web方式近乎實(shí)時(shí)地顯示特定指標(biāo)數(shù)據(jù),多采用圖、表形式,強(qiáng)調(diào)可視化。報(bào)告則是從監(jiān)測(cè)數(shù)據(jù)庫(kù)中定期導(dǎo)出指定時(shí)間范圍內(nèi)的指標(biāo)數(shù)據(jù),通常規(guī)定了固定格式。本項(xiàng)目采用JFreeChart類庫(kù)針對(duì)不同的指標(biāo)類型生成不同形式的圖表(例如用折線圖展示CPU利用率的趨勢(shì)變化),繪制的圖表與PDF和EXCEL關(guān)聯(lián)輸出形成報(bào)告,能夠很好地滿足應(yīng)用。
3.1 Shell編程
NSTL全國(guó)服務(wù)體系集中采用AIX和Linux兩種操作系統(tǒng),且版本統(tǒng)一。AIX和Linux有很多內(nèi)置的性能數(shù)據(jù)收集工具(例如vmstat、ps、sar、iostat),可以直接采用執(zhí)行Shell腳本命令并解析響應(yīng)的方式實(shí)現(xiàn)。
圖2給出了采用SSH遠(yuǎn)程調(diào)用Shell命令的基本框架,用于B/S架構(gòu)實(shí)時(shí)采集主機(jī)性能數(shù)據(jù)。關(guān)于SSH的Java實(shí)現(xiàn)已經(jīng)有很多成熟的方式,例如JSch①http://www.jcraft.com/jsch/、Ganymed SSH-2 for Java②http://www.ganymed.ethz.ch/ssh2/、Apache Ant中的SSHEXEC和SSHXCUTE③http://code.google.com/p/sshxcute/等,可以在一個(gè)SSH連接會(huì)話中完成多項(xiàng)指標(biāo)數(shù)據(jù)的實(shí)時(shí)抓取任務(wù),持續(xù)監(jiān)測(cè)則通過(guò)任務(wù)管理以定期輪詢的方式實(shí)現(xiàn)。整個(gè)方法簡(jiǎn)單有效,并且對(duì)服務(wù)器開(kāi)銷較低。圖3是本項(xiàng)目實(shí)現(xiàn)的對(duì)NSTL中心站檢索服務(wù)器CPU使用率的折線展示。
分布在互聯(lián)網(wǎng)各地的服務(wù)站和用戶管理平臺(tái)采用客戶端代理程序完成本地主機(jī)數(shù)據(jù)的實(shí)時(shí)抓取與記錄任務(wù),由監(jiān)測(cè)中心定期收割日志文件。圖4給出了這種本地執(zhí)行Shell腳本文件的C/S采集架構(gòu)。其中,采集到的指標(biāo)數(shù)據(jù)以.log后綴命名,采集過(guò)程中產(chǎn)生的錯(cuò)誤也保存在相應(yīng)目錄下,以.err后綴命名。在該模式下,持續(xù)監(jiān)測(cè)是通過(guò)在被監(jiān)測(cè)主機(jī)中設(shè)置cron定時(shí)任務(wù)實(shí)現(xiàn)的。
圖2 遠(yuǎn)程調(diào)用Shell命令(B/S架構(gòu))
圖3 CPU使用率折線圖(系統(tǒng)截圖)
圖4 本地執(zhí)行Shell腳本文件(C/S架構(gòu))
3.2 JMX框架
JMX(Java Management extensions)是SUN公司提出的一套管理框架,其核心是MBean,簡(jiǎn)單地說(shuō),MBean就是一個(gè)Java類,提供了控制和監(jiān)視資源的管理能力[10]。圖5顯示了通過(guò)MBean傳遞消息的基本模型。
圖5 接收來(lái)自MBean的通知[10]
首先,通過(guò)MBean的javax.management.NotificationEmitter接口發(fā)出通知。第二步,創(chuàng)建并注冊(cè)監(jiān)聽(tīng)器,采用
javax.management.NotificationListener.handleNotification()方法實(shí)現(xiàn)收到通知時(shí)執(zhí)行的操作。第三步,創(chuàng)建并注冊(cè)監(jiān)聽(tīng)器的篩選器,僅接收那些需要關(guān)注的事件。
本項(xiàng)目中對(duì)消息中間件WebLogic和Tomcat的性能監(jiān)測(cè)就是采用JMX框架實(shí)現(xiàn)的。Weblogic的指標(biāo)參數(shù)非常多,主要關(guān)注服務(wù)器當(dāng)前狀態(tài)、服務(wù)器監(jiān)聽(tīng)端口上的活動(dòng)、內(nèi)存和線程使用情況、數(shù)據(jù)庫(kù)連接等運(yùn)行時(shí)的統(tǒng)計(jì)信息[11],圖6是在線捕獲的線程基本信息,圖7則以折線圖形式展示了線程的變化趨勢(shì)。
圖6 實(shí)時(shí)監(jiān)測(cè)到的線程信息(系統(tǒng)截圖)
圖7 線程變化趨勢(shì)(系統(tǒng)截圖)
對(duì)Tomcat的遠(yuǎn)程監(jiān)測(cè)基本原理與WebLogic監(jiān)測(cè)相同,不同點(diǎn)在于WebLogic監(jiān)測(cè)采用的是WebLogic Server類從遠(yuǎn)程JMX客戶端發(fā)起連接,對(duì)Tomcat則需要通過(guò)JDK中的類進(jìn)行JMX遠(yuǎn)程管理[12]。
以上討論的是對(duì)基于JMX框架的應(yīng)用系統(tǒng)的監(jiān)測(cè)。如果要監(jiān)測(cè)非JMX架構(gòu)的Java應(yīng)用,則需要添加JMX支持,可以采取插裝Java類和資源的方法實(shí)現(xiàn)[13],不需要修改源代碼即可為應(yīng)用添加監(jiān)管能力。對(duì)于基于Spring的應(yīng)用程序,還可以利用Spring JMX擴(kuò)展特性為方法和屬性透明地增加通知事件,這種方法雖然需要修改源代碼和數(shù)據(jù)庫(kù)結(jié)構(gòu),但是并不會(huì)搞亂Java對(duì)象[14]。NSTL網(wǎng)絡(luò)服務(wù)系統(tǒng)是基于Spring框架開(kāi)發(fā)的,理論上可以添加JMX監(jiān)測(cè)能力,例如,可以在文獻(xiàn)傳遞環(huán)節(jié)為下訂單這一行為添加JMX監(jiān)測(cè)能力,實(shí)現(xiàn)對(duì)文獻(xiàn)訂購(gòu)量的實(shí)時(shí)觀測(cè)。由于NSTL應(yīng)用系統(tǒng)本身非常復(fù)雜,在本項(xiàng)目實(shí)施過(guò)程中并沒(méi)有采用該方案,業(yè)務(wù)數(shù)據(jù)的收集由應(yīng)用系統(tǒng)以日志文件和數(shù)據(jù)庫(kù)的方式記錄下來(lái),由控制中心定期抓取。
3.3 數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)由XML文件和MySQL數(shù)據(jù)庫(kù)兩部分組成,XML文件存儲(chǔ)采集相關(guān)的配置信息,包括數(shù)據(jù)源、指標(biāo)類型、單位、采集頻率等,支持監(jiān)測(cè)任務(wù)的管理;MySQL數(shù)據(jù)庫(kù)存儲(chǔ)收集到的指標(biāo)數(shù)據(jù)。雖然指標(biāo)數(shù)據(jù)本身形式簡(jiǎn)單,但是隨著時(shí)間的流逝數(shù)據(jù)量會(huì)不斷增長(zhǎng),并且,在觀察較長(zhǎng)時(shí)間的指標(biāo)變化時(shí)并不是數(shù)據(jù)越多就越清晰,例如,查看過(guò)去1年文獻(xiàn)檢索量的變化趨勢(shì),使用月平均檢索量更為合適。因此在指標(biāo)數(shù)據(jù)的存儲(chǔ)中,重點(diǎn)討論歷史數(shù)據(jù)的歸檔機(jī)制。
(1)保存最近收集的細(xì)粒度數(shù)據(jù)(原始指標(biāo)數(shù)據(jù)),按照特定指標(biāo)類型分別存儲(chǔ),每個(gè)值都記錄與之相關(guān)聯(lián)的時(shí)間戳和數(shù)據(jù)來(lái)源。
(2)使用最大、最小和平均三種方式對(duì)原始數(shù)據(jù)聚合,按小時(shí)/日/周/月/年的層次分表存儲(chǔ),形成不同粒度的數(shù)據(jù)集。需要注意的是,并不是所有指標(biāo)都按照小時(shí)-日-周-月-年這樣一個(gè)層次歸檔,需要為特定指標(biāo)類型設(shè)定特定的歸檔粒度。
(3)按照先進(jìn)先出的原則,循環(huán)清除時(shí)間較長(zhǎng)的原始數(shù)據(jù),以保證數(shù)據(jù)庫(kù)查詢效率。簡(jiǎn)單地說(shuō),假設(shè)原始數(shù)據(jù)保留時(shí)間為60天,當(dāng)數(shù)據(jù)采集到第61天時(shí),新采集到的數(shù)據(jù)將覆蓋第1天的數(shù)據(jù),保證表存儲(chǔ)空間不會(huì)無(wú)限制增長(zhǎng)。同樣地,特定指標(biāo)類型也應(yīng)該根據(jù)實(shí)際需要設(shè)置特定的保存期限。
3.4 報(bào)警機(jī)制
控制中心將接收到的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)中,同時(shí)與預(yù)設(shè)閾值進(jìn)行比較,如果超出設(shè)置范圍,則啟動(dòng)報(bào)警機(jī)制,這里主要討論消息分級(jí)和消息傳遞策略問(wèn)題。
(1)消息分級(jí)
報(bào)警消息按照來(lái)源指標(biāo)數(shù)據(jù)可以分為操作系統(tǒng)、中間件、數(shù)據(jù)庫(kù)、應(yīng)用四個(gè)層面,但是這種歸類方式是非常粗糙的,需要重新按照重要性設(shè)置不同級(jí)別,加強(qiáng)對(duì)重要報(bào)警的監(jiān)測(cè),及時(shí)發(fā)現(xiàn)安全隱患。
判斷一條警示消息的重要程度,不僅與監(jiān)測(cè)到的數(shù)據(jù)絕對(duì)值相關(guān),更與該值的變化趨勢(shì)關(guān)系密切。例如,CPU平均負(fù)載描述系統(tǒng)當(dāng)前的繁忙程度,它反映了系統(tǒng)中所有等待運(yùn)行的進(jìn)程數(shù),但是進(jìn)程數(shù)量多并不一定會(huì)影響服務(wù)器的正常工作,監(jiān)測(cè)的重點(diǎn)應(yīng)該放在變化趨勢(shì)上,突增或突減都需要警示,并且應(yīng)該根據(jù)變化幅度大小設(shè)置不同的重要級(jí)別。因此,判斷一條告警消息的重要性時(shí)需要采用絕對(duì)值和變化值相結(jié)合的方式。
(2)消息傳遞策略
很多時(shí)候系統(tǒng)自動(dòng)監(jiān)測(cè)到的異常情況會(huì)持續(xù)到問(wèn)題的解決,如果運(yùn)維人員沒(méi)有及時(shí)得到通知,并進(jìn)行干預(yù),那么告警消息可能變成一種干擾,直接影響監(jiān)測(cè)系統(tǒng)的性能;采用郵件告警的情況下,可能會(huì)導(dǎo)致郵件服務(wù)器被列入黑名單;采用短信告警則會(huì)迅速侵吞手機(jī)存儲(chǔ)空間,影響正常使用。因此,合理分發(fā)也是報(bào)警機(jī)制中要重點(diǎn)考慮的問(wèn)題,需要結(jié)合固定分發(fā)頻率、指標(biāo)數(shù)據(jù)的變化趨勢(shì)綜合考量。
本項(xiàng)目采用的基本分發(fā)策略是:第一,報(bào)警行為由預(yù)設(shè)閾值觸發(fā),閾值可以是絕對(duì)值,也可以是相對(duì)值。第二,相同的告警消息僅發(fā)送3次。需要注意的是,這里的“相同”并不是同一次監(jiān)測(cè)行為產(chǎn)生的同一條消息,而是分發(fā)告警消息之后,緊接著下一次監(jiān)測(cè)得到的指標(biāo)數(shù)據(jù)觸發(fā)相同的告警。
3.5 運(yùn)行效率分析
“監(jiān)測(cè)系統(tǒng)啟用之后不能影響在線服務(wù)系統(tǒng)的性能”是指導(dǎo)整個(gè)項(xiàng)目實(shí)施的重要原則。監(jiān)測(cè)行為可能對(duì)監(jiān)測(cè)對(duì)象性能產(chǎn)生影響是在數(shù)據(jù)采集環(huán)節(jié),項(xiàng)目在確定技術(shù)路線時(shí)就充分考慮這個(gè)問(wèn)題,并在具體實(shí)施中采取若干技術(shù)手段減低數(shù)據(jù)采集對(duì)監(jiān)測(cè)對(duì)象系統(tǒng)資源的占用。
(1)Agent和Agentless在主機(jī)性能數(shù)據(jù)采集中各司其職,以適應(yīng)“NSTL主站-服務(wù)站”模式。
Agent監(jiān)測(cè)方式也就是在框架設(shè)計(jì)部分提到的嵌入總體B/S框架中的C/S部分,主要完成對(duì)分布在互聯(lián)網(wǎng)各地的全國(guó)服務(wù)站點(diǎn)主機(jī)性能數(shù)據(jù)的采集工作。Agentless監(jiān)測(cè)方式針對(duì)的是NSTL城域網(wǎng)內(nèi)中心主服務(wù)系統(tǒng)。采用不同的實(shí)現(xiàn)模式重點(diǎn)考慮的是對(duì)網(wǎng)絡(luò)帶寬資源的消耗問(wèn)題。中心主服務(wù)系統(tǒng)部署在NSTL千兆城域網(wǎng)內(nèi),網(wǎng)絡(luò)帶寬資源充足,完全可以支持實(shí)時(shí)采集數(shù)據(jù)未經(jīng)壓縮和匯總就直接傳輸給監(jiān)測(cè)服務(wù)器。服務(wù)站分布在互聯(lián)網(wǎng)上,各個(gè)站點(diǎn)網(wǎng)絡(luò)條件差異很大,而NSTL網(wǎng)管中心對(duì)這些站點(diǎn)的實(shí)時(shí)監(jiān)控需求并不強(qiáng)烈,因此使用Agent采集并記錄日志,由監(jiān)控中心定期收割。
(2)高效利用操作系統(tǒng)內(nèi)置工具,以Shell腳本方式完成主機(jī)性能數(shù)據(jù)采集任務(wù)。
Agentless監(jiān)測(cè)對(duì)監(jiān)測(cè)主機(jī)的影響主要在建立訪問(wèn)連接時(shí)產(chǎn)生的,其最大優(yōu)點(diǎn)就是占用系統(tǒng)資源少。主站系統(tǒng)采集模塊在實(shí)現(xiàn)中采用一個(gè)SSH連接會(huì)話完成多項(xiàng)指標(biāo)數(shù)據(jù)的實(shí)時(shí)抓取任務(wù),持續(xù)監(jiān)測(cè)通過(guò)任務(wù)管理以定期輪詢的方式實(shí)現(xiàn)。整個(gè)方法簡(jiǎn)單有效,并且對(duì)服務(wù)器開(kāi)銷較低,單模塊測(cè)試中觀察CPU占用率小于1%。
Agent運(yùn)行在被監(jiān)測(cè)端,對(duì)其性能和可靠性有較高的要求。為保證主機(jī)和監(jiān)測(cè)應(yīng)用都能正常運(yùn)行,大多數(shù)軟件采用效率比較高的C代碼,也有采用JAVA實(shí)現(xiàn)的(如IBM)。相比之下,JAVA程序會(huì)占用較多內(nèi)存,對(duì)主機(jī)系統(tǒng)資源的開(kāi)銷較大。為了快速構(gòu)建,主機(jī)性能采集模塊高效利用操作系統(tǒng)內(nèi)置工具,以Shell腳本方式實(shí)現(xiàn)。
Shell是一種解釋型語(yǔ)言,盡管從執(zhí)行方式方面考慮,解釋型程序的效率比不上C語(yǔ)言類的編譯型程序,但腳本具有簡(jiǎn)便快捷的特點(diǎn),并且在NSTL應(yīng)用系統(tǒng)的長(zhǎng)期運(yùn)維工作中,已經(jīng)形成一些監(jiān)測(cè)腳本文件,其運(yùn)行效率和監(jiān)測(cè)能力是經(jīng)過(guò)實(shí)踐檢驗(yàn)的。將這些經(jīng)驗(yàn)集成到監(jiān)測(cè)工作流中,加快了系統(tǒng)建設(shè)進(jìn)度。
(3)按需制定合理的監(jiān)測(cè)指標(biāo)集,將中間件監(jiān)測(cè)行為對(duì)監(jiān)測(cè)對(duì)象的影響控制在一個(gè)可接受的范圍內(nèi)。
本項(xiàng)目對(duì)中間件進(jìn)行監(jiān)測(cè)的主要目的是為了掌握其運(yùn)行的健康狀況,出現(xiàn)問(wèn)題能夠及時(shí)發(fā)現(xiàn),至于發(fā)現(xiàn)問(wèn)題之后的診斷排查則需要配合更復(fù)雜的工具完成(如profiler)。目前對(duì)主站前臺(tái)系統(tǒng)配置了會(huì)話、線程、Java虛擬機(jī)三類基本監(jiān)測(cè)指標(biāo),技術(shù)上采用JMX框架編程實(shí)現(xiàn),在監(jiān)測(cè)對(duì)象中將會(huì)啟用Java進(jìn)程,因此在性能分析時(shí)主要采用觀察Java進(jìn)程占用系統(tǒng)資源的方法,對(duì)比監(jiān)測(cè)系統(tǒng)運(yùn)行和不運(yùn)行兩種狀態(tài)下的表現(xiàn)。測(cè)試結(jié)果顯示,啟用和不啟用監(jiān)測(cè)系統(tǒng)并未對(duì)監(jiān)測(cè)主機(jī)上Java進(jìn)程的CPU使用率和內(nèi)存使用率造成明顯變化,CPU和內(nèi)存平均使用率的變化小于1%。
(4)采用若干技術(shù)細(xì)節(jié)提升中間件監(jiān)測(cè)模塊的執(zhí)行效率,降低對(duì)監(jiān)測(cè)對(duì)象的性能影響。
中間件監(jiān)測(cè)模塊基于JMX框架實(shí)現(xiàn),在具體編程時(shí)主要采用單一連接和一次請(qǐng)求多個(gè)屬性的方法提升執(zhí)行效率。其中,單一連接即為采集器保留一個(gè)單獨(dú)連接,以此減少輪詢并重新連接對(duì)目標(biāo)主機(jī)的開(kāi)銷。實(shí)踐中證明該方法對(duì)性能提升的效果明顯。
本文從NSTL管理需求入手,結(jié)合現(xiàn)有服務(wù)體系,提出采用B/S和C/S混合架構(gòu),基于Java Spring開(kāi)源框架建設(shè)遠(yuǎn)程集中監(jiān)測(cè)平臺(tái)。目前,該平臺(tái)完成了數(shù)據(jù)采集、跟蹤、存儲(chǔ)與呈現(xiàn)等核心功能的開(kāi)發(fā)測(cè)試,部署在主系統(tǒng)測(cè)試環(huán)境(上線前測(cè)試)的后臺(tái)管理框架中,由一臺(tái)IBM X3850機(jī)器支撐運(yùn)行。試運(yùn)行階段啟用了對(duì)主站網(wǎng)絡(luò)服務(wù)系統(tǒng)生產(chǎn)環(huán)境的操作系統(tǒng)、中間件、數(shù)據(jù)庫(kù)和應(yīng)用四個(gè)層面的監(jiān)測(cè);針對(duì)外地站點(diǎn)僅啟用了通斷監(jiān)測(cè)功能。雖然該平臺(tái)并不具備評(píng)價(jià)功能,但是通過(guò)最常見(jiàn)的統(tǒng)計(jì)方法,可以快速了解情況、發(fā)現(xiàn)問(wèn)題;同時(shí),在統(tǒng)一的指標(biāo)體系下,各種統(tǒng)計(jì)分析數(shù)據(jù)匯聚形成監(jiān)測(cè)報(bào)告,為中心決策提供重要而客觀的數(shù)據(jù)支持。
參考文獻(xiàn)
[1]袁海波.改革創(chuàng)新 開(kāi)放聯(lián)合 譜寫科技文獻(xiàn)共建共享新篇章[M].國(guó)家科技圖書文獻(xiàn)中心成立十周年文集.北京:科學(xué)技術(shù)文獻(xiàn)出版社,2010:15-18.
[2]NSTL網(wǎng)管中心.2012年NSTL年終工作總結(jié)[R].2012.
[3]向遠(yuǎn)媛.圖書館評(píng)估研究綜述[J].新世紀(jì)圖書館,2011(1):59-61,16.
[4]BERTOT J C.Library Network Statistics and performance Measures: Approaches and Issues [J].Library Quarterly, 2001(11): 229-230.
[5]GON?ALVES M A, MOREIRA B L, FOX E A, et al.“What is a good digital library?" - a quality model for digital libraries [J].Information Processing & Management, 2007, 43(5): 1416-1437.
[6]KHOO M, DONAHUE R A.Evaluating digital libraries with webmetrics [C]// Proceeding JCDL '07 Proceedings of the 7th ACM/IEEE-CS joint conference on Digital libraries.Vancouver, British Columbia, Canada: ACM Press, 2007: 484-484.
[7]The COUNTER code of practice for e-resources: release 4 [EB/OL].(2013-02)[2013-0311].http://www.projectcounter.org/code_practice.html.
[8]曾照云.LibQUAL+TM—圖書館服務(wù)質(zhì)量評(píng)價(jià)研究綜述[J].情報(bào)雜志,2009,28(12):95-98.
[9]rrdtutorial [EB/OL].[2013-04-26].http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html.
[10]使用JMX開(kāi)發(fā)可管理的應(yīng)用程序[EB/OL].[2013-03-11].http://edocs.weblogicfans.net/wls/docs92/jmxinst/understanding.html#wp1100632.
[11]最佳實(shí)踐:監(jiān)聽(tīng) WebLogic Server 事件[EB/OL].[2013-04-26].http://edocs.weblogicfans.net/wls/docs92/jmx/notifications.html.
[12]Apache Tomcat 6.0: Monitoring and Managing Tomcat [EB/OL].[2013-04-26].http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html.
[13]WHITEHEAD N.Java運(yùn)行時(shí)監(jiān)測(cè) 第2部分:編譯后插裝和性能監(jiān)測(cè)[EB/OL].(2008-08-19)[2013-03-11].http://www.ibm.com/developerworks/cn/java/j-rtm1/.[14]DUGUAY C.擴(kuò)展Spring的JMX支持[EB/OL].(2005-11-24).[2013-03-11].http://www.ibm.com/developerworks/cn/java/j-springjmx/.
The Construction Strategy and Key Technologies of NSTL Monitoring Platform
Wang Li, Hao Chunyun/Institute of Scientific & Technical Information of China, Beijing, 100038
Liu Yuhai/Ninemax Network Technology Co., Ltd., Beijing, 100101
This paper proposes the strategy of NSLT Monitoring Platform, including monitoring indicators, three-level framework, and the core business logic of data collection, tracking, alarm and storage, and describes key technologies such as Shell programming, JMX framework, data storage and alarm mechanisms.
NSLT monitoring platform, Shell programming, JMX framework, Alarm mechanisms
10.3772/j.issn.1673—2286.2013.07.011
王莉,中國(guó)科學(xué)技術(shù)信息研究所研究員,全國(guó)信息和文獻(xiàn)標(biāo)準(zhǔn)化技術(shù)委員會(huì)技術(shù)協(xié)作分技術(shù)委員會(huì)委員。研究課題:數(shù)字圖書館。E-mail: wangli@istic.ac.cn
郝春云,中國(guó)科學(xué)技術(shù)信息研究所高級(jí)工程師。E-mail: chyhao@istic.ac.cn
劉玉海,北京九瑞網(wǎng)絡(luò)科技有限公司項(xiàng)目經(jīng)理。E-mail: beijixing830@163.com
2013-05-14)
*本文系2012年NSTL專項(xiàng)工作“NSTL服務(wù)系統(tǒng)監(jiān)測(cè)及評(píng)價(jià)”的研究成果之一。