一種應用於軟體系統的實時監控系統及方法與流程
2023-06-12 17:57:06 1
本發明屬於軟體系統設計領域,具體涉及一種應用於軟體系統實時監控的系統和方法。
背景技術:
隨著網際網路的飛速發展,大型網站的軟體系統規模也在快速增長。這種快速增長的軟體規模和數據規模給系統監控的擴展性、實時性帶來了全新的挑戰。傳統的系統監控方式主要通過依靠技術人員人為地為不同應用、不同機器設置來實現,這無疑增加了人員工作量,又大大降低監控的工作效率。日誌是指有關計算機系統發生的事件或操作的記錄,日誌可以進行查詢、檢索。在系統出現問題時可通過日誌檢索出問題發生時刻的操作,因而日誌可作為一種能監控各類軟體系統的普遍做法。專利「在行動裝置中實現的軟體監控方法和裝置」(公開號:CN104598369A)公布了一種在行動裝置中實現的軟體監控方法和裝置。該軟體監控方法包括:抓取與待監控的應用軟體在行動裝置中的運行情況相關的軟體日誌信息;以及當軟體日誌信息中出現故障表徵欄位時,將在故障表徵欄位出現之前的預定時間段中抓取的軟體日誌信息發送到位於行動裝置外部的用於故障信息整合的設備。該發明雖然節省了用於故障信息整合的設備在行動裝置中搜集軟體日誌信息的時間,但它只是在故障發生時抓取一定時間段內的日誌,無法保證日誌收集及處理的即時性;其次日誌以數據包形式通過HTTP發送,日誌處理需要一個數據包解析的過程,導致處理滯後,不能及時、快速地定位異常現場。一般來說,通過定時任務,每隔一定時間掃描軟體系統產生的日誌,並將其發送出去,以達到監控日誌的目的。但是,這種手段的實時性並不是很好,其延時程度依賴於掃描間隔周期。而且,隨著軟體系統規模增長,日誌規模變得更大的時候,這種方案在日誌收集、匯總、報警等方面的弊端就會暴露出來,監控的實時性也將受到較大的影響。面對伺服器和網絡設備大規模增長,系統運維人員需要一個能夠完成對大規模網絡設備、伺服器、系統服務的集中統一監控系統,該系統需要具備很高的實時性、有效性與可擴展性,同時還需具有長年提供24小時監控和報警通知的能力。因而,如何在大規模軟體系統的環境下,對軟體系統進行實時的監控、報警,成為擺在系統設計和運維架構設計人員面前的一個新課題。
技術實現要素:
為解決現有技術的不足,本發明目的是,提供一種軟體系統的實時監控系統及方法,為軟體系統的運行日誌配置唯一的元信息,通過實時捕捉、篩選、處理及分析運行日誌,可根據日誌的元信息迅速獲取異常現場數據,準確定位異常發生地及異常負責人,並按照預設異常報警機制將現場數據以郵件、簡訊、微信等多元通信方式及時告知異常負責人,有助於報警的定向傳遞,同時通過本發明,也可以實現跨機房、跨地域的實時監控;本發明的技術方案如下:一種軟體系統的實時監控系統,其特徵在於,該監控系統配置於軟體系統伺服器,用於收集軟體系統運行產生的日誌信息,包括日誌採集模塊、消息系統、流式計算平臺、數據存儲模塊、報警模塊、配置管理模塊;所述日誌採集模塊:用於按照設定的日誌格式實時收集軟體系統的運行日誌,並對生成的日誌進行實時篩選和加工,以及將選擇進行監控報警的日誌傳給消息系統;所述消息系統:一方面用於接收日誌採集模塊發來的監控日誌,一方面用於按照路由規則將需監控報警的日誌發送給流式計算平臺,或發送給另一個實時監控系統的消息系統;所述配置管理模塊:用於配置日誌選擇的篩選規則和加工規則、日誌傳輸的路由規則、日誌異常的報警規則、數據持久化規則、報警消息模板配置及日誌產生模塊的負責人配置規則;所述流式計算平臺:用於以流數據處理方式逐條處理日誌,根據日誌報警級別判斷是否需要將該異常報警情況進行記錄、報警或通知給系統相關負責人;所述數據存儲模塊:用於對實時監控過程中產生的數據信息做持久化處理,即存入資料庫或存入文件系統中,資料庫是關係資料庫或類似NoSQL類的非關係資料庫;數據存儲模塊根據需要對部分監控日誌進行持久化處理,涉及被過濾掉的日誌、無需報警的日誌、需要報警的日誌、報警相關信息;所述報警模塊:用於控制報警消息的定向發送,按照日誌產生模塊的負責人配置,將有異常的日誌信息通過手機簡訊、微信、郵件等多種渠道通知負責人;同時報警模塊中內置消息模板,供報警時調用,模板中包含應用名、模塊名、報警內容。本發明監控系統可以配置於伺服器集群,即監控集群伺服器的若干軟體系統。本發明還提供一種軟體系統實時監控的方法,具體包括:步驟一:配置軟體系統實時監控過程中的監控規則,包括路由規則、篩選規則、加工規則、報警規則及模塊負責人;由於並非所有日誌都需要實時監控和做報警處理,因而在日誌收集時需限定實時監控系統應按照什麼標準重點收集哪類日誌;路由規則規定了經過濾的日誌應在本地進行處理,還是發送到異地處理;針對異常日誌可能造成系統運行出現的各種輕急緩重情況,設置不同種向軟體系統運維人員的報警方式,同時為避免造成報警混亂的局面,只將報警信息定向發送給出現異常的業務模塊的負責人;步驟二:設定待監控軟體系統運行日誌的生成格式,即監控日誌;每一條監控日誌由元信息和日誌正文組成,元信息用於描述監控日誌,它與監控日誌之間是一一對應的關係,包括機房編號、機器IP、軟體系統編號、模塊編號、時間戳、版本、報警等級、日誌編號;其中,機房編號用於標示待監控軟體系統伺服器所在的機房區域,方便異常報警時快速定位異常發生地;機器IP用於標示待監控軟體系統伺服器的IP位址;軟體系統編號用於標示待監控軟體系統,不同的待監控軟體系統有自己唯一的編號;模塊編號用於標示軟體系統的業務模塊對象,不同的業務模塊有唯一的編號,這樣便於判斷日誌具體來自於待監控軟體系統的哪一個功能模塊;時間戳用於標示監控日誌生成的時間;版本用於標示實時監控系統的版本,每一次監控系統的版本升級,監控日誌的處理方式也會隨之更新;報警等級用於標示當前監控日誌的級別,從高向低依次是FATAL、ERROR、WARN、INFO、DEBUG;特別地,日誌描述是本技術方案的基礎,只有利用元信息對日誌來源、級別及異常負責人統一管理,才能保證在極短的日誌處理過程中實時將異常情況更具體地報告給運維人員,協助他們快速定位異常現場;步驟三:針對正在運行的監控目標軟體系統,日誌採集模塊按照監控日誌的格式實時捕捉系統運行過程中的新增日誌,根據日誌級別記錄監控日誌的報警等級,同時按照預定規則對監控日誌進行篩選和加工;所述監控日誌的篩選是根據監控需求,由運維人員自行配置,用以準備後續需要進行處理和分析的監控日誌;篩選通過指定日誌元信息中的屬性欄位實現;監控日誌的加工是根據消息系統的類型,將監控日誌轉換成消息系統可傳輸的格式;步驟四:日誌採集模塊將加工完畢的監控日誌傳給消息系統,再經消息系統按照路由規則傳至監控日誌接收方;監控日誌的接收方可以是當前伺服器監控系統的流式計算平臺,也可以是位於其他機房的伺服器監控系統內的消息系統;監控日誌接收方由配置管理模塊預先設定的路由規則決定,路由規則由伺服器IP位址和伺服器埠號組成;這種方式有助於實現跨機房、跨地域的軟體系統實時監控處理;步驟五:流式計算平臺以日誌流的形式接收和解析監控日誌,通過分析監控日誌元信息中報警級別判定軟體系統的運行狀態,對於需要異常警報的日誌,提取日誌編號、運行的軟體系統、日誌產生模塊及模塊負責人信息;對於不需異常警報的日誌,經數據存儲模塊對監控日誌做持久化處理;持久化的具體方式是將當前需要保存的監控日誌轉成相應的文件格式存入文件系統,或以表記錄的形式存入資料庫中,資料庫可以是關係資料庫,也可以是非關係資料庫;將傳統的日誌打包處理轉變成日誌流的處理模式,使監控系統面向所有即時產生的日誌,保證每一條監控日誌的實時傳輸和處理;步驟六:針對符合異常報警特徵的日誌,流式計算平臺按照報警級別,從報警模塊中自動調用相應的報警處理方式,並根據模塊負責人信息,實時發送報警異常信息;同時對所有報警信息進行持久化存儲;報警模塊內配置了不同報警級別的報警方式,包括郵件、簡訊、微信、QQ,異常程度不同,調用的報警處理方式也會不同;實時監控系統針對日誌報警級別在ERROR以上的異常實時報告給軟體系統運維人員,報警方式為:(1)ERROR級別日誌:根據日誌來源信息和業務模塊責任人郵件地址,發送報警郵件給模塊責任人;同時將該報警信息,通過數據存儲模塊進行持久化存儲;(2)FATAL級別日誌:選用即時通信手段報警;根據日誌的來源信息和業務模塊責任人手機號碼、郵件地址,發送報警簡訊、報警郵件給模塊責任人;同時將該報警信息,通過數據存儲模塊進行持久化存儲。針對WARN級別及其以下級別的日誌,無需將報警信息發送給模塊責任人,僅是按照自定義的規則進行統計、存儲、可視化等處理。本發明與現有技術相比,其有益效果:(1)本發明以「元信息+日誌正文」的格式收集監控日誌,不僅方便運維人員根據需要定製待監控的系統及相關的業務模塊,使監控系統有選擇地採集日誌,同時有利於在異常告警時能快速根據日誌元信息鎖定異常現場,加快異常告警響應速度;(2)本發明以集群方式構建核心模塊,通過將日誌採集模塊內置待監控系統的伺服器中,日誌傳輸及處理分析的功能模塊內置實時監控系統中,有助於實時監控系統在面對伺服器規模擴大時及時擴展日誌採集及監控範圍,便於實現跨機房、跨區域的日誌收集、處理及告警分析,保證監控系統的擴展性;(3)本發明通過流數據處理方式逐條處理每一條日誌,改變了傳統的日誌打包處理方式,使監控系統面向所有即時產生的日誌,保證每一條監控日誌的實時傳輸和處理。附圖說明圖1為本發明實施例中一種軟體系統實時監控系統的示意圖;圖2為本發明實施例中監控系統與伺服器集群的分布示意圖;圖3為本發明實施例中一種軟體系統實時監控方法的流程圖;圖4為本發明實施例中監控日誌結構的示意圖;圖5為本發明實施例中監控日誌內容的示意圖;圖6為本發明實施例中實時監控系統在兩個時間點的日誌採集;圖7本發明實施例中簡訊警報的內容示意圖;圖8為本發明實施例中跨區域的軟體系統實時監控中日誌流傳輸示意圖。具體實施例:為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例,並參照附圖,對本發明進一步詳細說明。圖1為本發明實施例中一種軟體系統實時監控系統的結構示意圖,軟體系統實時監控系統配置在軟體系統伺服器所在的機房內,用於按照指定日誌格式實時收集、篩選、傳輸、處理軟體系統運行日誌,對異常日誌即時報警;具體包括日誌採集模塊、消息系統、流式計算平臺、數據存儲模塊、報警模塊、配置管理模塊,其中日誌採集模塊配置於伺服器內;在同一個機房內,實時監控系統與伺服器集群的配置情況,可參閱圖2所示;所述日誌採集模塊101,需配置於待監控系統中,用於按照設定的日誌格式實時收集軟體系統的運行日誌,並對生成的日誌進行實時篩選和加工,以及將選擇進行監控報警的日誌傳給消息系統;所述消息系統102,用於按照路由規則將需監控報警的日誌發送給流式計算平臺,或發送給另一個實時監控系統的消息系統;所述配置管理模塊103,用於配置日誌選擇的篩選規則和加工規則、日誌傳輸的路由規則、日誌異常的報警規則、數據持久化規則、報警消息模板配置及日誌產生模塊的負責人配置規則;所述流式計算平臺104,用於以流數據處理方式逐條處理日誌,根據日誌報警級別判斷是否需要將該異常報警情況通知給系統相關負責人;所述數據存儲模塊105:用於對實時監控過程中產生的數據信息做持久化處理,即存入資料庫或存入文件系統中,資料庫可以是關係資料庫,也可以是類似NoSQL的非關係資料庫;可根據需要對部分監控日誌進行持久化處理,涉及被過濾掉的日誌、無需報警的日誌、需要報警的日誌、報警相關信息;所述報警模塊106:用於控制報警消息的定向發送,按照日誌產生模塊的負責人配置,將有異常的日誌信息通過手機簡訊、微信、郵件等多種渠道通知負責人;同時報警模塊中內置消息模板,供報警時調用,模板中包含應用名、模塊名、報警內容。圖3為本發明實施例中一種軟體系統實時監控方法的流程圖,該方法的思想是以「日誌元信息+日誌正文」的格式規範軟體系統所生成的監控日誌,採用日誌流的形式逐條對監控日誌進行實時篩選、傳輸和處理,通過提取日誌元信息中的報警級別判斷軟體系統的運行狀態,對於達到報警等級的日誌即時告知運維人員,具體步驟包括:步驟301:配置軟體系統實時監控過程中的監控規則,包括路由規則、篩選規則、加工規則、報警規則及模塊負責人;由於並非所有日誌都需要實時監控和做報警處理,因而在日誌收集時需限定實時監控系統應按照什麼標準重點收集哪類日誌;路由規則規定了經過濾的日誌應在本地進行處理,還是發送到異地處理;針對異常日誌可能造成系統運行出現的各種輕急緩重情況,設置不同種向軟體系統運維人員的報警方式,同時為避免造成報警混亂的局面,只將報警信息定向發送給出現異常的業務模塊的負責人;在配置篩選規則時,要根據監控日誌元信息選擇哪些欄位作為篩選標準,一般會選擇過濾掉報警級別不高的監控日誌;在配置加工規則時,要根據消息系統的傳輸規則,對監控日誌的格式進行轉換;在配置路由規則時,由於本發明方法不僅可以適用於同機房內的日誌傳輸,也可適用於跨機房的日誌傳輸,在配置傳輸時通過設定接收方IP位址和埠號來決定日誌傳輸去向;在配置報警規則時,報警方式包括微信、簡訊、郵件等,根據異常的輕急緩重程度選擇一種或組合多種來配置不同的報警級別,一般級別越高的報警選擇即時通信方式;在配置模塊負責人時,根據監控日誌元信息中的模塊編號,為業務模塊配備相應的負責人,保證業務模塊出現異常時能實現定向發送告警通知;步驟302:設定待監控軟體系統運行日誌的生成格式,即監控日誌;每一條監控日誌由日誌元信息和日誌正文組成,日誌元信息用於描述監控日誌,它與監控日誌之間是一一對應的關係,包括機房編號、機器IP、軟體系統編號、模塊編號、時間戳、版本、報警等級、日誌編號;圖4為本發明實施例中監控日誌結構的示意圖,監控日誌保存為一種文件格式,內容可參閱圖5:其中,LogLocation為機房編號,用於標示待監控軟體系統伺服器所在的機房區域,方便異常報警時快速定位異常發生地;LogIPAddress為機器IP,用於標示待監控軟體系統伺服器的IP位址;LogProjectName為軟體系統編號,用於標示待監控軟體系統,不同的待監控軟體系統有自己唯一的編號;LogAppName為模塊編號,用於標示軟體系統的業務模塊對象,不同的業務模塊有唯一的編號,這樣便於判斷日誌具體來自於待監控軟體系統的哪一個功能模塊;HappenTime為時間戳,用於標示監控日誌生成的時間;版本用於標示實時監控系統的版本,每一次監控系統的版本升級,監控日誌的處理方式也會隨之更新;AlarmLevel為報警等級,用於標示當前監控日誌的級別,從高向低依次是FATAL、ERROR、WARN、INFO、DEBUG;特別地,日誌描述是本技術方案的基礎,只有利用元信息對日誌來源、級別及異常負責人統一管理,才能保證在極短的日誌處理過程中實時將異常情況更具體地報告給運維人員;步驟303:針對正在運行的監控目標軟體系統,日誌採集模塊101按照監控日誌的格式實時捕捉系統運行過程中的新增日誌,根據日誌級別記錄監控日誌的報警等級,同時按照預定規則對監控日誌進行篩選和加工;步驟303-1:日誌篩選所述監控日誌的篩選是根據監控需求,由運維人員自行配置,用以準備後續需要進行處理和分析的監控日誌;篩選通過指定日誌元信息中的屬性欄位實現;篩選條件通過指定日誌元信息中的屬性欄位實現,與指定欄位內容相匹配的監控日誌,作為下一階段報警分析的內容;篩選會按照配置的篩選條件,在監控日誌採集時自動形成並執行篩選程序,完成對日誌的過濾;步驟303-2:日誌加工監控日誌加工的目的是為了迎合傳輸需要,因為不同的消息系統對消息格式有不同的限定。為保證監控日誌的正常傳輸,在傳輸前需轉換為消息系統可接受的格式;消息系統可以是Kafka、ActiveMQ、ZeroMQ或自定義的Sockert通信程序等;步驟304:日誌採集模塊101將加工完畢的監控日誌傳給消息系統102,再經消息系統102按照路由規則傳至監控日誌接收方;監控日誌的接收方可以是當前伺服器監控系統的流式計算平臺104,也可以是位於其他機房的伺服器監控系統內的消息系統102;監控日誌接收方由配置管理模塊103預先設定的路由規則決定,路由規則由伺服器IP位址和伺服器埠號組成;這種方式有助於實現跨機房、跨地域的軟體系統實時監控處理;步驟305:流式計算平臺104以日誌流的形式接收和解析監控日誌,通過分析監控日誌元信息中報警級別判定軟體系統的運行狀態,對於需要異常警報的日誌,提取日誌編號、運行的軟體系統、日誌產生模塊及模塊負責人信息;對於不需異常警報的日誌,經數據存儲模塊105對監控日誌做持久化處理;持久化的具體方式是將當前需要保存的監控日誌轉成相應的文件格式存入文件系統,或以表記錄的形式存入資料庫中,資料庫可以是關係資料庫,也可以是非關係資料庫;持久化後的數據將用於統計、分析及可視化處理,比如:查閱同一類型的警報在固定時段內的出現頻數、或觀察一個月內的報警情況,包括報警來自哪些應用、報警類型統計等等;將傳統的日誌打包處理轉變成日誌流的處理模式,使監控系統面向所有即時產生的日誌,保證每一條監控日誌的實時傳輸和處理;步驟306:針對符合異常報警特徵的日誌,流式計算平臺104按照報警級別,從報警模塊106中自動調用相應的報警處理方式,並根據模塊負責人信息,實時發送報警異常信息;同時對所有報警信息進行持久化存儲;報警模塊106內配置了不同報警級別的報警方式,包括郵件、簡訊、微信、QQ,異常程度不同,調用的報警處理方式也會不同;特別地,日誌報警級別分為DEBUG、INFO、WARN、ERROR、FATAL,其中:DEBUG即「調試」,該級別的日誌信息表示為細粒度的信息事件,對調試應用程式是有幫助的;INFO即「信息」,該級別的日誌信息表示在粗粒度級別上突出強調應用程式的運行過程;WARN即「警告」,該級別的日誌信息表示會出現潛在錯誤的情形;ERROR即「錯誤」,該級別的日誌信息表示雖然發生錯誤事件,但仍然不影響系統的繼續運行;FATAL即「致命」,該級別的日誌信息表示一個嚴重的錯誤事件,將會導致應用程式的退出;實時監控系統針對日誌報警級別在ERROR以上的異常,會實時報告給軟體系統運維人員;具體報警方式為:(1)ERROR級別日誌:根據日誌來源信息和業務模塊責任人郵件地址,發送報警郵件給模塊責任人;同時將該報警信息,通過數據存儲模塊進行持久化存儲;(2)FATAL級別日誌:選用即時通信手段報警;根據日誌的來源信息和業務模塊責任人手機號碼、郵件地址,發送報警簡訊、報警郵件給模塊責任人;同時將該報警信息,通過數據存儲模塊進行持久化存儲。針對WARN級別及其以下級別的日誌,無需將報警信息發送給模塊責任人,僅是按照自定義的規則進行統計、存儲、可視化等處理。例如當前需要實時監控中國製造網詢盤系統mic_en的發送詢盤模塊mic_en_inquiry;按照實時監控需求,配置的篩選規則為:producer.sources.s.type=com.focustech.flume.source.exec.ExecAppLogSourceproducer.sources.s.logLevel=3(默認)//設定篩選條件:報警級別為ERROR及以上;配置的加工規則為:[日誌內容][{header:{timestamp:2322323,datacenter=工程名,應用名,機房ip,站點}}body{}]對應於當前的監控需要,工程名為mic_en,應用名為:mic_en_inquiry,機房ip為192.168.2.167,站點為cnc;配置的路由規則為:實時監控系統根據不同站點,路由到對應的機器上:kafka.broker.list.tc=ip:portkafka.broker.list.usa=ip:portkafka.broker.list.cnc=ip:portkafka.broker.list.local=ip:port配置的負責人信息為:圖6為本發明實施例中實時監控系統在兩個時間點的日誌採集,其中:2015-07-1610:40:29,985時刻軟體系統的監控日誌信息表明,該日誌報警等級為WARN;2015-08-1915:53:50,231時刻軟體系統的監控日誌信息表明,該日誌報警等級為FATAL;日誌採集模塊101在實時獲取mic_en_inquiry產生的日誌時,會按照時間順序依次對收集到的日誌執行日誌篩選程序,首先針對2015-07-1610:40:29,985時刻的日誌,由於與篩選欄位報警級別指定內容不一致,直接將其轉入數據存儲模塊105進行持久化處理,以便後續需要時及時提取;其次,針對2015-08-1915:53:50,231時刻的日誌,符合篩選的警報級別,經加工後將日誌傳給消息系統102,再通過消息系統102傳輸至流式計算平臺,開始執行報警分析;流式計算平臺104查找2015-08-1915:53:50,231時刻日誌的元信息,提取報警級別欄位內容,由於2015-08-1915:53:50,231時刻日誌的報警級別為FATAL,因而流式計算平臺104提取日誌產生源頭,包括機房編號cnc、機器IP:192.168.2.167、軟體系統編號mic_en、業務模塊mic_en_inquiry,以幫助軟體系統運維人員鎖定異常現場,同時提取業務模塊負責人張三的聯繫信息,包括微信、手機號碼、郵箱地址,即時將異常報警信息發送給相關負責人;簡訊警報信息如圖7所示。本發明實施例中還包括一種跨機房、跨區域的軟體系統實時監控方法,參閱圖8所示,實時監控系統可配置在中國地區的機房,美國機房內的實時監控系統只包括日誌採集模塊和消息系統,由美國機房採集篩選的監控日誌經消息系統傳至中國機房實時監控系統的消息系統中,並由中國機房實時監控系統執行後續的報警分析。這種方法有利於面對伺服器和網絡設備大規模增長時,靈活擴展監控系統的監控範圍。所屬領域的普通技術人員應當理解:以上所述僅為本發明的具體實施例而已,並不用於限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。