王春波 胡亞 陳剛
【摘要】 SAP系統(tǒng)作為江蘇電力公司的核心系統(tǒng),承擔著人、財、物等核心業(yè)務功能,系統(tǒng)的健康穩(wěn)定運行就顯得尤為重要。但實際運維過程中往往是在系統(tǒng)出現(xiàn)故障時才能發(fā)現(xiàn)問題。不僅對業(yè)務操作產(chǎn)生一定的影響,有時甚至產(chǎn)生無法挽回的直接經(jīng)濟損失。因此,有必要深入研究如何能夠及時有效監(jiān)控SAP系統(tǒng)運行狀態(tài),實現(xiàn)主動運維,保證系統(tǒng)健康穩(wěn)定運行。
【關鍵詞】 SAP 信息系統(tǒng) 監(jiān)控平臺
前言
從2007年6月啟動以來, 江蘇電力SG186工程項目經(jīng)歷了業(yè)務流程優(yōu)化、試點單位實施、推廣單位實施和持續(xù)深化應用等階段,已構(gòu)建了覆蓋核心業(yè)務的一體化業(yè)務應用平臺,目前正在進行SG-ERP的深入建設。隨著越來越多的系統(tǒng)投入正式運行,使公司各基層單位、各個部門之間的相互聯(lián)系日益增強。同時各個系統(tǒng)在縱向、橫向耦合程度日益加深,公司信息化水平已發(fā)生了質(zhì)的飛躍。為了保障公司各項業(yè)務在信息系統(tǒng)的支撐下能夠正常開展,江蘇省電力公司越來越關注本公司的系統(tǒng)運維。SAP系統(tǒng)作為江蘇電力公司的核心系統(tǒng),承擔著人、財、物等核心業(yè)務功能,系統(tǒng)的健康穩(wěn)定運行就顯得尤為重要。
目前在SAP系統(tǒng)的運行維護工作中,往往是在系統(tǒng)出現(xiàn)故障時才能發(fā)現(xiàn)問題,運維人員疲于應急維修,不僅對業(yè)務操作產(chǎn)生一定的影響,有時甚至產(chǎn)生無法挽回的直接經(jīng)濟損失。因此,有必要深入研究如何能夠及時有效監(jiān)控SAP系統(tǒng)運行狀態(tài),并且運用信息化手段,主動運維監(jiān)測系統(tǒng)狀態(tài),保證系統(tǒng)健康穩(wěn)定運行。
一、開發(fā)平臺設計
該監(jiān)控平臺是基于SAP系統(tǒng)運行情況進行二次開發(fā),采用的是C/S架構(gòu)。客戶端分布在各業(yè)務部門的終端。服務器統(tǒng)一存放在省信通公司,便于設備的日常維護和檢修。
1.1操作系統(tǒng)選擇
Linux是一個多用戶、多任務、支持多線程和多CPU的操作系統(tǒng),是一個性能穩(wěn)定的多用戶網(wǎng)絡操作系統(tǒng)。SAP系統(tǒng)也安裝在此操作系統(tǒng)上,因此,本平臺的服務器也選擇Linux。
1.2數(shù)據(jù)庫選擇
Oracle是應用廣泛的主流數(shù)據(jù)庫,江蘇電力的SAP系統(tǒng)也采用Oracle作為后臺數(shù)據(jù)庫,為了系統(tǒng)更好的集成,方便維護,本平臺也采用Oracle作為數(shù)據(jù)庫
1.3開發(fā)語言選擇
為了更好的與SAP系統(tǒng)集成,本平臺開發(fā)使用ABAP語言,通過Html來進行平臺無關的頁面展示,采用Div+Css技術(shù)進行強大靈活的屏幕自適應布局,配合JavaScript來實現(xiàn)豐富的動畫過渡和信息交互。
二、功能設計
SAP系統(tǒng)運行狀態(tài)監(jiān)控平臺由四個功能模塊(指標調(diào)度模塊、監(jiān)控計算指標模塊、指標匯總及分析處理模塊、監(jiān)控指標配置模塊)構(gòu)成。ERP信息系統(tǒng)狀態(tài)評估系統(tǒng)應用功能如圖1所示。
三、系統(tǒng)開發(fā)與功能實現(xiàn)
3.1系統(tǒng)進程監(jiān)控
SAP應用服務器進程類型共有6種:DIA(對話進程)、UPD(更新進程)、ENQ(隊列進程)、BTC(批處理進程)、SPO(脫機進程)、UP2(V2更新進程)。
特定類型的任務只能通過特定類型的進程進行處理,而每臺服務器針對各類型都有一定的比例分配,若同種類型的任務同一時間段大量爆發(fā),那么就會造成任務的堵塞,排隊的任務就有可能出現(xiàn)等待超時而導致業(yè)務操作受影響,甚至對業(yè)務數(shù)據(jù)產(chǎn)生影響。我們通過對各服務器的進程使用情況的監(jiān)控來進行壓力風險規(guī)避,監(jiān)控的參數(shù)包括各服務器各類型進程的進程使用率、進程CPU占比、進程占用內(nèi)存,進程DB交互,進程I/O等。
3.2內(nèi)存監(jiān)控
內(nèi)存對于系統(tǒng)來說毫無疑問是非常重要的參數(shù)。需要對每臺服務器的內(nèi)存進行監(jiān)控,服務器上的內(nèi)存一旦不夠,發(fā)生的業(yè)務問題所帶來的影響都無發(fā)預測和估計,當內(nèi)存使用率接近極限值的時候需要進行告警。
雖然進程監(jiān)控中也涉及一部分進程占用的內(nèi)存監(jiān)控,但還需從服務器層面對內(nèi)存進行的監(jiān)控,是服務器級別的系統(tǒng)健康運行的重要參數(shù)之一。這里主要針對空閑內(nèi)存(Spared Memory)、堆內(nèi)存(Heap Memory)和擴展內(nèi)存(Extended Memory)進行監(jiān)控。
3.3系統(tǒng)鎖情況監(jiān)控
業(yè)務對象(Business Object)在SAP中是很重要的存在,核心的系統(tǒng)業(yè)務操作實際上是對業(yè)務對象的操作,所有的業(yè)務操作都需要保證業(yè)務對象事務的ACID特性。以項目為例,圍繞項目來進行業(yè)務發(fā)生和管控,假設要在這個項目下進行采購訂單的創(chuàng)建,同時也要為這個項目進行預算調(diào)整分配,但不能同時進行兩件事(比如預算調(diào)減,同時創(chuàng)建訂單,最終結(jié)果很可能是超預算,這樣的內(nèi)控就沒控?。?,而訂單和預算是兩個不同的東西,如何保證兩個操作的串行發(fā)生,就需要對業(yè)務對象進行加鎖以保證業(yè)務的不沖突。
鎖的重要性不言而喻,而對于SAP這種業(yè)務高度集成的軟件來說,保障其正常的使用,就顯得尤為重要。這里就需要監(jiān)控:
系統(tǒng)鎖的總數(shù):系統(tǒng)鎖的數(shù)量有限制的,若系統(tǒng)當前鎖個數(shù)超過這個限制,那么就會導致鎖等待的發(fā)生,操作可能會因為超時而dump;
系統(tǒng)鎖的信息維度分析:對系統(tǒng)正常運行,以1000個鎖為例,若是在一個幾千人使用的系統(tǒng)環(huán)境里,這個指標看起來是很健康的,但是,如果是由同一個人或同一個程序產(chǎn)生的,那么這種情況是否應該值得關注呢?單憑某一時刻的體量是無法暴露出這樣的隱患的,所以要根據(jù)創(chuàng)建賬號,創(chuàng)建程序,訪問終端等維度對系統(tǒng)鎖進行記錄統(tǒng)計。
3.4系統(tǒng)TRFC/QRFC狀態(tài)監(jiān)控
TRFC(事務RFC,Transactional Remote-Function-Call)和QRFC(隊列RFC,Queue Remote-Function-Call)是和外圍系統(tǒng)或自身進行異步交互的重要方式之一,實際上QRFC是TRFC中的特例,所不同的是,QRFC是無序的,而QRFC是存在隊列進行控制的,即串行發(fā)生的。若系統(tǒng)中的TRFC和QRFC出現(xiàn)信道堵塞或隊列堵塞的話,那么也是會對業(yè)務產(chǎn)生影響的。所以不僅要監(jiān)控未處理和處理錯誤的TRFC和QRFC數(shù)量,還要按照程序、賬戶、終端等維度進行監(jiān)控記錄統(tǒng)計,對于各維度極端異常的情況需要暴露給運維人員。
3.5系統(tǒng)dump數(shù)據(jù)監(jiān)控