許鑫
人社行業(yè)的業(yè)務(wù)包括醫(yī)療、社保、工傷、生育、就業(yè)等,與民生密切相關(guān),其中醫(yī)療結(jié)算業(yè)務(wù)更是關(guān)系到老百姓的身體健康和生活質(zhì)量。人社信息中心擔(dān)負著全市醫(yī)療結(jié)算業(yè)務(wù)的核心保障職責(zé)。長期以來,醫(yī)療結(jié)算業(yè)務(wù)的運維工作,經(jīng)歷了幾個階段:
一、初級階段:這個階段,醫(yī)療相關(guān)的系統(tǒng)還不龐大,運維工作以人工+經(jīng)驗為主。出現(xiàn)故障時,醫(yī)院會打電話過來,根據(jù)醫(yī)院描述的故障現(xiàn)象,運維人員憑經(jīng)驗對故障進行判斷,查找和定位故障點。這種方式對人的要求和經(jīng)驗依賴程度太高,并且故障的定位和解決時間過長;
二、發(fā)展階段:在這個階段,運維人員已經(jīng)開始結(jié)合監(jiān)控軟件,7x24小時對設(shè)備的運行狀況進行監(jiān)控,并提供設(shè)備故障告警,解決了運維人員總是被動感知的問題。但隨著業(yè)務(wù)系統(tǒng)越來越復(fù)雜,系統(tǒng)越來越龐大,需要監(jiān)控的指標(biāo)越來越多,運維人員不斷增加監(jiān)控項,如監(jiān)控中間件、數(shù)據(jù)庫等等。這又帶來了新的問題:告警信息太多,誤報激增,運維人員已經(jīng)被這些誤報淹沒,不勝其煩,往往會在收到告警信息后直接關(guān)掉。而當(dāng)醫(yī)院真的不能刷卡時,有用的告警信息不是被忽略了,就是根本沒有告警。
是繼續(xù)增加監(jiān)控指標(biāo),還是設(shè)置更精確的閾值降低誤報率呢?這個問題擺在了運維人的面前。在解答這個問題之前,首先我們要想清楚一個問題:運維的本質(zhì)是什么?
運維,本質(zhì)上是一種服務(wù),它包括三個屬性:服務(wù)的對象、目標(biāo)和方法。
運維服務(wù)的對象,是業(yè)務(wù),比如人社行業(yè)的醫(yī)保結(jié)算業(yè)務(wù)。
運維服務(wù)的目標(biāo),是實現(xiàn)業(yè)務(wù)的可控,即把業(yè)務(wù)的運行狀況控制在我們能接收的范圍內(nèi)。再細分可以分為穩(wěn)定性可控,性能可控,安全可控。比如業(yè)務(wù)中斷不超過1分鐘,單筆刷卡交易時長不超過5秒等等。
運維服務(wù)的方法,就是為了達到上述目標(biāo)所采取的措施,監(jiān)控軟件就是其中之一,但目前的監(jiān)控軟件在設(shè)計和部署上存在一個誤區(qū):只關(guān)注基礎(chǔ)硬件和基礎(chǔ)軟件的運行狀況,不能感知業(yè)務(wù)的運行狀況。舉個例子,傳統(tǒng)的監(jiān)控軟件可以獲取系統(tǒng)硬件的CPU負荷、內(nèi)存使用率,數(shù)據(jù)庫并發(fā)數(shù),中間件的隊列等,但這些指標(biāo)都不能反映業(yè)務(wù)運行狀況的好壞,而運維人員比較關(guān)心的實時刷卡交易量,交易耗時,交易成功率等信息,卻完全不掌握。因此,傳統(tǒng)的監(jiān)控方法,設(shè)置再多的監(jiān)控指標(biāo)項,告警閾值設(shè)置的再精確,也無法解決根本問題,監(jiān)控的目標(biāo)要回歸本質(zhì)。
首先,我們采取分析醫(yī)保結(jié)算交易日志的方式,實現(xiàn)了監(jiān)控醫(yī)保結(jié)算交易的功能。分析日志的方式帶來了2個好處:非侵入式和完全旁路監(jiān)控,對業(yè)務(wù)的影響非常小。
通過分析日志獲取的交易信息,我們發(fā)現(xiàn)這和傳統(tǒng)的基礎(chǔ)硬件監(jiān)控相比,有很大的難度。下圖是某天的醫(yī)保結(jié)算業(yè)務(wù)的交易量統(tǒng)計圖,可以看到有以下幾個特點:
1.在每日的非工作時間,交易量非常少;
2.在工作時間,會有2個比較大的交易高峰,且波動較大;
3.在早8點左右,交易量會出現(xiàn)一個極大的增幅;
針對交易量的監(jiān)控告警,就存在幾個難點:
1、不同時段交易量的告警閾值如何設(shè)置?是否要針對每個時段設(shè)置不同的閾值?
2、設(shè)置告警閾值的依據(jù)是什么?傳統(tǒng)的憑經(jīng)驗進行設(shè)置的方法已經(jīng)完全不適用了;
經(jīng)過分析研究,我們制訂了醫(yī)保結(jié)算交易監(jiān)控的幾個原則:
數(shù)據(jù)化原則:以歷史數(shù)據(jù)為依據(jù),以統(tǒng)計結(jié)果為準則,主觀和經(jīng)驗為輔;
自動化原則:告警基線可自動更新,要求根據(jù)新一天的交易信息去噪點后自動更新;
可擴展原則:告警基線的計算方式,不僅能滿足全市刷卡交易的監(jiān)控告警需要,也要能滿足某一醫(yī)院、或某一區(qū)域的監(jiān)控告警需要;
實用性原則:告警基線和策略的設(shè)計,要能滿足幾個特殊時段交易的特點:
22:00到07:00這段時間,交易量非常低,波動也?。?/p>
高峰時段,交易量大,波動也很大;
08:00前后這段時間,交易量有爆發(fā)性增長;
具體的實現(xiàn)辦法是:
1、首先我們對歷史交易數(shù)據(jù)中,同一時段的交易量、交易延時數(shù)據(jù)進行統(tǒng)計分析。根據(jù)統(tǒng)計結(jié)果,繪制散點圖,得出平均值;由于根據(jù)統(tǒng)計學(xué)原理,同一時段的歷史交易量呈正態(tài)曲線分布,且超過3個標(biāo)準差的數(shù)據(jù),出現(xiàn)比例低于0.3%,可以認為是噪點數(shù)據(jù);
2、接下來,我們以平均值為基準,計算歷史數(shù)據(jù)的標(biāo)準差,將超過3個標(biāo)準差的數(shù)據(jù)標(biāo)記為噪點數(shù)據(jù)。重新計算去除噪點數(shù)據(jù)后的平均線,作為基礎(chǔ)基線;故障時段的數(shù)據(jù),由人工指定為噪點數(shù)據(jù),不進入基線計算;
3、第三步,采用移動平均法對基礎(chǔ)基線進行平滑處理,使其可以反映交易量的未來趨勢,通過增加或減少n值對改變基礎(chǔ)基線對交易變動的敏感度,如針對繁忙時段,時期n取小些,如2min,增加監(jiān)測的敏感度??臻e時段,時期n取大些,如lOmin,減少監(jiān)測的敏感度。
4、最后,根據(jù)前幾步生成的平均線,計算預(yù)警和告警的上下限。計算原則是:超過1.5個標(biāo)準差為預(yù)警線;超過2個標(biāo)準差為告警線;
5、今后,通過大量的歷史數(shù)據(jù)積累,這個基線計算方法可以延展出多種基線,女口.
周一~周五和周六周日采用不同的基線;
五一、十一、春節(jié)等國定假日的基線;
針對春、夏、秋、冬四季對基線進行加權(quán)修正;
6、對非工作時間的交易量監(jiān)控,因為交易量太少,造成閾值不好設(shè)置。我們通過統(tǒng)計學(xué)的方法,分析這一時段的交易量主要在哪個區(qū)間,作為正常區(qū)間考慮,非正常區(qū)間的數(shù)據(jù)所占的百分比作為告警的依據(jù)。
舉例說明:02:00到02:15這個時段,統(tǒng)計結(jié)果是:交易量的95%集中在5~10筆這個區(qū)間;有3%的數(shù)據(jù)低于5筆,則報警的閾值定為3%和5筆;
這一時段的告警策略就是:當(dāng)出現(xiàn)小于5筆的次數(shù)低于3次時,只做預(yù)警,超過3次,則進行故障報警;
通過以上方式,我們很好的解決的醫(yī)保結(jié)算業(yè)務(wù)的監(jiān)控告警問題,運維人員在接收到告警時,可以第一時間知道業(yè)務(wù)受影響的范圍,從而有針對性的采取分級響應(yīng)的措施,真正做到運維服務(wù)回歸本質(zhì)。