UAVStack之文件數據歸集

本文重點介紹UAVStack中的文件數據歸集功能。該功能可以有效解決日誌查找費時和日誌文件丟失等問題,幫助快速定位解決問題,規避日誌訪問權限可能帶來的安全風險。

一、前言

在分佈式微服務架構下,單個應用中往往包含很多實例。日常工作中,我們常常需要查看應用運行過程中產生的日誌。但登陸服務器從大量實例中查找目標日誌耗時耗力;有時日誌文件還會在應用重啓過程中丟失。

UAVStack的文件數據歸集功能不僅能夠集中所有業務的日誌,方便工程師更加輕鬆地查找相關日誌,進而快速定位、解決問題;還能省去服務器權限授予環節,有效規避日誌訪問權限可能帶來的安全風險。

二、架構

歸集的文件數據包含應用日誌、調用鏈跟蹤、瀏覽器跟蹤和線程分析的數據;也可以在啓動參數中配置任意文件路徑,配置其它任意文件;還支持UAVStack自身日誌文件的歸集控制。整體架構如下:

  • Source:落盤後的數據文件,包括應用日誌文件、調用鏈數據文件、瀏覽器數據文件和線程分析數據文件。
  • 日誌採集器:文件數據採集端,負責數據讀取、過濾以及上送。
  • Channel:數據消費隊列,UAVStack使用的消息隊列是RocketMQ。
  • Sink:從Channel中拉取文件數據,分發到別處。UAVStack默認分發到數據庫ElasticSearch,用於存儲歸集上送的文件數據。

三、採集模塊

UAVStack的文件數據歸集是MonitorAgent的Feature。MonitorAgent以守護進程的形式部署,如若死掉將會立即重啓,重啓後可繼續歸集文件數據。主要模塊如下:

  • 歸集任務控制器:控制下發歸集的任務,包括正在運行的任務和已存在的任務;定時輪詢歸集任務,構建可執行的歸集任務。
  • 歸集任務調度器:定時調度歸集任務。
  • 任務:執行文件數據歸集任務。
  • 數據讀取器:讀取、過濾文件數據。
  • 數據發佈器:發佈已讀取上來的文件數據。

四、歸集過程

  • 開啓歸集:文件數據歸集模塊自動發現應用日誌的畫像信息,並進行處理,判斷應用日誌畫像信息是否更新;用戶可控制應用日誌、調用鏈跟蹤、瀏覽器跟蹤和線程分析的歸集功能。AppHub支持啓停文件數據歸集功能,可動態選擇需要讀取的文件。
  • 歸集任務下發:當用戶觸發歸集後,AppHub端會開啓文件數據歸集任務並自動下發,生成數據歸集任務,寫到任務列表中,並持久化到本地文件task.cache中。
  • 歸集任務控制:定時任務輪詢管理任務列表,分別構建可執行的歸集任務,並通過ForkJoin提交。
  • 文件數據讀取:讀取ForkJoin提交的每個任務。其中需要處理的日誌文件都是通過具體的類進行操作處理。這些類包括RandomAccessFile類,其中seek()方法隨機訪問文件,read()方法讀取文件數據。另外,數據位置定時更新任務能夠將讀取到的數據的位置更新到本地文件position.cache,供下一次文件讀取使用。
  • 文件數據過濾:根據配置的日誌策略,對讀取的日誌進行正則表達式的匹配過濾,完成日誌數據取捨。
  • 文件數據發佈:歸集上來的日誌數據,可按照不同的發佈類型走不同的發佈實現邏輯,發佈到指定的目的地。UAVStack默認發佈到RocketMQ中,並支持自定義發佈。

另外,HM服務拉取RocketMQ中指定topic的日誌數據,處理成相應的格式後存儲到ElasticSearch數據庫中。

五、文件數據展示

通過AppHub可以查看歸集上來的應用日誌、調用鏈跟蹤、瀏覽器跟蹤和線程分析的文件數據。由AppHub調用後臺服務的http查詢接口,通過HM日誌數據服務讀取數據庫,進行文件數據的查詢和展示,如下圖所示:

文件數據的展示效果如下:

  • 支持查看不同應用集羣、應用實例和日誌文件的歸集數據。
  • 支持按日、小時或分鐘查看不同時間的文件數據。
  • 支持按升序或降序查看文件數據。
  • 支持關鍵字搜索,多個關鍵字用空格分開,表示“或”連接,即任意一個關鍵字匹配即可;多個關鍵字用“+”分開,表示“與”連接,即所有關鍵字都匹配的日誌信息;如果同時使用空格和“+”,則“或”連接優先;如果關鍵字首尾都加“*”,則表示模糊匹配,展示所有匹配結果。
  • 點擊單行日誌,支持向前、向後滾動查看日誌信息,如下圖:

六、文件數據關聯

對於歸集上來的應用日誌、調用鏈跟蹤和瀏覽器跟蹤數據,可進行相互關聯;瀏覽器跟蹤數據可關聯調用鏈跟蹤數據,調用鏈跟蹤數據可關聯應用日誌數據,如下圖所示:

七、文件數據預警

歸集後的文件數據支持預警,可針對文件數據中是否出現關鍵字或者關鍵字出現的次數配置預警策略。預警策略觸發後可通過郵件、短信、微信等方式通知用戶,也可通過Http形式通知第三方應用系統。

八、總結

UAVStack的文件數據收集功能已被廣泛使用,是具備較高可用性和可靠性的分佈式服務。如果需要歸集的日誌量較大,僅需增加UAVStack自身的HM服務,可擴展性較強。

官方網站:https://uavorg.github.io/main/

開源地址:https://github.com/uavorg

作者:段德華

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章