美林技術專家團隊 | 大數據分析工具構建智能監測與異常預警

前言:
微服務架構在給我們提供強大業務技術支持的同時,給系統運維管理也增加了難度。傳統人工系統運維,主要有以下兩個弊端:
⇒及時性比較差,大多都是遇到問題才去分析排查;
⇒微服務架構下應用服務之間關系錯綜復雜,導致問題排查很難精準找到問題點,過程費時費力。
往往等問題出現了再去排查處理,已經對業務流程產生了影響,嚴重的可能會阻塞生產過程,造成不可估量的損失。因此如何對程序進行持續監測、自動化分析潛在風險,快速通知相關運維人員規避風險,就成了微服務架構體系下一個亟需解決的重點和難點。
本文詳細描述了程序監測和異常預警的架構體系設計,包括程序監測分析方法及異常預警范圍。
微服務應用程序部署完成后,保障系統能夠持續可靠、穩定,需要考慮兩方面影響因素:
⇒環境穩定性。如網絡連通性、操作系統配置、內存占用情況、磁盤使用率等;
⇒服務健康狀態。如Nginx、Redis、Mysql、Nacos、網關等服務,實時監測服務運行狀態,通過監測數據分析服務的健康狀態。
通過對環境和服務兩方面監測分析,可以明確已經發生的異常和潛在的風險,例如環境配置改變、服務器網絡不穩定、服務異常下線、服務負載過高等,將這些異常信息通過多種渠道及時通知運維人員,并提供處理建議和方法指引,快速處理異常,保證系統服務正常運行。
因此,程序監測和異常預警就是來保障系統服務持續可用的兩大舉措,一方面需要對故障和異常及時發現,另一方面及時通知并提供處理措施和方法,及時處理故障和異常。本文將從架構設計及建設內容兩個角度出發來闡述所建設的智能監測體系。
△故障診斷和異常預警導圖
系統智能監測與異常預警,主要從三個方面入手,分別是:運行環境監測、服務狀態監測、服務性能監測。
一.智能監測
?(1)運行環境監測
程序運行環境的狀況關系到微服務架構中的每個服務的運行狀態和可用性。運行環境監測主要從三個方面入手:
1)網絡環境:如服務器連通性,檢查是否有服務器節點是宕機狀態或者網絡環境有變化導致主機連通性異常,網絡連通性異常會導致服務不能注冊到Nacos中或者服務訪問不到;
2)系統配置: 操作系統配置往往會影響智能運維平臺自身功能的使用,如用戶名密碼被改變了,h2數據庫中的密碼沒有同步修改,會導致遠程文件拷貝操作出錯;expect等組件缺失會導致shell腳本調用業務失敗;ssh連接數、文件句柄數、目錄用戶權限都會影響文件拷貝的成功與否;
△硬件環境診斷導圖
3)硬件資源監控:硬件資源會直接影響服務的執行效率或者直接導致服務不可用,一般從cup、內存、磁盤等方面進行監控。由于cpu、內存、磁盤的使用情況會不斷動態變化,因此需要對這些數據進行收集、統計、圖表展示,實時監控,通過實時統計,可以分析出來哪臺機器的硬件資源比較緊張,如果硬件資源長期處于緊張狀態,建議及時處理。比如增減硬件資源配置,或者卸載部分服務,服務遷移等。
?(2)中間件監測
中間件服務在微服務架構體系中起著至關重要的作用,是微服務產品服務能夠正常運行的基礎,包括文件共享NFS、代理服務Nginx、內存數據庫Redis、關系型數據庫Mysql和Oracle、注冊中心Nacos、文件傳輸服務sftp、分布式查詢引擎Presto、圖數據庫Neo4j、文檔數據庫MongoDB。架構如圖中間件架構圖所示:
△中間件導圖
?(3) 應用服務監測
應用服務指的是除中間件外的所有產品服務,應用服務異常監測和分析從三方面入手:服務狀態、服務接口及服務性能,具體內容如下:
1)服務狀態方面的監控分析:目標是分析出來一些問題,比如主機的服務經常掛掉,由此可以推斷出來這個主機性能比較差,不穩定;再比如某些服務在某一天經常掛掉,可能是那一天系統訪問量特別大,需要及時采取措施緩解系統訪問壓力。
2)接口訪問監測:主要是捕獲執行異常的接口數據,比如響應非常慢的接口,調用出錯的接口,哪些接口調用次數比較多等??赡苄枰鎯Υ罅拷涌谡埱髷祿?,通過圖表統計來可視化反映接口響應情況。
3)服務性能監控:主要是對服務代碼運行時數據區的一個動態監測。比如線程數監控、JVM內存使用情況分析、垃圾收集器工作情況等。同樣需要動態收集大量時間點JVM各指標數據,以時間維度做數據可視化統計分析。并通過數據分析,及時發現問題。
△應用診斷導圖
二.異常預警
異常預警智能監測和異常分析的最終目標是及時反饋用戶或運維人員,并通過提供的解決措施及方法快速解除異常,讓系統在最短的時間內恢復正常狀態。
? (1)運行環境預警
運行環境異常一般不能系統自動修復,需要運維人員手動處理,比如服務器網絡環境異常、磁盤爆滿等需要提示出來,運維人員自行處理即可。有些異常需要說明處理措施,比如登錄密碼改變了,需要同步修改h2數據里面存的密碼密文。
? (2)中間件預警
中間件異常一般分這樣幾種情況:集群中某節點服務不可用,集群配置異常(如Mysql主、主同步異常、Redis哨兵異常、Nacos同步異常)。這些異常需要及時提示出來,運維人員線下處理或者通過智能運維平臺提供的功能進行處理。
? (3)應用預警
應用異常故障分為三類:服務狀態、接口響應情況、服務性能。
1)服務狀態,指的是應用服務的啟停狀態,比如某個應用服務掛了,提示出來即可,運維人員可以通過智能運維平臺的功能或者后臺啟動服務即可。但是更為重要的是需要通過長時間監控分析出來哪個主機的哪些服務經常掉線,哪些時間段經常掉線等。
2)接口響應預警,是通過大量接口響應時間數據,過濾出經常響應比較慢的接口,這些接口應該及時反饋給開發人員進行接口性能優化。
3)服務性能狀態指的是服務所在的JVM實例中資源使用情況,比如老年代內存快滿了,需要提示出來,及時調整JVM資源配置參數或者重新啟動服務。
通過智能監測和異常預警,提高系統運維效率,減少系統故障率,可以讓用戶在體驗微服務架構的便利性的同時,讓系統運維工作更加輕松,不斷提升用戶體驗。
美林數據——釋放數據潛能,激發企業活力
為你帶來最新大數據資訊
歡迎關注與評論!
