普元數據服務監控解密

轉載本文需註明出處:微信公衆號EAWorld,違者必究。

引言:

在傳統的信息系統架構模式下,各個組織或各個部門根據各自的業務需求,在不一樣時期不一樣技術環境下建設出各自的信息系統。隨着信息化建設的不斷推動,業務活動呈現高頻化、碎片化、場景化的特色。隨之而來的是對系統的處理能力、容量、業務持續性、需求響應速度、運維響應速度的更高要求。

如何有效的管理數據、高效的提供數據服務的其中一個關鍵就是提供對數據服務的統一監控。

目錄:

1、數據服務監控
2、數據採集
3、數據格式化
4、數據存儲
5、數據展現

1、數據服務監控

爲提供統1、標準、安全、高效的數據服務,咱們須要作好一點那就是統一數據運行監控,那麼統一數據服務運行監控須要作哪些事情呢?



首先獲取數據服務的運行數據,須要咱們對數據進行採集。有了數據咱們就能夠去對數據作初步的分析,經過分析對數據進行格式化,格式化後的數據又須要去作持久化保存,方便將來不按期的查詢。單純的數字可能並不能直觀的反應數據問題,那就須要藉助前端工具對數據作可視化的展現。

數據服務監控經過實時服務分析引擎(SSM)提供日誌解析及監控能力,對事前預警、事中告警、過後統計分析等功能提供後臺支撐。咱們先來看一種可行的部署架構中,SSM的具體部署方式。

2、數據採集

實時服務分析引擎的部署



相信你們對此是很是熟悉的這也是一種很常見的微服務部署架構,Nginx經過負載均衡對業務請求進行分流,網關Gateway再將請求經過Eureka等註冊中心轉發到後臺服務中。服務網關是成熟且健壯的業務系統中不可或缺的重要組件,它是全部服務的總入口,它是監控、認證的切入點。咱們能夠在網關處添加對數據服務的採集功能。

網關攔截器手動埋點



數據採集:作數據採集的前提必定是對監控需求的仔細揣摩,若是你是粗粒度的應用監控、系統監控,那麼數據服務總入口就是數據採集的切入點,若是你是細粒度的應用監控,例如應對時下流行的分佈式微服務架構你但願作到對調用鏈路的詳細監控,那麼每一個微服務的入口就是數據採集的着手處。網絡上有不少對於微服務架構的監控組件,例如Skywalking、Cat、Zipkin、Pinpoint等,這裏就不一一贅述,咱們今天的重點不是去研究每一次服務調用的具體詳情,咱們只從服務整體的健康狀態出發。因此咱們只須要極少的代價在數據服務總入口也就是網關進行數據埋點,收集數據詳情便可。

異步落日誌


    
異步落日誌的具體流程以下:

網關監控數據持續產生,放入緩存隊列(請求流轉的過程當中要避免IO操做,儘量的減小對請求自己的影響)
緩存隊列大小達到預先設定的大小,將緩存隊列複製到臨時緩存(一個臨時對象),並清空緩存隊列,而後執行寫文件操做
當文件大小達到預先設定的大小時,將當前文件重命名,表明文件寫操做完成。(重命名的緣由是由於實時服務分析引擎會對產生的日誌文件進行讀,避免對同一個文件同時出現讀寫操做)

日誌落地相關配置



當監控數據進行初步落地之後咱們就能夠經過實時服務解析引擎對日誌進行提取分析,這個過程我願意稱之爲數據格式化過程。

日誌關鍵信息



3、數據格式化

提取數據的第一步是對網關落下來的文件日誌進行收集而後處理。

日誌文件讀取流程



日誌文件目錄下可能會有多種類型的文件,咱們須要經過名稱正則匹配篩選須要的文件。

數據格式化:從數據服務總入口收集到的原始數據作初步數據分析,從原始數據中提取關鍵信息(譬如請求報文、響應報文、請求時間等)進行格式化,並選擇合適的方式將數據持久化到數據庫中。

統計分析任務流程



統計分析任務由多個線程共同完成:

TimeStatics線程任務用來分析時間段內的以不一樣的消費方和服務提供方爲維度的調用統計指標,好比:在兩分鐘內A系統調用B系統時服務響應的成功次數、異常次數、平均響應時間、最長響應時間等數據指標。
Exception線程任務用來將數據服務異常調用記錄同正常調用區分開來,異常響應對於運維監控來講更爲重要。
All線程任務會將每一筆的數據服務記錄到案
Top線程任務用來統計數據服務調用訪問時長TopN的調用詳情。

數據分析線程解析



4、數據存儲

數據存儲:數據落地之後須要對落地的數據進行解析分析,將對應的數據拆分紅合理的指標單元進行持久化操做。



針對關係型數據庫,以mybatis爲底層框架實現數據的持久化操做,同時支持將海量監控數據存儲在ES中,充分利用ES聚合檢索分類分析的能力。

物理表一覽



針對不一樣的調用請求,咱們進行分類統計,以請求方、服務提供方、網關實例節點爲維度獲取以下關鍵信息進行彙總

服務超時異常個數
系統異常個數
業務異常個數
非法調用個數(未配置服務調用關係)
非法IP調用個數(請求方IP不在白名單內)
成功調用次數
總調用時長
最長調用時長TopN的統計記錄

關於告警

沒有告警的監控就像一潭死水,沒有靈魂。咱們不能將注意力所有Focus到監控系統上,因此及時的自動告警就是監控中必須的事情。咱們提供統一接口接入郵件、釘釘,藉助經常使用辦公系統實現對數據服務的實時告警。
   
告警維度主要有如下幾個:

響應時間告警:針對一段時間內超過指定次數、指定響應時長的告警。
系統狀態告警:應用系統狀態告警,當應用沒法正常運行時告警。
業務異常告警:針對一段時間內的成功響應占比低於指定閾值進行告警。

5、數據展現

數據展現:對指標單元數據整合分析,藉助Echarts組件,提供針對不一樣需求的可視化圖





關於做者:阿良,普元開發工程師,參與普元EOS8 Studio、EOS8微服務管理平臺開發,負責關於服務監控、日誌監控等組件開發;參與太平洋保險供數平臺建設,負責服務管理註冊監控。


關於EAWorld:微服務,DevOps,數據治理,移動架構原創技術分享。長按二維碼關注!前端

相關文章
相關標籤/搜索