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