閱讀311 返回首頁    go 微信


使用Logtail采集日誌__logtail(Agent)_用戶指南_日誌服務-阿裏雲

Logtail接入服務是日誌服務提供的、幫助用戶在服務器上快速收集日誌的方式,它具有如下特征:

  • 基於日誌文件、無侵入式的收集日誌。用戶無需修改應用程序代碼,且日誌收集不會影響用戶應用程序的運行邏輯。
  • 能夠穩定地處理日誌收集過程中各種異常。當遇到網絡異常、服務端異常,用戶數據臨時超預留寫入帶寬限製等問題時會有主動重試,本地緩存等措施保障數據安全。
  • 基於服務端的集中管理能力。用戶在安裝Logtail後,隻需要在服務端集中配置需要收集的機器、收集方式等信息即可,無需逐個登錄服務器進行配置。
  • 完善的自我保護機製。為保證運行在客戶機器上的收集Agent不會明顯影響用戶自身服務的性能,Logtail收集客戶端在CPU、內存及網絡使用方麵都做了嚴格的限製和保護機製。

本章將詳細說明Logtail接入服務的各方麵細節。

係統要求

你可以通過Logtail從如下服務器環境中采集日誌並寫入日誌庫:

  • Linux:支持如下版本的x86-64(64位)服務器

    • Aliyun Linux
    • Ubuntu
    • Debian
    • CentOS
    • OpenSUSE
  • Windows:支持Windows Server2003(含)以後32/64位係統

    • Windows 7 (Client) 32bit
    • Windows 7 (Client) 64bit
    • Windows Server 2003 32bit
    • Windows Server 2003 64bit
    • Windows Server 2008 32bit
    • Windows Server 2008 64bit
    • Windows Server 2012 32bit
    • Windows Server 2012 64bit

Logtail接入服務隻支持從同一阿裏雲Region的內部ECS服務器向這個Region的日誌服務Project收集日誌。例如,收集“華東 1 (杭州)”Region內的ECS服務器日誌到“華東 1 (杭州)”Region的日誌服務Project。目前暫不支持跨Region使用Logtail接入服務收集日誌。如果你有跨Region收集日誌的需求,請走公網。

Docker

  • 阿裏雲容器服務:參見集成日誌服務
  • ECS/IDC 自建Docker(需要把容器中日誌目錄Mount到宿主機上)
    1. 根據不同網絡安裝Logtail
    2. 將容器中日誌目錄Mount到宿主機目錄
      • 選擇1:使用命令(例如宿主機目錄為:/log/webapp,容器中日誌目錄為/opt/webapp/log)
        1. docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
      • 選擇2:使用編排模板Mount

核心概念

  • 機器組:一個機器組包含一或多台需要收集一類日誌的機器。用戶通過給一個機器組應用一組Logtail配置來一次性讓機器組內所有機器開始收集相應日誌。用戶可以通過日誌服務控製台方便地對機器組進行管理(包括創建、刪除機器組,添加、移除機器等)。需要注意的是每個機器組不可混有Windows和Linux機器,但可以擁有不同版本的Windows Server或者不同發行版本的Linux機器。
  • Logtail配置:描述如何在機器上收集一類日誌並解析並發送到服務端的指定日誌庫。用戶可以通過控製台對每個Logstore添加Logtail配置,表示該Logstore接收以此Logtail配置收集的日誌。
  • Logtail客戶端:Logtail是運行在用戶機器上執行日誌收集的Agent。參照安裝文檔在ECS服務器上安裝Logtail後,添加服務器內網IP到機器組。
  • Linux下,該Agent安裝在/usr/local/ilogtail目錄下並啟動兩個獨立進程(以ilogtail開頭),一個為收集進程,另外一個為守護進程,程序運行日誌為/usr/local/ilogtail/ilogtail.LOG。
  • Windows下,該Agent安裝在目錄C:Program FilesAlibabaLogtail(32位係統)或C:Program Files (x86)AlibabaLogtail(64位係統)。你可以通過Windows管理工具-服務查看到兩個Windows Service,一個負責收集日誌(LogtailWorker),另外一個負責守護工作程序(LogtailDaemon),程序運行日誌為安裝目錄下的logtail_*.log。

