UAVStack之文件數據歸集

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

前言

在分佈式微服務架構下,單個應用中每每包含不少實例。平常工做中,咱們經常須要查看應用運行過程當中產生的日誌。但登錄服務器從大量實例中查找目標日誌耗時耗力;有時日誌文件還會在應用重啓過程當中丟失。github

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

架構

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

圖片描述

● Source:落盤後的數據文件,包括應用日誌文件、調用鏈數據文件、瀏覽器數據文件和線程分析數據文件。瀏覽器

● 日誌採集器:文件數據採集端,負責數據讀取、過濾以及上送。安全

● Channel:數據消費隊列,UAVStack使用的消息隊列是RocketMQ。服務器

● Sink:從Channel中拉取文件數據,分發到別處。UAVStack默認分發到數據庫ElasticSearch,用於存儲歸集上送的文件數據。微信

採集模塊

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

圖片描述

● 歸集任務控制器:控制下發歸集的任務,包括正在運行的任務和已存在的任務;定時輪詢歸集任務,構建可執行的歸集任務。dom

● 歸集任務調度器:定時調度歸集任務。

● 任務:執行文件數據歸集任務。

● 數據讀取器:讀取、過濾文件數據。

● 數據發佈器:發佈已讀取上來的文件數據。

歸集過程

圖片描述

● 開啓歸集:文件數據歸集模塊自動發現應用日誌的畫像信息,並進行處理,判斷應用日誌畫像信息是否更新;用戶可控制應用日誌、調用鏈跟蹤、瀏覽器跟蹤和線程分析的歸集功能。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

UAVStack已在Github上開放源碼,並提供了安裝部署、架構說明和用戶指南等雙語文檔,歡迎訪問-給星-拉取~~~

做者: 段德華 宜信技術學院

相關文章
相關標籤/搜索