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