基本功能

目前,Logtail接入服務提供如下功能:

  • 實時收集日誌: 動態監控日誌文件,實時地讀取、解析增量日誌。日誌從被發現到發往服務端一般在3秒延遲內。

注意:Logtail接入服務不支持對曆史數據的收集。對於一條日誌,讀取該日誌的時刻減去日誌產生的時刻,差值超過5分鍾的被丟棄;

  • 自動處理日誌輪轉:很多應用會按照文件大小或者日期對日誌文件進行輪轉(rotation),把原日誌文件重命名,並新建一個空日誌文件等待寫入(例如:監控app.LOG,輪轉產生的app.LOG.1,app.LOG.2等)。用戶可以指定收集日誌寫入的文件(如”app.LOG”),logtail會自動檢測到日誌輪轉過程,保證這個過程中不會出現日誌數據丟失。

注意:如果日誌文件秒級別時間範圍內多次發生輪轉,可能會丟失數據。

  • 自動處理收集異常: 因為各種異常(等服務端錯誤、網絡措施、Quota超限等)導致數據發送失敗,Logtail會按場景主動重試。如果重試失敗則會將數據寫入本地緩存並在稍後自動重發:

本地緩存位於用戶服務器的磁盤上,如果本地換成內的數據24小時內仍無法成功被服務端接收會丟棄並從本地緩存刪除。

  • 靈活配置收集策略: 可以通過Logtail配置來非常靈活地指定如何在一台ECS服務器上收集日誌。具體來說,用戶可以根據實際場景選擇日誌目錄,文件(即可精確匹配,也可通過通配符模煳匹配)。用戶可以自定義日誌收集提取的方式和各個提取字段的名稱(支持正則表達式方式的日誌提取)。另外,由於日誌服務日誌數據模型要求每條日誌必須有精確的時間戳信息,Logtail提供了自定義的日誌時間格式,方便用戶從不同格式的日誌數據中提取必須要的日誌時間戳信息。

  • 自動同步收集配置:用戶在日誌服務控製台上新建或更新配置,logtail一般在3分鍾時間內即可自動接受並使之生效,更新配置過程中數據收集不丟失。

  • 自動升級客戶端:在用戶手動安裝Logtail到服務器後,日誌服務負責該Agent自動運維升級(無需要用戶參與)。在整個Agent升級過程中日誌數據不丟失。

  • 自我監控狀態:為避免Logtail接入服務的客戶端消耗用戶太多資源而影響用戶自身服務。Logtail會實時監控自身資源消耗(CPU和Memory)。如果Logtail接入服務的客戶端在運行過程中導資源使用超出限製將會自動重啟,避免影響機器上的其它作業。同時,該客戶端也會有主動的網絡限流保護措施,防止過度消耗用戶帶寬。

  1. Logtail接入服務客戶端在重啟期間日誌數據可能會丟失。
  2. 如果Logtail客戶端自身處理邏輯出現異常導致退出,相應的保護機製會觸發並重新啟動該客戶端繼續收集日誌。但在重新啟動之前的日誌數據可能丟失
  • 簽名數據發送:為保證用戶數據在發送過程中不會被篡改,Logtail服務客戶端會主動獲取用戶的阿裏雲訪問秘鑰並對所有發送日誌的數據包進行數據簽名。

Logtail客戶端在獲取用戶的阿裏雲訪問秘鑰時采用HTTPS通道,保障用戶的訪問秘鑰安全性。

Logtail配置

如前所述,Logtail配置是方便用戶指定如何在機器上采集日誌並發送到服務端指定日誌庫的描述。盡管Logtail接入服務支持Windows和Linux平台兩個平台,但它們支持的配置格式一致,但部分配置項有因為平台不同而有所區別。具體配置項和不同平台的區別如下:

