張利益, 李可, 王甲甲
(國網信通產業(yè)集團公司 安徽繼遠軟件有限公司, 合肥 230088)
當前,電力系統(tǒng)信息化持續(xù)深化,數(shù)據庫種類和數(shù)量不斷增加,其中Oracle數(shù)據庫是電力信息系統(tǒng)中主流數(shù)據庫。IT架構復雜性增長始終快于人員增長,熟悉業(yè)務的數(shù)據庫運維人員積累緩慢,資源不足問題一直存在,運維人員疲于應付巡檢和故障檢修,因此對于數(shù)據庫運維管理來說是一個巨大挑戰(zhàn),亟需提升數(shù)據庫的自動化巡檢能力與實時監(jiān)控水平,提升Oracle數(shù)據庫運維能力。
本文通過對運維現(xiàn)狀進行深入分析,結合豐富的現(xiàn)場運維經驗,設計研發(fā)了一套實用的數(shù)據庫深度巡檢工具。通過靈活定義監(jiān)控指標,全天實時采集數(shù)據,發(fā)現(xiàn)數(shù)據庫存在或潛在的問題,從而快速精準的解決問題,確保數(shù)據庫能為應用提供穩(wěn)定高效的數(shù)據存取服務,最終能夠提高數(shù)據庫運維效率,提升運維管理水平。
Oracle數(shù)據庫深度巡檢工具基于運維人員對于Oracle運維的深度理解,結合日常運維經驗,從配置,性能,運行,狀態(tài)四大類指標構建了ORACLE數(shù)據庫的指標模型。配合上高頻的巡檢,及時的告警,快速的檢索,從而使ORACLE運維的規(guī)范化與智能化。
其中規(guī)范化指的是在日常運維工作中,通過此運維工具,統(tǒng)一管理數(shù)據庫信息,自動化巡檢數(shù)據庫各項指標,規(guī)范化數(shù)據庫的日常管理工作,防止出現(xiàn)誤操作影響數(shù)據庫穩(wěn)定性。
智能化指的是,在資源管理、告警判斷、日志查詢中進行關聯(lián)分析、根因分析,在出現(xiàn)故障時能夠有效的為運維人員提供可靠有效的數(shù)據,能夠快速并準確的定位問題。
本工具采用B/S架構,基于國家電網統(tǒng)一應用開發(fā)(SG-UAP)平臺研發(fā),研發(fā)語言是JAVA,項目的后臺框架是SSH框架構成的三層架構,前端使用Easyui等技術進行搭建,數(shù)據庫采用Oracle數(shù)據庫與ElasticSearch數(shù)據庫,消息隊列使用Kafka組件,緩存使用Redis組件,本工具所有操作均在瀏覽器中完成。
如圖1所示。
圖1 系統(tǒng)架構圖
如上圖所示。系統(tǒng)的主要功能有資源管理、自動化巡檢、智能告警、性能監(jiān)測、日志分析五大模塊。主要被采集的對象為Oracle數(shù)據庫。本地數(shù)據庫存儲由兩部分組成,分別是結構化存儲Oracle數(shù)據庫與非結構化存儲ElasticSearch數(shù)據庫。其中ElasticSearch是一個能夠提供高并發(fā)、易擴展、高可用的分布式搜索引擎,能夠為系統(tǒng)提供一個易于查詢和共享的接口,成為了企業(yè)級大數(shù)據解決方案的關鍵工具[1]。在此工具中主要用于存儲數(shù)據庫時序數(shù)列指標數(shù)據與數(shù)據庫告警日志,極大的提高了查詢效率與存儲上限。
由巡檢工具客戶端發(fā)起采集請求,采集服務端響應客戶端的請求,從數(shù)據庫中遠程的多線程獲取采集信息。
系統(tǒng)主要功能為資源管理、自動化巡檢、智能告警、性能監(jiān)測、日志分析五大模塊。
數(shù)據采集主要由指標數(shù)據采集與日志數(shù)據庫采集兩大類采集構成。Oracle數(shù)據庫深度巡檢工具將數(shù)據采集部分獨立部署,通過遠程調用發(fā)送指定參數(shù)則可以進行數(shù)據的采集。所有的數(shù)據采集均是通過協(xié)議來完成端到端的遠程采集,其中的使用的主要協(xié)議是java數(shù)據庫連接協(xié)議(Java DataBase Connectivity,JDBC)、安全外殼協(xié)議(Secure Shell,SSH)以及簡單網絡管理協(xié)議(Simple Network Management Protocol,SNMP)。通過多線程技術提升采集效率,將采集配置信息發(fā)送至采集服務消息隊列上,通過消息隊列可在一定程度上使數(shù)據實時計算效率明顯提高。由多個線程去處理消息隊列中的數(shù)據[2],去指定的數(shù)據庫上進行數(shù)據采集,將返回的結果放入消息隊列中再返回至客戶端,客戶端經過數(shù)據格式化處理后進行告警判斷,并存入相應的數(shù)據庫中。
資源管理功能模塊作為此工具的基礎,統(tǒng)一管理了數(shù)據庫資源信息。主要依托于現(xiàn)有配置管理數(shù)據庫(Configuration Management Databse,CMDB)所構造,是真實環(huán)境中服務資產在軟件系統(tǒng)中的邏輯體現(xiàn),其目的是有效管理資產,并實現(xiàn)對其他服務管理流程的支持[3]。
其中主要涉及到數(shù)據庫集群管理、數(shù)據庫節(jié)點管理、主機管理、業(yè)務應用管理、連接配置信息管理、運維人員管理等模塊構成。其中以節(jié)點管理為核心,節(jié)點部署于主機上,完善連接配置信息與運維人員信息,比如Oracle數(shù)據庫連接配置需要從而能夠為數(shù)據采集與巡檢提供支撐。多節(jié)點隸屬于數(shù)據集群,業(yè)務應用與數(shù)據庫集群關聯(lián)。
本系統(tǒng)通過quartz組件按照設定的巡檢頻率對數(shù)據庫進行定時巡檢,定時巡檢是基于準確時間點的自動化調度,同時也可以根據用戶自己設定的時間間隔或設定的調度次數(shù)自動執(zhí)行任務[4]。對巡檢結果進行查詢分析,能按指標輸出每次的巡檢報告。將監(jiān)控指標固定于工具中,為運維人員巡檢提供依據。運維人員可根據實際需求,自行設定的巡檢指標和頻率,實現(xiàn)巡檢指標可配置,巡檢報告可定制。
自動化巡檢中主要巡檢Oracle數(shù)據庫以下指標:表空間、文件系統(tǒng)、集群狀態(tài)、監(jiān)聽狀態(tài)、等待事件、索引狀態(tài)、運行時長、監(jiān)聽日志大小、歸檔日志占用率、連接數(shù)等指標。
在實際運維中,運維人員通過人工方式不能第一時間發(fā)現(xiàn)數(shù)據庫故障和隱患,對故障不能快速定位和及時處置,影響了數(shù)據庫的正常使用。而智能告警通過智能預警功能第一時間能發(fā)現(xiàn)故障和隱患,將運維管理關口前移,做到主動運維,提高用戶滿意度。
通過預先指定告警規(guī)則,規(guī)則創(chuàng)建基于各維護專家經驗,根據告警的發(fā)生規(guī)律實現(xiàn)關聯(lián)規(guī)則的自動調整[5]。告警主要分為兩大類,閾值告警可動態(tài)調整的為閾值調整。比如針對表空間使用率告警,隨著一段時間的穩(wěn)定運行,閾值也會隨之降低或上升,從而更準確的進行告警。事件告警則是屬于嚴重的告警,如數(shù)據庫監(jiān)聽或集群狀態(tài)異常,則表明數(shù)據庫出現(xiàn)故障,需要立即進行處理。
運維人員通過性能監(jiān)測列表觀察數(shù)據庫的性能和負載情況,本工具采用時間模型建立Oracle數(shù)據庫性能模型,以性能負載為主線,快速定位性能瓶頸,實現(xiàn)端到端性能監(jiān)控。通過此模型可以精準追溯到性能瓶頸。其中涉及的性能指標主要為用戶響應時長、等待事件、連接數(shù)情況、緩存命中率、DB TIME等指標。根據指標和日期建立基線。數(shù)據庫運維人員根據選擇的關鍵指標和日期建立基線。便于日后性能的比對分析。
除了數(shù)據庫指標,數(shù)據庫對象也同時體現(xiàn)出數(shù)據庫性能情況。由于數(shù)據庫中對象眾多,我們對系統(tǒng)影響比較大的對象重點關注,一旦重點關注的對象發(fā)生突變我們能夠及時掌握,防患于未然。這里我們選取了表空間、表、索引、SQL和長事務五類數(shù)據庫對象作為性能分析的依據。對表和索引的訪問頻率的記錄便于為后續(xù)制定歷史數(shù)據歸檔策略提供依據;對未使用的索引也能及時清理,改善性能;對于執(zhí)行次數(shù)較多或對系統(tǒng)性能影響較大的SQL加入重點關注,監(jiān)測執(zhí)行計劃,并建立sql基線,發(fā)生變更及時預警;對長事務的監(jiān)控能夠及時掌握可能對數(shù)據庫的影響。
對Oracle告警日志、CRS日志、監(jiān)聽日志和ASM日志,通過采集服務進行對日志文件進行長連接,實時的讀取內容并進行存儲。由于數(shù)據庫的日志都是非結構化數(shù)據,存儲需要大量空間,另外全文檢索效率也不高,對于這些大量日志需要構建非結構化數(shù)據的統(tǒng)一存儲管理并建立搜索引擎,對日志中錯誤信息進行分類分級管理。這里我們使用了ElasticSearch作為日志存儲的數(shù)據庫。
能根據錯誤關鍵字分析診斷,一旦發(fā)現(xiàn)錯誤及時觸發(fā)預警。能夠根據開始結束時間實時的查詢不同類型的數(shù)據庫日志,并且提供豐富的圖表直觀的查詢。
本文結合當前流行框架技術,深入挖掘Oracle數(shù)據庫運維經驗,通過Oracle數(shù)據庫深度巡檢工具的設計與實現(xiàn),實現(xiàn)了數(shù)據庫資源統(tǒng)一管理、數(shù)據自動采集、全天候自動化巡檢、數(shù)據庫性能監(jiān)測分析、閾值觸發(fā)告警、日志智能分析等功能,從而幫助數(shù)據庫運維人員進行高效的日常運維管理,運行狀態(tài)監(jiān)控診斷,優(yōu)化數(shù)據庫運行性能。極大地提高了Oracle數(shù)據庫運維管理能力,故障處理能力,達到了預期目標。