前言
在分散式微服務架構下,單個應用中往往包含很多例項。日常工作中,我們常常需要檢視應用執行過程中產生的日誌。但登陸伺服器從大量例項中查詢目標日誌耗時耗力;有時日誌檔案還會在應用重啟過程中丟失。
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服務,可擴充套件性較強。
UAVStack已在Github上開放原始碼,並提供了安裝部署、架構說明和使用者指南等雙語文件,歡迎訪問-給星-拉取~~~
掃一掃下方二維碼,關注一個不會讓你失望的公眾號