潘玉偉
【摘要】 實(shí)時(shí)數(shù)據(jù)庫(Real Time Database)是數(shù)據(jù)庫系統(tǒng)發(fā)展的一個(gè)分支,是數(shù)據(jù)庫技術(shù)結(jié)合實(shí)時(shí)處理技術(shù)產(chǎn)生的,是開發(fā)實(shí) 時(shí)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、CIMS系統(tǒng)等的支撐軟件。實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)的應(yīng)用方便了數(shù)據(jù)采集、歷史數(shù)據(jù)存儲(chǔ)、提升系統(tǒng)尤其是數(shù)據(jù)庫系統(tǒng)的性能,同時(shí)對(duì)后期數(shù)據(jù)挖掘提供了基礎(chǔ)。
【關(guān)鍵字】 實(shí)時(shí)數(shù)據(jù)庫 數(shù)據(jù)采集 網(wǎng)絡(luò)拓?fù)?調(diào)度服務(wù) 告警
【Abstract】Real time database (Real Time Database) is a branch of database system development, database technologycombined with real-time processing technology, is to support the software development of real-time control system, data collection system, CIMS system etc.. The applications of the database to facilitate data collection, historical data storage, improve the system especially the performance of the database system, and provide the basis for data mining.
【Keywords】Real Time Database Data CollectionNetwork TopologyScheduling Service Alarm
一、引言
當(dāng)前大多數(shù)公司都使用復(fù)雜的人工跟蹤監(jiān)測(cè)方式,或者根本不清楚自己的硬件資產(chǎn)基礎(chǔ)。由于不了解自己IT資產(chǎn)的基礎(chǔ),從而導(dǎo)致了時(shí)間、資金以及系統(tǒng)性能上的損失。面對(duì)IT資產(chǎn)管理的迫切需求,對(duì)傳統(tǒng)上被看作成本中心的IT部門也提出了更高的要求,"更充分利用現(xiàn)有資產(chǎn)"、"更嚴(yán)格地控制資產(chǎn)"、"獲得更高的投資回報(bào)",這些不僅是企業(yè)對(duì)IT部門的殷切期望,也越來越成為企業(yè)考量IT部門的重要內(nèi)容。
在IT資產(chǎn)性能監(jiān)控領(lǐng)域,數(shù)據(jù)采集基本上使用自定義服務(wù)實(shí)現(xiàn),將采集的數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫中。通過實(shí)時(shí)數(shù)據(jù)庫的使用,重復(fù)利用實(shí)時(shí)數(shù)據(jù)庫插件,如OSI PI實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)插件MCN提供的數(shù)據(jù)采集接口SNMP/Ping/ TCPResponse/Perfmon,該插件能最大程度的減少開發(fā)周期,提高數(shù)據(jù)采集的性能和穩(wěn)定性,而且實(shí)時(shí)數(shù)據(jù)庫海量的存儲(chǔ)有關(guān)系數(shù)據(jù)庫不可比擬的優(yōu)勢(shì)。
二、系統(tǒng)總體架構(gòu)
IT資產(chǎn)性能監(jiān)控系統(tǒng)構(gòu)建于JavaEE平臺(tái),采用分層提供服務(wù)支持的設(shè)計(jì)思想,多層架構(gòu)是一種被行業(yè)證明過的軟件架構(gòu)模型,對(duì)開發(fā)一些解決可擴(kuò)展性、安全性、容錯(cuò)性方面的企業(yè)級(jí)(客戶端/服務(wù)端)應(yīng)用程序支持。將系統(tǒng)劃分為數(shù)據(jù)庫層、數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、業(yè)務(wù)表現(xiàn)層和系統(tǒng)接口層。系統(tǒng)對(duì)每一層定義明確的功能接口,同時(shí)在層次內(nèi)實(shí)現(xiàn)組件化的接口實(shí)現(xiàn)。層次化、模塊組件化的實(shí)現(xiàn),使系統(tǒng)具備了最大程度的靈活度,從而能對(duì)業(yè)務(wù)需求的變化做出快速的反應(yīng),使系統(tǒng)具有很好的擴(kuò)展性。(圖2)
三、系統(tǒng)部署結(jié)構(gòu)
IT資產(chǎn)性能監(jiān)管系統(tǒng)部署在企業(yè)內(nèi)網(wǎng)環(huán)境中,可以采用虛擬服務(wù)器、單機(jī)服務(wù)器、雙機(jī)熱備或集群方式部署服務(wù)端。系統(tǒng)服務(wù)端在華電國際總部采用總部虛擬機(jī)部署、總部及電廠客戶通過廣域網(wǎng)訪問。集團(tuán)廣域網(wǎng)提供了足夠的帶寬,系統(tǒng)在數(shù)據(jù)采集和http訪問請(qǐng)求不會(huì)對(duì)其他正常的網(wǎng)絡(luò)通訊造成實(shí)質(zhì)性影響。(圖3)
四、關(guān)鍵技術(shù)
4.1 ExtJS
ExtJS可以用來開發(fā)RIA也即富客戶端的AJAX應(yīng)用,是一個(gè)用JavaScript寫的,主要用于創(chuàng)建前端用戶界面,是一個(gè)與后臺(tái)技術(shù)無關(guān)的前端Ajax框架。因此,可以把ExtJS用在.Net、Java、PHP等各種開發(fā)語言開發(fā)的應(yīng)用中。ExtJs最開始基于YUI技術(shù),由開發(fā)人員JackSlocum開發(fā),通過參考Java Swing等機(jī)制來組織可視化組件,無論從UI界面上CSS樣式的應(yīng)用,到數(shù)據(jù)解析上的異常處理,都可算是一款不可多得的JavaScript客戶端技術(shù)的精品。
4.2數(shù)據(jù)采集及存儲(chǔ)
本系統(tǒng)中主要使用OSI PI MCN 插件提供的SNMP/Ping/ TCP Response/Perfmon接口實(shí)現(xiàn)數(shù)據(jù)采集。關(guān)系數(shù)據(jù)庫使用JDBC連接使用DBA權(quán)限的用戶執(zhí)行數(shù)據(jù)庫執(zhí)行腳本方式進(jìn)行性能數(shù)據(jù)采集。
網(wǎng)絡(luò)設(shè)備的大部分監(jiān)控參數(shù)都支持SNMP協(xié)議,可以直接使用SNMP接口實(shí)現(xiàn)數(shù)據(jù)采集。網(wǎng)絡(luò)設(shè)備主要監(jiān)控的參數(shù)包括:連續(xù)運(yùn)行時(shí)間、端口狀態(tài)、端口管理狀態(tài)、端口帶寬、端口進(jìn)流量、端口出流量、端口丟包率、端口錯(cuò)包率等。主機(jī)(包括虛擬機(jī))主要監(jiān)控的參數(shù)包括CPU利用率、內(nèi)存利用率、網(wǎng)卡進(jìn)出流量、磁盤使用量等可通過SNMP接口采集。進(jìn)程信息、進(jìn)程CPU利用率、進(jìn)程內(nèi)存占用量等信息通過JMX獲取,JMX(Java Management Extensions,即Java管理擴(kuò)展)是一個(gè)為應(yīng)用程序、設(shè)備、系統(tǒng)等植入管理功能的框架。JMX可以跨越一系列異構(gòu)操作系統(tǒng)平臺(tái)、系統(tǒng)體系結(jié)構(gòu)和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開發(fā)無縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用。
關(guān)系數(shù)據(jù)庫如Oracle/SQL Server 等監(jiān)控參數(shù)包括會(huì)話、服務(wù)進(jìn)程、表空間、鎖信息、內(nèi)存占用等,通過Jdbc連接數(shù)據(jù)執(zhí)行DBA權(quán)限的腳本進(jìn)行參數(shù)查詢,定時(shí)將參數(shù)值回寫至實(shí)時(shí)數(shù)據(jù)庫存儲(chǔ)。
4.3 SSO
SSO英文全稱Single Sign On,單點(diǎn)登錄。SSO是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。它包括可以將這次主要的登錄映射到其他應(yīng)用中用于同一個(gè)用戶的登錄的機(jī)制。SSO是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。
本系統(tǒng)使用華電國際集團(tuán)已經(jīng)存在的LDAP目錄存放的用戶信息,LDAP目錄中可以存儲(chǔ)多種數(shù)據(jù)類型,包括用戶名、密碼、電子郵件地址、郵件路由等信息。LDAP協(xié)議是跨平臺(tái)和標(biāo)準(zhǔn)的協(xié)議,對(duì)基于不同平臺(tái)的應(yīng)用系統(tǒng)有良好的兼容性。
4.4 HTML5
本系統(tǒng)的網(wǎng)絡(luò)拓?fù)?、?yīng)用系統(tǒng)拓?fù)涫褂昧嘶贖TML5的網(wǎng)絡(luò)圖組件。使用HTML5 Canvas技術(shù),繪制清新、流暢的網(wǎng)絡(luò)圖,可用于社交網(wǎng)絡(luò)圖、拓?fù)鋱D、流程圖、地圖等需求, JS組件封裝,藏繁瑣于簡(jiǎn)潔,輕松構(gòu)建優(yōu)雅的互聯(lián)網(wǎng)應(yīng)用與企業(yè)應(yīng)用,讓數(shù)據(jù)的在線可視化變得容易。
該組件的特點(diǎn)是主要有以下幾點(diǎn):輕巧、高性能 -支持上萬圖元,流暢操作;矢量圖形 - 支持SVG矢量圖形,無極縮放;交互體驗(yàn) -漫游交互,改進(jìn)交互事件、支持手持設(shè)備;注重細(xì)節(jié) -GIF動(dòng)畫,豐富漸變,層次控制等。
4.5 Quartz
Quartz是OpenSymphony開源組織在Job scheduling領(lǐng)域又一個(gè)開源項(xiàng)目,它可以與J2EE與J2SE應(yīng)用程序相結(jié)合也可以單獨(dú)使用。Quartz可以用來創(chuàng)建簡(jiǎn)單或?yàn)檫\(yùn)行十個(gè),百個(gè),甚至是好幾萬個(gè)Job這樣復(fù)雜的程序。Job可以做成標(biāo)準(zhǔn)的Java組件或 EJB。
本系統(tǒng)中的參數(shù)告警、告警動(dòng)作觸發(fā)及關(guān)系數(shù)據(jù)庫性能參數(shù)數(shù)據(jù)采集都是通過基于Quartz插件的調(diào)度服務(wù)結(jié)合調(diào)度服務(wù)管理頁面Quartz UI實(shí)現(xiàn)。Quartz UI負(fù)責(zé)調(diào)度任務(wù)的注冊(cè)、啟停、觸發(fā)器定義等,Quartz UI的運(yùn)用使調(diào)度任務(wù)有了統(tǒng)一的管理入口,使調(diào)度服務(wù)類應(yīng)用具備了良好的擴(kuò)展性。
五、業(yè)務(wù)功能
5.1網(wǎng)絡(luò)拓?fù)?/p>
本系統(tǒng)中通過基于HTML5組件的網(wǎng)絡(luò)拓?fù)鋱D直觀展示網(wǎng)路設(shè)備如路由器、交換機(jī)、防火墻的狀態(tài)。局域網(wǎng)拓?fù)洹V域網(wǎng)拓?fù)渲饕O(jiān)控網(wǎng)絡(luò)設(shè)備的端口狀態(tài)、端口流量、CPU利用率、內(nèi)存利用率、端口丟包率、端口錯(cuò)包率等參數(shù)。端口狀態(tài)由UP狀態(tài)變成DOWN狀態(tài)、端口流量超過閾值、設(shè)備的CPU或內(nèi)存利用率超過閾值等,此網(wǎng)絡(luò)設(shè)備的顏色變成紅色、出現(xiàn)告警信息,系統(tǒng)會(huì)觸發(fā)用戶設(shè)置的告警動(dòng)作,如短信通知、郵件通知和系統(tǒng)彈出框等。
通過拓?fù)鋱D實(shí)現(xiàn)應(yīng)用系統(tǒng)的全局直觀展現(xiàn)。從網(wǎng)絡(luò)層的路由器、交換機(jī)、防火墻到主機(jī)、數(shù)據(jù)庫、中間件的全局監(jiān)控、再借助HTTP模擬請(qǐng)求監(jiān)控訪問端口,實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)各個(gè)環(huán)節(jié)的全局監(jiān)控,任何一個(gè)環(huán)節(jié)出現(xiàn)問題都會(huì)在拓?fù)鋱D上紅色告警并觸發(fā)告警動(dòng)作。通過應(yīng)用系統(tǒng)拓?fù)?,?shí)現(xiàn)了應(yīng)用系統(tǒng)的性能瓶頸的快速、準(zhǔn)確定位。
5.2告警及通知
系統(tǒng)管理員通過管理頁面設(shè)置告警參數(shù)和告警動(dòng)作。告警參數(shù)需要設(shè)置告警級(jí)別、告警閾值(支持一般告警、嚴(yán)重告警、故障告警三個(gè)閾值)、持續(xù)時(shí)間、告警參數(shù)對(duì)應(yīng)的測(cè)點(diǎn)。以主機(jī)CPU利用率為例來說明告警設(shè)置原則,如用戶設(shè)置CPU利用率超過90%并且持續(xù)十分鐘以上告警,需要用戶自定義的參數(shù)包括:告警級(jí)別、告警描述、閾值上下限、持續(xù)時(shí)間。
對(duì)于核心資產(chǎn)的關(guān)鍵參數(shù),為實(shí)現(xiàn)快速響應(yīng),用戶可以設(shè)置告警動(dòng)作來通知相關(guān)責(zé)任人,告警動(dòng)作包括郵件、短信、系統(tǒng)彈出框等方式,用戶還可以任意組合的告警動(dòng)作。
5.3資產(chǎn)初始化
降低添加監(jiān)控資產(chǎn)操作復(fù)雜度對(duì)提高整個(gè)系統(tǒng)的用戶體驗(yàn)至關(guān)重要。因此在實(shí)現(xiàn)本系統(tǒng)資產(chǎn)初始化功能時(shí),我們進(jìn)行了多次顛覆式的調(diào)整,以最大限度的降低操作復(fù)雜度、提升用戶體驗(yàn)。
主機(jī)、網(wǎng)絡(luò)設(shè)備初始化,用戶錄入IP地址后系統(tǒng)自動(dòng)檢測(cè)主機(jī)邏輯磁盤、網(wǎng)卡、網(wǎng)絡(luò)設(shè)備端口等部件信息,自動(dòng)生成系統(tǒng)預(yù)定義的監(jiān)控參數(shù)、自動(dòng)按照定義的規(guī)則生成實(shí)時(shí)數(shù)據(jù)庫測(cè)點(diǎn)信息、用戶只需要將自動(dòng)生成的測(cè)點(diǎn)導(dǎo)出,直接導(dǎo)入到實(shí)時(shí)數(shù)據(jù)庫,即可完成設(shè)備監(jiān)控的初始化,用戶可以根據(jù)需要設(shè)置告警觸發(fā)的動(dòng)作。這種方式最大程度地簡(jiǎn)化了系統(tǒng)初始化工作,極大地提升了用戶體驗(yàn)。
六、結(jié)語
基于實(shí)時(shí)數(shù)據(jù)庫的IT資產(chǎn)監(jiān)管系統(tǒng)方案,目的在于充分利用實(shí)時(shí)數(shù)據(jù)庫吞吐量大、支持高并發(fā)、支持海量存儲(chǔ)的優(yōu)勢(shì),結(jié)合它自身的插件方便快捷地實(shí)現(xiàn)IT資產(chǎn)監(jiān)控參數(shù)的采集和海量存儲(chǔ),提高了開發(fā)效率和系統(tǒng)穩(wěn)定性、實(shí)現(xiàn)對(duì)主機(jī)(包括虛擬化主機(jī))、網(wǎng)絡(luò)設(shè)備、數(shù)據(jù)庫、中間件等IT資產(chǎn)性能的全面監(jiān)控。
參 考 文 獻(xiàn)
[1]陶利軍. 決戰(zhàn)Nginx高性能Web服務(wù)器詳解與運(yùn)維系統(tǒng)卷.
[2]T. BONALD. 網(wǎng)絡(luò)性能分析原理與應(yīng)用.
[3]李先鋒. 基于SNMP的網(wǎng)絡(luò)設(shè)備性能監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).