趙長軍
【摘 要】本文通過將油氣生產(chǎn)物聯(lián)網(wǎng)實時運行數(shù)據(jù)以數(shù)據(jù)流的方式,注入到Storm流式數(shù)據(jù)處理引擎中,并在引擎中加載各類告警規(guī)則,對實時運行的情況進行在線告警監(jiān)測。通過利用Storm可對海量流式實時數(shù)據(jù)進行高速實時處理的優(yōu)點,能夠快速對大量的多維度運行數(shù)據(jù)進行精確的分析處理;同時利用Storm的多層級處理方式,將各級輸出數(shù)據(jù)組合為新的規(guī)則輸入,實現(xiàn)各類告警規(guī)則的層層疊加,形成更為完善的分析體系,提升處理的準確性,達到提高油氣生產(chǎn)的安全性的目的。
【關(guān)鍵詞】Storm;告警分析;流式數(shù)據(jù)
0 引言
油氣生產(chǎn)的安全控制是生產(chǎn)環(huán)節(jié)中各級部門最關(guān)注的一環(huán)。國內(nèi)油氣企業(yè)已經(jīng)著手建立油氣生產(chǎn)物聯(lián)網(wǎng),從而希望可以通過集成現(xiàn)有的SCADA系統(tǒng)等的生產(chǎn)運行數(shù)據(jù),同時通過建設物聯(lián)網(wǎng)來豐富數(shù)據(jù)來源,獲取更為完整的運行環(huán)境、設備監(jiān)控等多維度數(shù)據(jù)。本文基于Storm流式數(shù)據(jù)處理,將告警規(guī)則導入到Storm中,對采集的生產(chǎn)數(shù)據(jù)流進行實時數(shù)據(jù)清洗、規(guī)則分析,實現(xiàn)對海量實時數(shù)據(jù)的告警處理及連鎖分析處理,從而為生產(chǎn)運行中各類故障問題提供實時度更高、分析維度更多、告警更為精確的技術(shù)支持。通過Storm分析技術(shù)的整合以達到如下效果:
1)實時度更高:對海量數(shù)據(jù)流進行多維度的告警規(guī)則實時分析;
2)規(guī)則疊加與結(jié)果復用:針對故障判斷規(guī)則進行疊加,即前一個規(guī)則可作為后一個規(guī)則的輸入,達到簡單規(guī)則處理,結(jié)果又可以重復利用分析的目的;
3)提升告警準確性:由同時發(fā)生的多種相關(guān)非正常工況進行多維數(shù)據(jù)組合告警分析,讓結(jié)果更準確。
1 Storm流式數(shù)據(jù)處理運用
油氣生產(chǎn)中告警分析處理應用牽涉的生產(chǎn)數(shù)據(jù)流的量大、多變,要提升告警的準確性和實時性,大數(shù)據(jù)儲存技術(shù)的發(fā)展對于油氣行業(yè)以TB數(shù)量級計算的數(shù)據(jù)分析處理提供了技術(shù)基礎。
本文引入了Storm流式數(shù)據(jù)實時分析技術(shù),將各類設備的海量實時運行數(shù)據(jù)應用于在線告警分析,實現(xiàn)運行監(jiān)控、告警預警、改進管理等。Storm是一套實時的、分布式以及具備高容錯的數(shù)據(jù)計算系統(tǒng),其最大的優(yōu)點就是對海量實時數(shù)據(jù)流的高速并行處理,通過對數(shù)據(jù)進行多輪次的加工,生成不同類型的數(shù)據(jù)結(jié)果,用于故障告警、生產(chǎn)管理、決策輔助等。
Storm對流式數(shù)據(jù)的處理,以Topology任務形式存在。通過加載開發(fā)的Topology任務到Storm,即可將源源不斷的數(shù)據(jù)流輸入到告警規(guī)則判斷中,對生產(chǎn)運行進行實時監(jiān)控。
Topology的構(gòu)成如圖1所示,Spout是數(shù)據(jù)入口,負責數(shù)據(jù)流的讀入;Bolt是處理數(shù)據(jù)、加工數(shù)據(jù)的節(jié)點;中間數(shù)據(jù)被封裝在Tuple中,輸入到Bolt中進行處理,同時Bolt節(jié)點可以產(chǎn)生新的Tuple;Grouping則是對輸出的Tuple進行歸類分發(fā)給下一節(jié)點Bolt。
其中Topology由幾個部分組成,含義如下:
1)Tuple:數(shù)據(jù)處理單元,一個Tuple由多個字段組成。例如壓縮機的輸入氣壓與輸出氣壓;
2)Spout:從外部獲取數(shù)據(jù),輸出原始的Tuple;
3)Bolt:接收Spout/Bolt輸出的Tuple,處理后輸出新的Tuple;
4)Grouping:Tuple從上游到某個下游多個并發(fā)Task的分組方式。
一個實時數(shù)據(jù)告警分析應用的Topology就由上述的Spout、Bolt、Grouping組合而成,構(gòu)成了對流式生產(chǎn)數(shù)據(jù)的實時計算分析。
根據(jù)油氣生產(chǎn)的實際情況,可以根據(jù)需要給Spout和Bolt設計一種能夠處理油氣生產(chǎn)海量數(shù)據(jù)的Topology,當一個特定數(shù)據(jù)值例如氣壓、溫度、含硫度等超過預設的臨界值時觸發(fā)警報,這就是一個告警規(guī)則。使用Storm的Topology,逐行讀入采集數(shù)據(jù)并且監(jiān)視輸入數(shù)據(jù)。同時各個告警規(guī)則的輸出可以進一步的組合,形成更為復雜的告警規(guī)則Bolt的輸入,進行多維數(shù)據(jù)監(jiān)測與分析。
Storm對運行實時數(shù)據(jù)流分析以進行告警監(jiān)測的結(jié)構(gòu)如圖2所示。
如圖2所示,各類實時生產(chǎn)數(shù)據(jù)流通過Spout發(fā)射到Storm中進行告警分析,而Storm加載各類告警規(guī)則Bolt,并對數(shù)據(jù)流的Tuple進行層層處理。如果根據(jù)告警規(guī)則需要觸發(fā)各類動作,則根據(jù)動作定義對外發(fā)送,并觸發(fā)各類告警通知。
2 告警規(guī)則Bolt設計
采集數(shù)據(jù)的告警分析將主要聚焦于門限值的兩種分析類型:瞬間門限值(instant thershold)和時間序列門限值(time series threshold)。
瞬間門限值監(jiān)測:指數(shù)據(jù)某個字段的值在某個瞬間超過了預設的門限值,如果條件符合的話則觸發(fā)一個Trigger。
時間序列門限值監(jiān)測:指字段的值在一個給定的時間段內(nèi)超過了預設的門限值,如果條件符合則觸發(fā)一個觸發(fā)器。比如:在5分鐘內(nèi),氣壓超過某設定值的設備。
與告警規(guī)則Bolt相結(jié)合,通過設置多條件的復雜規(guī)則,可實現(xiàn)連續(xù)門限在Storm中的監(jiān)測。油氣生產(chǎn)的需求分析可知,各個油氣生產(chǎn)井、站、管線、設備設施,在生產(chǎn)過程中涉及到數(shù)據(jù)包括生產(chǎn)運行參數(shù)、工作流程控制、井站實時監(jiān)控、設備采集數(shù)據(jù)監(jiān)控(例如溫度、濕度、壓力值)等,數(shù)據(jù)采集和分析過程都需要制定一系列監(jiān)測與告警規(guī)則,以便能夠及時發(fā)現(xiàn)安全問題。因此,制定的規(guī)則是:設置一個或多個條件,對數(shù)據(jù)對象進行分析判斷,當滿足這些條件時觸發(fā)一個或多個操作。
本文將Storm以規(guī)則引擎的形式存在,而Topology中用到的規(guī)則判斷即一個個的Bolt,規(guī)則Bolt以組件形式存在,實現(xiàn)將處理引擎與業(yè)務邏輯的分離。使用預定義的語義模塊編寫業(yè)務規(guī)則Bolt,接受數(shù)據(jù)輸入,解釋業(yè)務規(guī)則,并根據(jù)規(guī)則做出業(yè)務決策,應用于對油氣生產(chǎn)物聯(lián)網(wǎng)采集數(shù)據(jù)的告警判斷與分析中。
Storm規(guī)則引擎主要功能是存儲、分類和管理規(guī)則Bolt,驗證規(guī)則的一致性,它的任務是把當前提交給引擎的數(shù)據(jù)對象與加載的引擎中的規(guī)則Bolt進行測試和對比,激活符合當前數(shù)據(jù)狀態(tài)下的業(yè)務規(guī)則,觸發(fā)其能否匹配對應的規(guī)則并執(zhí)行規(guī)則中所規(guī)定的動作。
當采集到各種生產(chǎn)設備新的數(shù)據(jù)時,數(shù)據(jù)輸入Topology中進行實時分析,將每個新數(shù)據(jù)和預設報警門限值或連續(xù)門限值的規(guī)則Bolt進行測試比較,測試條件包括“大于”、“小于”、“等于”、“變化率大于”、“變化率小于”等等。設備運行的預警與報警過程需要依據(jù)設備運行的具體工況、參數(shù)間的邏輯關(guān)系,利用各類規(guī)則結(jié)合現(xiàn)場經(jīng)驗建立。
Storm規(guī)則引擎的運行有下面幾個構(gòu)件支撐:
1)規(guī)則庫(Rule set):規(guī)則庫就是許多規(guī)則的集合。每條規(guī)則包含一個條件過濾器和多個動作。一個條件過濾器可以包含多個過濾條件。條件過濾器是多個布爾表達式的組合,其組合結(jié)果仍然是一個布爾類型的。在程序運行時,動作將會在條件過濾器值為真的情況下執(zhí)行。
2)匹配器(Context):是規(guī)則引擎工作的上下文環(huán)境,用來關(guān)聯(lián)工作存儲器和規(guī)則集容器,將工作存儲器中的應用程序?qū)ο笈c規(guī)則集容器中的一系列規(guī)則進行匹配,并將匹配成功的規(guī)則實例放入執(zhí)行器中。
3)執(zhí)行器(Agenda):存放匹配成功的規(guī)則實例,用來執(zhí)行規(guī)則的動作部分,并將執(zhí)行結(jié)果傳回給應用程序。
邏輯規(guī)則配置可采用圖形化方式實現(xiàn),圖3是配置的1個告警規(guī)則Bolt。
3 告警規(guī)則Bolt處理過程
通過告警規(guī)則Bolt的配置,完成后加載到Storm中,則可以對設備運行數(shù)據(jù)進行處理。
1)導入規(guī)則集:規(guī)則引擎指明使用哪個規(guī)則集,并且可以進一步指出要對哪個規(guī)則進行計算,以及是否過濾計算結(jié)果。
2)規(guī)則匹配:在匹配器中將工作存儲器中的應用對象與規(guī)則Bolt的條件部分進行匹配。如果匹配成功,則輸出對應的Tuple。
3)執(zhí)行規(guī)則:在規(guī)則匹配時觸發(fā)執(zhí)行動作。
通過對告警規(guī)則Bolt的配置、加載和處理,設備運行數(shù)據(jù)一旦傳入到Storm中,即可對流式數(shù)據(jù)按照規(guī)則定義進行處理判斷,生成對應告警對象。
4 告警通知
Storm根據(jù)告警規(guī)則及連鎖門限的判斷,生成各類告警后可觸發(fā)各類動作,實現(xiàn)對生產(chǎn)現(xiàn)場各點的區(qū)域監(jiān)測、重點設備監(jiān)測、智能預警提醒、應急處理等功能,可根據(jù)不同的告警類型通知不同的人員。還可結(jié)合地圖系統(tǒng),快速在地圖中定位站點位置并查看故障地圖,同時在WEB網(wǎng)頁上直觀、形象查看告警分布情況以及實際位置信息,從物聯(lián)網(wǎng)獲取各探測設備的信息,快速聯(lián)系責任人進行故障處理。
5 結(jié)論
本文通過將油氣生產(chǎn)物聯(lián)網(wǎng)的實時運行數(shù)據(jù)作為多維數(shù)據(jù)源,輸入到Storm告警分析模型中,利用Storm的并行處理優(yōu)勢和分層分析特點,解決油氣生產(chǎn)設備運行實時數(shù)據(jù)量大、影響因素眾多帶來的常規(guī)告警分析方法不準確的問題,特別適合于數(shù)據(jù)量大、工藝流程復雜、對告警分析精確度要求高的油氣生產(chǎn)行業(yè),提升生產(chǎn)運行安全和綜合運營效益。
【參考文獻】
[1]張永華.基于大數(shù)據(jù)技術(shù)的電信網(wǎng)絡告警關(guān)聯(lián)分析設計與實現(xiàn)[J].電信工程技術(shù)與標準化,2016,29(4):18-23
[2]劉子英,唐宏建,肖嘉耀,張騫.基于流式計算的Web實時故障診斷分析與設計[J].華東交通大學學報,2014(1):119-123.
[3]王德文,楊力平.智能電網(wǎng)大數(shù)據(jù)流式處理方法與狀態(tài)監(jiān)測異常檢測[J].電力系統(tǒng)自動化,2016,40(14):122-128.
[4]閆歡,張宜生,李德群.規(guī)則引擎在制造企業(yè)MES中的研究與應用[J].計算機工程,2007,33(7):210-212.
[5][美]吉奧茲,[美]奧尼爾.Storm分布式實時計算模式[M].董昭,譯.機械工業(yè)出版社,2015,1.
[責任編輯:田吉捷]