配置項 描述
日誌路徑 指定收集日誌文件所在的根目錄,需要指定絕對路徑,且不支持通配符
日誌文件名 指定收集日誌文件名稱,大小寫敏感,可以使用通配符。例如*.log。Linux下的文件名通配符包括”*“, “?”和”[…]”。Windows下支持MS-DOS和Windows通配符,如”*.doc”,”readme.???”等。
本地存儲 標示是否啟用本地緩存臨時存儲因網絡短暫中斷而無法發送的日誌。
日誌首行頭 指定多行日誌的起始頭,需指定正則表達式。在多行日誌收集場景下(如應用程序日誌中的堆棧信息),無法使用行來分割每條日誌。這時需要指定一個多行日誌的起始頭,當發現該起始頭則表示上條日誌已經結束,新的一條已經開始。由於每條日誌的起始頭可能並不一樣(如時間戳),故需要指定一個起始頭的匹配規則,即這裏的正則表達式。
日誌解析表達式 定義如何提取一條日誌信息,並轉化成為日誌服務日誌的格式。用戶需要指定一個正則表達式提取需要的日誌字段信息,並且定義每個提取的字段名稱。具體可參考樣例
日誌時間格式 定義如何解析日誌數據中的時間戳字符串的時間格式,具體請參見Logtail日誌時間格式

使用流程

用戶可以在日誌服務控製台非常方便的接入Logtail服務。簡單來說,整個流程包括如下幾部:

  1. 創建Logtail日誌收集配置:用戶選擇需要寫入的Logstore,然後為該Logstore配置Logtail日誌收集配置。
  2. 定義Logtail收集日誌源:用戶創建對應的機器組作為日誌收集來源,並把相關的ECS服務器添加到該機器組即可。
  3. 應用Logtail配置收集日誌:用戶把第一步創建的日誌收集配置應用到對應的日誌源(即第二部創建的機器組),整個收集工作就開始了。

用戶可以參考樣例了解如何配置Logtail收集配置中的日誌提取規則。

在完成如上流程後,用戶ECS服務器上需要收集的新增日誌(曆史日誌並不會處理,具體見上麵“基本功能”介紹)即會被主動收集,發送到用戶選擇的Logstore中。用戶可以通過日誌服務控製台或者SDK及API查詢到這些日誌。用戶還可以通過日誌服務控製查詢到所有ECS機器上的Logtail收集日誌狀態(是否在正常收集,是否有錯誤等)。

Logtail接入服務在日誌服務控製台上的完整操作請參考Logtail收集日誌

處理能力與限製

Logtail接入服務在每台服務器上的處理能力及限製如下:

項目 能力與限製
文件編碼 隻支持UTF8編碼日誌文件,如果日誌文件不為UTF-8編碼則會出現亂碼,丟數據等未定義行為
日誌處理吞吐能力 原始日誌流量最高支持1MB/s,通過阿裏雲內部網絡發送數據。超過該日誌流量則有可能丟失日誌
網絡錯誤處理 支持本地緩存,最多使用500MB本地存儲空間。在出現網絡異常或者臨時服務端超限,會主動緩存數據到本地並在之後盡快重試
配置更新 用戶的配置更新生效需要有3分鍾內的延時
狀態自檢 支持異常情況下(包括程序異常退出及使用資源超限)自動重啟
監控目錄數 主動限製可以監控的目錄格式,避免出現過多消耗用戶資源。如果監控上限已到,則放棄監控更多目錄和日誌文件。限製最多3000個目錄(含子目錄)
軟鏈接支持 支持監控目錄是軟鏈接的情況
日誌文件大小 無限製
單行日誌大小 不支持單行日誌大小超過512KB的情況
正則表達式類型 使用Perl兼容正則表達式

最後更新:2016-11-03 10:01:15

  上一篇:go 上下文查詢__logsearch_用戶指南_日誌服務-阿裏雲
  下一篇:go 安裝Logtail__logtail(Agent)_用戶指南_日誌服務-阿裏雲