全部產品
Search
文件中心

Simple Log Service:採集Docker容器日誌(標準輸出/檔案)

更新時間:Jan 28, 2026

在容器化環境中,業務日誌通常分散於各個Docker 容器的標準輸出或記錄檔中,難以集中管理和快速檢索。通過Log Service的 LoongCollector 採集器,可將多節點容器日誌匯聚至統一日誌庫,實現日誌的集中儲存、結構化解析、脫敏過濾和高效查詢分析。

適用範圍

  • 許可權要求:部署使用的阿里雲主帳號或子帳號需具備AliyunLogFullAccess許可權。

  • Docker 版本與 LoongCollector 要求:

    • 如果您的Docker Engine版本大於等於v29.0,或支援的最低Docker API版本大於等於1.42,請使用 LoongCollector 3.2.4及以上版本,否則將無法採集容器標準輸出或檔案日誌。

    • LoongCollector 3.2.4及以上版本支援的Docker API版本範圍為1.24 ~ 1.48

    • LoongCollector 3.2.3及以下版本支援的Docker API版本範圍為1.18 ~ 1.41

  • 採集標準輸出限制:

    • 必須在Docker的設定檔daemon.json中添加"log-driver": "json-file"

    • 如果是CentOS 7.4及以上版本(除CentOS 8.0以外),需設定fs.may_detach_mounts=1

  • 採集文本日誌限制:僅支援overlay、overlay2兩種儲存驅動(其他類型需手動掛載日誌目錄)。

採集配置建立流程

  1. 準備工作建立Project和LogStore,Project是資源嵌入式管理單元,用於隔離不同業務日誌,LogStore用於儲存日誌。

  2. 配置機器組(安裝LoongCollector)在需要採集日誌的伺服器上安裝LoongCollector,並將其加入到機器組中。使用機器組統一管理採集節點,對伺服器進行配置分發與狀態管理。

  3. 建立並配置日誌採集規則

    1. 全域與輸入配置:定義採集配置的名稱及日誌採集的來源和範圍。

    2. Tlog與結構化:根據日誌格式進行處理配置。

      • 多行日誌:適用於單條日誌跨越多行(如 Java 異常堆棧、Python traceback),需通過行首正則識別每條日誌的起始行。

      • 結構化解析:通過配置解析外掛程式(如正則、分隔字元、NGINX 模式等)將原始字串提取為結構化的索引值對,便於後續查詢與分析。

    3. 日誌過濾:通過配置採集黑名單和內容過濾規則,篩選有效日誌內容,減少冗餘資料的傳輸與儲存。

    4. 日誌分類:通過配置日誌主題(Topic)和日誌打標靈活區分不同業務、容器或路徑來源的日誌。

  4. 查詢與分析配置:系統預設開啟全文索引,支援關鍵詞搜尋。建議啟用欄位索引,以便對結構化欄位進行精確查詢和分析,提升檢索效率。

  5. 驗證與故障排查:配置完成後,驗證日誌是否成功採集,如遇採集無資料、心跳失敗或解析錯誤等問題,請參考常見問題排查

準備工作

在採集日誌前,需規劃並建立用於管理與儲存日誌的Project和LogStore。若已有可用資源,可跳過此步驟,直接進行步驟一:配置機器組(安裝LoongCollector)

建立Project

  1. 登入Log Service控制台

  2. 單擊建立Project,並配置:

    • 所屬地區:根據日誌來源選擇,建立後不可修改。

    • Project名稱:阿里雲內全域唯一,建立後不可修改。

    • 其他配置保持預設,單擊建立。如需瞭解其他參數,請參見建立Project

建立LogStore

  1. 單擊Project名稱,進入目標Project。

  2. 在左側導覽列,選擇image日誌儲存,單擊+

  3. 在建立LogStore頁面,完成以下核心配置:

    • LogStore名稱:設定一個在Project內唯一的名稱。該名稱建立後不可修改。

    • LogStore類型:根據規格對比選擇標準型或查詢型。

    • 計費模式

      • 按使用功能計費:按儲存、索引、讀寫次數等各項資源獨立計費。適合小規模或功能使用不確定的情境。

      • 按寫入資料量計費:僅按原始寫入資料量計費,提供30天免費儲存,以及免費的資料加工、投遞等功能。適合儲存周期接近30天或資料處理鏈路複雜的業務情境。

    • 資料儲存時間:設定日誌的保留天數(1~3650天,3650為永久儲存),預設為30天。

    • 其他配置保持預設,單擊確定。如需瞭解其他配置資訊,請參考管理LogStore

步驟一:配置機器組(安裝LoongCollector)

在Docker宿主機上以容器方式部署LoongCollector,並將其加入到機器組中。通過機器組實現對多個採集節點的統一管理、配置分發與狀態監控。

  1. 拉取鏡像

    在已安裝Docker的宿主機上執行如下命令,拉取 LoongCollector 鏡像。請將${region_id}替換為宿主機所在地區或就近地區ID(如cn-hangzhou),以提升下載速度和穩定性。

    # LoongCollector鏡像地址
    docker pull aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun
    
    # Logtail鏡像地址
    docker pull registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun
  2. 啟動LoongCollector容器

    運行以下命令啟動容器,確保正確掛載目錄並設定必要環境變數:

    docker run -d \
        -v /:/logtail_host:ro \
        -v /var/run/docker.sock:/var/run/docker.sock \
        --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${sls_upload_channel}/ilogtail_config.json \
        --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \
        --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \
        aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun

    參數說明:

    • ${sls_upload_channel}:日誌上傳通道,由Project所在地區-網路傳輸類型構成。樣本:

      傳輸類型

      配置值格式

      樣本

      適用情境

      內網傳輸

      regionId

      cn-hangzhou

      ECS與Project同地區

      公網傳輸

      regionId-internet

      cn-hangzhou-internet

      • ECS和Project屬於不同地區

      • 伺服器為其他雲廠商伺服器或自建IDC

      傳輸加速

      regionId-acceleration

      cn-hangzhou-acceleration

      國內外跨地區通訊

    • ${aliyun_account_id}:阿里雲主帳號ID。

    • ${user_defined_id}:機器組的使用者自訂標識,用於綁定機器組(如user-defined-docker-1),需在地區內唯一。

      重要

      必須滿足的啟動條件:

      • 正確配置三個關鍵環境變數:

        ALIYUN_LOGTAIL_CONFIGALIYUN_LOGTAIL_USER_IDALIYUN_LOGTAIL_USER_DEFINED_ID

      • 掛載/var/run/docker.sock:用於監聽容器生命週期事件。

      • 掛載//logtail_host:用於訪問宿主機檔案系統。

  3. 驗證容器運行狀態

    docker ps | grep loongcollector

    預期輸出樣本:

    6ad510001753   aliyun-observability-release-registry.cn-beijing.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun   "/usr/local/ilogtail…"   About a minute ago   Up About a minute             recursing_shirley
  4. 配置機器組

    在左側導覽列image資源 > 機器組,單擊機器組 > 建立機器組,配置如下參數並單擊確定

    • 名稱:自訂機器組名稱(如 docker-host-group)。

    • 機器組標識:選擇使用者自訂標識

    • 使用者自訂標識:輸入啟動容器時設定的${user_defined_id}必須完全一致,否則無法關聯成功。

  5. 驗證機器組心跳狀態

    單擊建立機器組名稱,進入機器組詳情頁,查看機器組狀態

步驟二:建立並配置日誌採集規則

定義 LoongCollector 採集哪些日誌、如何解析日誌結構、如何過濾內容,並將配置綁定到登入的機器組。

  1. image日誌庫頁面,單擊目標LogStore名稱前的image展開。

  2. 單擊資料接入後的image,在快速資料接入彈框中,根據日誌源選擇接入模板,並單擊立即接入

  3. 機器組配置,完成後單擊下一步

    • 使用情境:選擇Docker情境

    • 步驟一中建立好的機器組從源機器組列表添加至右側應用機器組

  4. Logtail配置頁面,完成如下配置,並單擊下一步

1. 全域與輸入配置

配置前,請確保已完成資料接入模板選擇和機器組綁定。本步驟用於定義採集配置的名稱、日誌來源及採集範圍。

採集Docker標準輸出

全域配置

  • 配置名稱:自訂採集配置名稱,在其所屬Project內必須唯一。建立成功後,無法修改。命名規則:

    • 僅支援小寫字母、數字、連字號(-)和底線(_)。

    • 必須以小寫字母或者數字作為開頭和結尾。

輸入配置

  • 選擇開啟標準輸出標準錯誤開關(預設全部開啟)。

    重要

    建議不要同時開啟標準輸出和標準錯誤,可能會導致採集日誌出現混亂。

採集Docker容器文本日誌

全域配置

  • 配置名稱:自訂採集配置名稱,在其所屬Project內必須唯一。建立成功後,無法修改。命名規則:

    • 僅支援小寫字母、數字、連字號(-)和底線(_)。

    • 必須以小寫字母或者數字作為開頭和結尾。

輸入配置

  • 檔案路徑類型

    • 容器內路徑:採集容器內的記錄檔。

    • 宿主機路徑:採集宿主機本地服務日誌。

  • 檔案路徑:日誌採集的絕對路徑。

    • Linux:以“/”開頭,如/data/mylogs/**/*.log,表示/data/mylogs目錄下所有尾碼名為.Log的檔案。

    • Windows:以盤符開頭,如C:\Program Files\Intel\**\*.Log

  • 最大目錄監控深度檔案路徑中萬用字元**匹配的最大目錄深度。預設為0(僅本層),取值範圍是0~1000。

    建議設定為0,配置路徑到檔案所在的目錄。

2. Tlog與結構化

配置Tlog規則可將原始非結構化日誌轉換為結構化的資料,提升日誌查詢與分析效率。建議在配置前先添加日誌範例:

Logtail配置頁面的處理配置地區,單擊添加日誌範例,輸入待採集的日誌內容。系統將基於範例識別日誌格式,輔助產生Regex和解析規則,降低配置難度。

情境一:多行Tlog(如Java堆棧日誌)

由於Java異常堆棧、JSON等日誌通常跨越多行,在預設採集模式下會被拆分為多條不完整的記錄,導致上下文資訊丟失;為此,可啟用多行採集模式,通過配置行首Regex,將同一日誌的連續多行內容合并為一條完整日誌。

效果樣本:

未經任何處理的原始日誌

預設採集模式下,每行作為獨立日誌,堆棧資訊被拆散,丟失上下文

開啟多行模式,通過行首Regex識別完整日誌,保留完整語義結構。

image

image

image

配置步驟:Logtail配置頁面的處理配置地區,開啟多行模式

  • 類型:選擇自訂多行JSON

    • 自訂:原始日誌的格式不固定,需配置行首Regex,來標識每條日誌的起始行。

      • 行首Regex:支援自動產生或手動輸入,Regex需要能夠匹配完整的一行資料,如上述樣本中匹配的Regex為\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*

        • 自動產生:單擊自動產生Regex,然後在日誌範例文字框中,選擇需提取的日誌內容,單擊產生正則

        • 手動輸入:單擊手動輸入Regex,輸入完成後,單擊驗證

    • 多行JSON:當原始日誌均為標準JSON格式時,Log Service會自動處理單條JSON日誌內部的換行。

  • 切分失敗處理方式

    • 丟棄:如果一段文本無法匹配行首規則,則直接丟棄。

    • 保留單行:將無法匹配的文本按原始的單行模式進行切分和保留。

情境二:結構化日誌

當原始日誌為非結構化或半結構化文本(如 Nginx 訪問日誌、應用輸出日誌)時,直接進行查詢和分析往往效率低下。Log Service提供多種資料解析外掛程式,能夠自動將不同格式的原始日誌轉換為結構化資料,為後續的分析、監控和警示提供堅實的資料基礎。

效果樣本:

未經任何處理的原始日誌

結構化解析後的日誌

192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36"
body_bytes_sent: 368
http_referer: -
http_user_agent : Mozi11a/5.0 (Nindows NT 10.0; Win64; x64) AppleMebKit/537.36 (KHTML, like Gecko) Chrome/131.0.x.x Safari/537.36
remote_addr:192.168.*.*
remote_user: -
request_length: 514
request_method: GET
request_time: 0.000
request_uri: /nginx-logo.png
status: 200
time_local: 15/Apr/2025:16:40:00

配置步驟:Logtail配置頁面的處理配置地區

  1. 添加解析外掛程式:單擊添加處理外掛程式,根據實際格式配置正則解析、分隔字元解析、JSON 解析等外掛程式。此處以採集NGINX日誌為例,選擇原生處理外掛程式 > NGINX模式解析

  2. NGINX日誌配置:將 Nginx 伺服器設定檔(nginx.conf)中的 log_format 定義完整地複製並粘貼到此文字框中。

    樣本:

    log_format main  '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
    重要

    此處的格式定義必須與伺服器上組建記錄檔的格式完全一致,否則將導致日誌解析失敗。

  3. 通用配置參數說明:以下參數在多種資料解析外掛程式中都會出現,其功能和用法是統一的。

    • 原始欄位:指定要解析的源欄位名。預設為content,即採集到的整條日誌內容。

    • 解析失敗時保留原始欄位:推薦開啟。當日誌無法被外掛程式成功解析時(例如格式不匹配),此選項能確保原始日誌內容不會丟失,而是被完整保留在指定的原始欄位中。

    • 解析成功時保留原始欄位:選中後,即使日誌解析成功,原始日誌內容也會被保留。

3. 日誌過濾

在日誌採集過程中,大量低價值或無關日誌(如 DEBUG/INFO 層級日誌)的無差別收集,不僅造成儲存資源浪費、增加成本,還影響查詢效率並帶來資料泄露風險。為此,可通過精細化過濾策略實現高效、安全的日誌採集。

通過內容過濾降低成本

基於日誌內容的欄位過濾(如僅採集 level 為 WARNING 或 ERROR 的日誌)。

效果樣本:

未經任何處理的原始日誌

只採集WARNINGERROR日誌

{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}
{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}
{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}

配置步驟:Logtail配置頁面的處理配置地區

單擊添加處理外掛程式,選擇原生處理外掛程式 > 過濾處理

  • 欄位名:過濾的日誌欄位。

  • 欄位值:用於過濾的Regex,僅支援全文匹配,不支援關鍵詞部分匹配。

通過黑名單控制採集範圍

通過黑名單機制排除指定目錄或檔案,避免無關或敏感日誌被上傳。

配置步驟:Logtail配置頁面的輸入配置 > 其他輸入配置地區,啟用採集黑名單,並單擊添加

支援完整匹配和萬用字元匹配目錄和檔案名稱,萬用字元只支援星號(*)和半形問號(?)。
  • 檔案路徑黑名單:需要忽略的檔案路徑,樣本:

    • /home/admin/private*.log:在採集時忽略/home/admin/目錄下所有以private開頭,以.log結尾的檔案。

    • /home/admin/private*/*_inner.log:在採集時忽略/home/admin/目錄下以private開頭的目錄內,以_inner.log結尾的檔案。

  • 檔案黑名單:配置採集時需要忽略的檔案名稱,樣本:

    • app_inner.log:在採集時忽略所有名為app_inner.log的檔案。

  • 目錄黑名單:目錄路徑不能以正斜線(/)結尾,樣本:

    • /home/admin/dir1/:目錄黑名單不會生效。

    • /home/admin/dir*:在採集時忽略/home/admin/目錄下所有以dir開頭的子目錄下的檔案。

    • /home/admin/*/dir:在採集時忽略/home/admin/目錄下二級目錄名為dir的子目錄下的所有檔案。例如/home/admin/a/dir目錄下的檔案被忽略,/home/admin/a/b/dir目錄下的檔案被採集。

容器過濾

基於容器元資訊(如環境變數、Pod 標籤、命名空間、容器名稱等)設定採集條件,精準控制採集哪些容器的日誌。

配置步驟:Logtail配置頁面的輸入配置地區,啟用容器過濾,並單擊添加

多個條件之間為“且”的關係,所有正則匹配均基於 Go 語言的 RE2 正則引擎,功能較 PCRE 等引擎有所限制,請遵循附錄:Regex使用限制(容器過濾)編寫Regex。
  • 環境變數黑/白名單:指定待採集容器的環境變數條件。

  • K8s Pod標籤黑/白名單:指定待採集容器所在Pod 的標籤條件。

  • K8s Pod 名稱正則匹配:通過Pod名稱指定待採集的容器

  • K8s Namespace 正則匹配:通過Namespace名稱指定待採集的容器。

  • K8s 容器名稱正則匹配:通過容器名稱指定待採集的容器。

  • 容器label黑/白名單:採集容器標籤合格容器,Docker情境使用,K8s情境不推薦使用。

4. 日誌分類

在多應用、多執行個體共用相同日誌格式的情境下,日誌來源難以區分,導致查詢時上下文缺失、分析效率低下。為此,可通過配置日誌主題(Topic)和日誌打標實現自動化的上下文關聯與邏輯分類。

配置日誌主題(Topic)

當多個應用或執行個體的日誌格式相同但路徑不同時(如 /apps/app-A/run.log/apps/app-B/run.log),採集日誌難以區分來源。此時可基於機器組、自訂名稱或檔案路徑提取方式產生 Topic,靈活區分不同業務或路徑來源的日誌。

配置步驟:全域配置 > 其他全域配置 > 日誌主題類型:選擇Topic產生方式,支援如下三種類型:

  • 機器組Topic:將採集配置應用於多個機器組時,LoongCollector 會自動使用伺服器所屬的機器組名稱作為 __topic__ 欄位上傳。適用於按主機叢集劃分日誌情境。

  • 自訂:格式為customized://<自訂佈景主題名>,例如 customized://app-login。適用於固定業務標識的靜態主題情境。

  • 檔案路徑提取:從記錄檔的完整路徑中提取關鍵資訊,動態標記日誌來源。適用於多使用者/應用共用相同記錄檔名但路徑不同的情況。

    當多個使用者或服務將日誌寫入不同頂級目錄,但下級路徑和檔案名稱一致時,僅靠檔案名稱無法區分來源,例如:

    /data/logs
    ├── userA
    │   └── serviceA
    │       └── service.log
    ├── userB
    │   └── serviceA
    │       └── service.log
    └── userC
        └── serviceA
            └── service.log

    此時您可以配置檔案路徑提取,並使用Regex從完整路徑中提取關鍵資訊,並將匹配結果作為日誌主題(Topic)上傳至LogStore。

    擷取規則:基於Regex的擷取的群組

    在配置Regex時,系統根據擷取的群組的數量和命名方式自動決定輸出欄位格式,規則如下:

    檔案路徑的Regex中,需要對正斜線(/)進行轉義。

    擷取的群組類型

    適用情境

    產生欄位

    正則樣本

    匹配路徑樣本

    產生欄位

    單擷取的群組(僅一個 (.*?)

    僅需一個維度區分來源(如使用者名稱、環境)

    產生__topic__欄位

    \/logs\/(.*?)\/app\.log

    /logs/userA/app.log

    __topic__:userA

    多擷取的群組-非命名(多個 (.*?)

    需要多個維度但無需語義標籤

    產生tag欄位__tag__:__topic_{i}__,其中{i}為擷取的群組的序號

    \/logs\/(.*?)\/(.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:__topic_1__userA

    __tag__:__topic_2__svcA

    多擷取的群組-命名(使用 (?P<name>.*?)

    需多維且希望欄位含義清晰、便於查詢與分析

    產生tag欄位__tag__:{name}

    \/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:user:userA

    __tag__:service:svcA

日誌打標

啟用日誌標籤富化功能,從容器環境變數或 Kubernetes Pod 標籤中提取關鍵資訊並附加為 tag,實現日誌的精細化分組。

配置步驟:Logtail配置頁面的輸入配置地區,啟用日誌標籤富化,並單擊添加

  • 環境變數相關:配置環境變數名和tag名,環境變數值將存放在tag名中。

    • 環境變數名:指定需要提取的環境變數名稱。

    • tag名:環境變數標籤名稱。

  • Pod標籤相關:配置Pod標籤名和tag名,Pod標籤值將存放在tag名中。

    • Pod標籤名:需要提取的 Kubernetes Pod 標籤名稱。

    • tag名:標籤名稱。

5. 輸出配置

預設採集所有日誌發送到當前日誌庫,壓縮方式為lz4。如需將同一來源的日誌分發到不同日誌庫,請參考如下步驟進行配置:

多目標動態分發

重要
  • 多目標發送僅適用於LoongCollector 3.0.0及以上版本,Logtail不支援。

  • 輸出目標最多可配置5個。

  • 配置多個輸出目標後,該採集配置將不再顯示在當前 Logstore 的採集配置列表中。如需查看、修改或刪除多目標分發配置,請參考如何管理多目標分發配置?

配置步驟:Logtail配置頁面的輸出配置地區。

  1. 單擊image展開輸出配置。

  2. 單擊添加輸出目標,完成如下配置:

    • 日誌庫:選擇目標日誌庫。

    • 壓縮方式:支援lz4zstd

    • 路由配置:根據日誌的Tag欄位路由分發,滿足路由配置的日誌會被上傳到目標日誌庫,路由配置為空白時表示採集到的所有日誌都會被上傳到目標日誌庫。

      • Tag名稱:用於路由的Tag欄位名稱,直接填寫欄位名(如__path__),無需__tag__:首碼。Tag欄位分為如下兩類:

        關於Tag的詳細資料請參考管理LoongCollector採集Tag
        • Agent相關:與採集 Agent 本身相關,不依賴外掛程式。 如__hostname____user_defined_id__等。

        • 輸入外掛程式相關:依賴輸入外掛程式,由輸入外掛程式提供並富化相關資訊到日誌中。如檔案採集的__path__;K8s採集的_pod_name__container_name_等。

      • Tag值:日誌的Tag欄位值與此匹配時,發送到該目標日誌庫。

      • 是否丟棄該Tag欄位:開啟後上傳的日誌中不包含該Tag欄位。

步驟三:查詢與分析配置

在完成Tlog與外掛程式配置後,單擊下一步,進入查詢分析配置頁面:

  • 系統預設開啟全文索引,支援對日誌原始內容進行關鍵詞搜尋。

  • 如需按欄位進行精確查詢,請在頁面載入出預覽資料後,單擊自動產生索引,Log Service將根據預覽資料中的第一條內容產生欄位索引

配置完成後,單擊下一步,完成整個採集流程的設定。

步驟四:驗證與故障排查

完成採集配置並應用到機器組後,系統將自動下發配置並開始採集增量日誌。

查看上報日誌

  1. 確認記錄檔有新增內容:LoongCollector只採集增量日誌。執行 tail -f /path/to/your/log/file,並觸發業務操作,確保有新的日誌正在寫入。

  2. 查詢日誌:進入目標 LogStore 的查詢分析頁面,單擊查詢/分析(預設時間範圍為最近15分鐘),觀察是否有新日誌流入。採集的每條Docker容器文本日誌中預設包含以下欄位資訊:

    欄位名

    說明

    __source__

    LoongCollector(Logtail)容器的IP地址。

    _container_ip_

    業務容器的IP地址。

    __tag__:__hostname__

    LoongCollector(Logtail)所在Docker主機的名稱。

    __tag__:__path__

    日誌採集路徑。

    __tag__:__receive_time__

    日誌到達服務端的時間。

    __tag__:__user_defined_id__

    機器組的自訂標識。

常見問題排查

機器組心跳串連為fail

  1. 檢查使用者標識:如果您的伺服器類型不是ECS,或使用的ECS和Project屬於不同阿里雲帳號,請根據如下表格檢查指定目錄下是否存在正確的使用者標識。

    • Linux:執行cd /etc/ilogtail/users/ && touch <uid>命令,建立使用者標識檔案。

    • Windows:進入C:\LogtailData\users\目錄,建立一個名為<uid>的空檔案。

    如果指定路徑下存在以當前Project所屬的阿里雲帳號ID命名的檔案,則說明使用者標識配置正確。

  2. 檢查機器組標識:如果您使用了使用者自訂標識機器組,請檢查指定目錄下是否存在user_defined_id檔案,如果存在請檢查該檔案中的內容是否與機器組配置的自訂標識一致。

    系統

    指定目錄

    解決方案

    Linux

    /etc/ilogtail/user_defined_id

    # 配置使用者自訂標識,如目錄不存在請手動建立
    echo "user-defined-1" > /etc/ilogtail/user_defined_id

    Windows

    C:\LogtailData\user_defined_id

    C:\LogtailData目錄下建立user_defined_id檔案,並寫入使用者自訂標識。(如目錄不存在,請手動建立)

  3. 如果使用者標識和機器組標識均配置無誤,請參考LoongCollector(Logtail)機器組問題排查思路進一步排查。


日誌採集無資料

  1. 檢查是否有增量日誌:配置LoongCollector(Logtail)採集後,如果待採集的記錄檔沒有新增日誌,則LoongCollector(Logtail)不會採集該檔案。

  2. 檢查機器組心跳狀態:前往image資源 > 機器組頁面,單擊目標機器組名稱,在機器組配置 > 機器組狀態地區,查看心跳狀態。

    • 如果心跳為OK,則表示機器組與Log Service Project 串連正常。

    • 如果心跳為FAIL:參考機器組心跳串連為fail進行排查。

  3. 確認LoongCollector(Logtail)採集配置是否已應用到機器組:即使LoongCollector(Logtail)採集配置已建立,但如果未將其應用到機器組,日誌仍無法被採集。

    1. 前往image資源 > 機器組頁面,單擊目標機器組名稱,進入機器組配置頁面。

    2. 在頁面中查看管理配置,左側展示全部Logtail配置,右側展示已生效Logtail配置。如果目標LoongCollector(Logtail)採集配置已移動到右側生效地區,則表示該配置已成功應用到目標機器組。

    3. 如果目標LoongCollector(Logtail)採集配置未移動到右側生效地區,請單擊修改,在左側全部Logtail配置列表中勾選目標LoongCollector(Logtail)配置名稱,單擊image移動到右側生效地區,完成後單擊儲存


採集日誌報錯或格式錯誤

排查思路:這種情況說明網路連接和基礎配置正常,問題主要出在日誌內容解析規則不匹配。您需要查看具體的錯誤資訊來定位問題:

  1. Logtail配置頁面,單擊採集異常的LoongCollector(Logtail)配置名稱,在日誌採集錯誤頁簽下,單擊時間選擇設定查詢時間。

  2. 採集異常監控 > 全量錯誤資訊地區,查看錯誤記錄檔的警示類型,並根據採集資料常見錯誤類型查詢對應的解決辦法。

後續步驟

  1. 日誌查詢與分析

  2. 資料視覺效果:藉助可視化儀錶盤監控關鍵計量趨勢。

  3. 資料異常自動預警:設定警示策略,即時感知系統的異常情況。

常用命令

查看LoongCollector(Logtail)運行狀態

docker exec ${logtail_container_id} /etc/init.d/ilogtaild status

查看LoongCollector(Logtail)的版本號碼、IP地址和啟動時間等資訊

docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.json

查看LoongCollector(Logtail)的作業記錄

LoongCollector(Logtail)作業記錄儲存在容器內的/usr/local/ilogtail/目錄下,檔案名稱為ilogtail.LOG,輪轉檔案會壓縮儲存為ilogtail.LOG.x.gz。樣本如下:

# 查看LoongCollector作業記錄
docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/loongcollector.LOG

# 查看Logtail作業記錄
docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG

輸出結果樣本如下:

[2025-08-25 09:17:44.610496]    [info]  [22]    /build/loongcollector/file_server/polling/PollingModify.cpp:75          polling modify resume:succeeded
[2025-08-25 09:17:44.610497]    [info]  [22]    /build/loongcollector/file_server/polling/PollingDirFile.cpp:100                polling discovery resume:starts
[2025-08-25 09:17:44.610498]    [info]  [22]    /build/loongcollector/file_server/polling/PollingDirFile.cpp:103                polling discovery resume:succeeded
[2025-08-25 09:17:44.610499]    [info]  [22]    /build/loongcollector/file_server/FileServer.cpp:117            file server resume:succeeded
[2025-08-25 09:17:44.610500]    [info]  [22]    /build/loongcollector/file_server/EventDispatcher.cpp:1019              checkpoint dump:succeeded

重啟LoongCollector(Logtail)

# 停止loongcollector
docker exec a287de895e40 /etc/init.d/ilogtaild stop

# 啟動loongcollector
docker exec a287de895e40 /etc/init.d/ilogtaild start

常見問題

常見錯誤資訊

錯誤現象

原因

解決方案

Failed to connect to Logtail

Project地區與LoongCollector(Logtail)容器不一致

檢查ALIYUN_LOGTAIL_CONFIG中的地區配置

No logs in LogStore

檔案路徑配置錯誤

確認業務容器內日誌路徑與採集配置匹配


錯誤記錄檔:The parameter is invalid : uuid=none

問題描述:如果LoongCollector(Logtail)日誌(/usr/local/ilogtail/ilogtail.LOG)中出現The parameter is invalid : uuid=none的錯誤記錄檔。

解決方案:請在宿主機上建立一個product_uuid檔案,在其中輸入任意合法UUID(例如169E98C9-ABC0-4A92-B1D2-AA6239C0D261),並把該檔案掛載到LoongCollector(Logtail)容器的/sys/class/dmi/id/product_uuid目錄。


如何讓同一個記錄檔或容器標準輸出被多個採集配置同時採集

預設情況下,Log Service為了防止資料重複,限制了每個日誌源只能被一個採集配置採集:

  • 文本記錄檔只能匹配一個 Logtail 採集配置;

  • 容器的標準輸出(stdout) :

    • 如果使用的是標準輸出-新版模板, 預設只能被一個標準輸出採集配置採集。

    • 如果使用的是標準輸出-舊版模板,無需額外配置,預設支援採集多份。

  1. 登入Log Service控制台,進入目標Project。

  2. 在左側導航選擇image日誌庫,找到目標LogStore。

  3. 單擊其名稱前的image展開LogStore。

  4. 單擊Logtail配置,在配置列表中,找到目標Logtail配置,單擊操作列的管理Logtail配置

  5. 在Logtail配置頁面,單擊編輯,下滑至輸入配置地區:

    • 採集文字檔日誌:開啟允許檔案多次採集

    • 採集容器標準輸出:開啟允許標準輸出多次採集


如何管理多目標分發配置?

由於多目標分發配置關聯了多個日誌庫,這類配置需要通過 Project 層級的管理頁面進行維護:

  1. 登入Log Service控制台,單擊目標Project名稱。

  2. 在目標Project頁面,單擊左側導覽列image資源 > 組態管理

    說明

    此頁面集中管理Project下的所有採集配置,包括那些因日誌庫被誤刪而殘留的配置。

附錄:原生解析外掛程式詳解

Logtail配置頁面的處理配置地區,可以通過添加處理外掛程式,對原始日誌進行結構化配置。如需為已有採集配置添加處理外掛程式,可以參考如下步驟:

  1. 在左側導覽列選擇image日誌庫,找到目標LogStore。

  2. 單擊其名稱前的image展開LogStore。

  3. 單擊Logtail配置,在配置列表中,找到目標Logtail配置,單擊操作列的管理Logtail配置

  4. 在Logtail配置頁面,單擊編輯

此處僅介紹常用處理外掛程式,覆蓋常見Tlog情境,如需更多功能,請參考拓展處理外掛程式
重要

外掛程式組合使用規則(適用於 LoongCollector / Logtail 2.0 及以上版本):

  • 原生處理外掛程式與拓展處理外掛程式均可獨立使用,也支援按需組合使用。

  • 推薦優先選用原生處理外掛程式,因其具備更優的效能和更高的穩定性。

  • 當原生功能無法滿足業務需求時,可在已配置的原生處理外掛程式之後,追加配置拓展處理外掛程式以實現補充處理。

順序約束:

所有外掛程式按照配置順序組成處理鏈,依次執行。需要注意:所有原生處理外掛程式必須先於任何拓展處理外掛程式,添加任意拓展處理外掛程式後,將無法繼續添加原生處理外掛程式。

正則解析

通過Regex提取日誌欄位,並將日誌解析為索引值對形式,每個欄位都可以被獨立查詢和分析。

效果樣本:

未經任何處理的原始日誌

使用正則解析外掛程式

127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
body_bytes_sent: 41
http_referer: http://www.example.com/wp-admin/post-new.php?post_type=page
http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; ×64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
remote_addr: 127.0.0.1
remote_user: -
request_method: GET
request_protocol: HTTP/1.1
request_uri: /wp-admin/admin-ajax.php?action=rest-nonce
status: 200
time_local: 16/Aug/2024:14:37:52 +0800

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇原生處理外掛程式 > 正則解析

  • Regex:用於匹配日誌,支援自動產生或手動輸入:

    • 自動產生:

      • 單擊自動產生Regex

      • 日誌範例中劃選需要提取的日誌內容。

      • 單擊產生正則

        image

    • 手動輸入:根據日誌格式手動輸入Regex

    配置完成後,單擊驗證,測試Regex是否能夠正確解析日誌內容。

  • 日誌提取欄位:為提取的日誌內容(Value),設定對應的欄位名(Key)。

  • 其他參數請參考情境二:結構化日誌中的通用配置參數說明。


分隔字元解析

通過分隔字元將日誌內容結構化,解析為多個索引值對形式,支援單字元分隔字元和多字元分隔字元。

效果樣本:

未經任何處理的原始日誌

按指定字元,切割欄位

05/May/2025:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
ip:10.10.*.*
request:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1
size:18204
status:200
time:05/May/2025:13:30:28
user_agent:aliyun-sdk-java

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇原生處理 > 分隔字元解析

  • 分隔字元:指定用於切分日誌內容的字元。

    樣本:對於CSV格式檔案,選擇自訂,輸入半形逗號(,)。

  • 引用符:當某個欄位值中包含分隔字元時,需要指定引用符包裹該欄位,避免錯誤切割。

  • 日誌提取欄位:按分隔順序依次為每一列設定對應的欄位名稱(Key)。規則要求如下:

    • 欄位名只能包含:字母、數字、底線(_)。

    • 必須以字母或底線(_)開頭。

    • 最大長度:128位元組。

  • 其他參數請參考情境二:結構化日誌中的通用配置參數說明。


標準JSON解析

將Object類型的JSON日誌結構化,解析為索引值對形式。

效果樣本:

未經任何處理的原始日誌

標準JSON索引值自動提取

{"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.220", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "18204"}, "time": "05/Jan/2025:13:30:28"}
ip: 10.200.98.220
request: {"status": "200", "latency" : "18204" }
time: 05/Jan/2025:13:30:28
url: POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek******&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1
user-agent:aliyun-sdk-java

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇原生處理外掛程式 > JSON解析

  • 原始欄位:預設值為content(此欄位用於存放待解析的原始日誌內容)。

  • 其他參數請參考情境二:結構化日誌中的通用配置參數說明。


嵌套JSON解析

通過指定展開深度,將嵌套的JSON日誌解析為索引值對形式。

效果樣本:

未經任何處理的原始日誌

展開深度:0,並使用展開深度作為首碼

展開深度:1,並使用展開深度作為首碼

{"s_key":{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}}
0_s_key_k1_k2_k3_k41:41
0_s_key_k1_k2_k3_k4_k51:51
0_s_key_k1_k2_k3_k4_k52:52
1_s_key:{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇拓展處理外掛程式 > 展開JSON欄位

  • 原始欄位:需要展開的原始欄位名,例如content

  • JSON展開深度:JSON對象的展開層級。0表示完全展開(預設值),1表示當前層級,以此類推。

  • JSON展開串連符:JSON展開時欄位名的串連符,預設為底線 _。

  • JSON展開欄位首碼:指定JSON展開後欄位名的首碼。

  • 展開數組:開啟此項可將數組展開為帶索引的索引值對。

    樣本:{"k":["a","b"]} 展開為  {"k[0]":"a","k[1]":"b"}

    如果需要對展開後的欄位進行重新命名(例如,將 prefix_s_key_k1 改為 new_field_name),可以後續再添加一個重新命名欄位外掛程式來完成映射。
  • 其他參數請參考情境二:結構化日誌中的通用配置參數說明。


JSON數組解析

使用json_extract函數,從JSON數組中提取JSON對象。

效果樣本:

未經任何處理的原始日誌

提取JSON數組結構

[{"key1":"value1"},{"key2":"value2"}]
json1:{"key1":"value1"}
json2:{"key2":"value2"}

配置步驟:Logtail配置頁面的處理配置地區,將處理模式切換為SPL,配置SPL語句,使用  json_extract函數從JSON數組中提取JSON對象。

樣本:從日誌欄位 content 中提取 JSON 數組中的元素,並將結果分別儲存在新欄位 json1和 json2 中。

* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')

Apache日誌解析

根據Apache日誌設定檔中的定義將日誌內容結構化,解析為多個索引值對形式。

效果樣本:

未經任何處理的原始日誌

Apache通用日誌格式combined解析

1 192.168.1.10 - - [08/May/2024:15:30:28 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://www.example.com/referrer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36"
http_referer:https://www.example.com/referrer
http_user_agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36
remote_addr:192.168.1.10
remote_ident:-
remote_user:-
request_method:GET
request_protocol:HTTP/1.1
request_uri:/index.html
response_size_bytes:1234
status:200
time_local:[08/May/2024:15:30:28 +0800]

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇原生處理外掛程式 > APACHE模式解析

  • 日誌格式combined

  • APACHE配置欄位:系統會根據日誌格式自動填滿配置。

    重要

    請務必核對自動填滿的內容,確保與伺服器上 Apache 設定檔(通常位於/etc/apache2/apache2.conf)中定義的 LogFormat 完全一致。

  • 其他參數請參考情境二:結構化日誌中的通用配置參數說明。


資料脫敏

對日誌中的敏感性資料進行脫敏處理。

效果樣本:

未經任何處理的原始日誌

脫敏結果

[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}]
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇原生處理外掛程式 > 脫敏處理

  • 原始欄位:解析日誌前,用於存放日誌內容的原始欄位。

  • 脫敏方式

    • const:將敏感內容替換成所修改的字串。

    • md5:將敏感內容替換為其對應的MD5值。

  • 替換字串:選擇脫敏方式const時,需要輸入字串,用於替換敏感內容。

  • 被替換內容前的內容運算式:用於尋找敏感內容,使用RE2文法配置。

  • 被替換的內容運算式:敏感內容的運算式,使用RE2文法配置。


時間解析

對日誌中的時間欄位進行解析,並將解析結果設定為日誌的__time__欄位。

效果樣本:

未經任何處理的原始日誌

時間解析

{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}

image

配置步驟:Logtail配置頁面的處理配置地區,單擊添加處理外掛程式,選擇原生處理外掛程式 > 時間解析

  • 原始欄位:解析日誌前,用於存放日誌內容的原始欄位。

  • 時間格式:根據日誌中的時間內容設定對應的時間格式

  • 時區:選擇日誌時間欄位所在的時區。預設使用機器時區,即LoongCollector(Logtail)進程所在環境的時區。

附錄:Regex使用限制(容器過濾)

容器過濾時所使用的Regex基於Go語言的RE2引擎,與PCRE等其他引擎相比存在部分文法限制。請在編寫Regex時注意以下事項:

1. 命名分組文法差異

Go語言使用 (?P<name>...) 文法定義命名分組,不支援 PCRE中的 (?<name>...) 文法。

  • 正確樣本:(?P<year>\d{4})

  • 錯誤寫法:(?<year>\d{4})

2. 不支援的正則特性

以下常見但複雜的正則功能在RE2中不可用,請避免使用:

  • 斷言:(?=...)(?!...)(?<=...)(?<!...)

  • 條件運算式:(?(condition)true|false)

  • 遞迴匹配:(?R)(?0)

  • 子程式引用:(?&name)(?P>name)

  • 原子組:(?>...)

3. 使用建議

推薦使用 Regex101等工具調試Regex時,選擇 Golang (RE2) 模式進行驗證,以確保相容性。若使用了上述不支援的文法,外掛程式將無法正確解析或匹配。

附錄:容器標準輸出新舊版本對比

為提升日誌儲存效率與採集一致性,容器標準輸出的日誌元資訊格式已完成升級。新版格式將元資訊統一歸類至 __tag__ 欄位中,實現儲存最佳化和格式標準化。

  1. 新版標準輸出核心優勢

    • 效能大幅提升

      • 採用C++重構,相較舊版Go實現,效能提升180%-300%。

      • 支援原生外掛程式處理資料,支援同步多執行緒,充分利用系統資源。

      • 支援原生外掛程式與Go外掛程式靈活組合使用,滿足複雜情境需求。

    • 更強的可靠性

      • 支援標準輸出日誌輪轉隊列,日誌採集機制和檔案採集機制統一,在標準輸出日誌快速輪轉時的情境可靠性高。

    • 更低的資源消耗

      • CPU使用率降低20%-25%。

      • 記憶體佔用減少20%-25%。

    • 營運一致性增強

      • 參數配置統一:新版標準輸出採集外掛程式的配置參數和檔案採集外掛程式保持一致。

      • 元資訊統一管理:容器元資訊欄位命名和Tag日誌儲存位置,與檔案採集情境進行了統一,消費端只需維護同套處理邏輯。

  2. 新舊版本特性對比

    特性維度

    舊版特點

    新版特點

    儲存方式

    元資訊作為普通欄位直接嵌入日誌內容中

    元資訊集中存放於 __tag__ 標籤中

    儲存效率

    每條日誌重複攜帶完整元資訊,佔用較多儲存空間

    相同上下文下的多條日誌可複用元資訊,節省儲存成本

    格式一致性

    與容器檔案採集格式不一致

    欄位命名及儲存結構與容器檔案採集完全對齊,實現統一體驗

    查詢訪問方式

    可通過欄位名直接查詢(如 _container_name_

    需通過 __tag__ 訪問對應索引值(如 __tag__: _container_name_

  3. 容器元資訊欄位對應表

    舊版欄位名稱

    新版欄位名稱

    _container_ip_

    __tag__:_container_ip_

    _container_name_

    __tag__:_container_name_

    _image_name_

    __tag__:_image_name_

    _namespace_

    __tag__:_namespace_

    _pod_name_

    __tag__:_pod_name_

    _pod_uid_

    __tag__:_pod_uid_

    所有元資訊欄位在新版中均以 __tag__:<key> 形式儲存於日誌的標籤(Tag)地區,而非嵌入日誌內容中。

  4. 新版變更對使用者影響

    • 消費端適配:由於儲存位置從“內容”變為“Tag”,使用者的日誌消費邏輯需做相應調整(例如查詢時需通過 __tag__ 訪問欄位)。

    • SQL相容性:查詢SQL已經自動相容適配,因此使用者無需修改查詢語句即可同時處理新舊版本日誌。

更多資訊

全域配置參數介紹

配置項

說明

配置名稱

Logtail配置名稱,在其所屬Project內必須唯一。建立Logtail配置成功後,無法修改其名稱。

日誌主題類型

選擇日誌主題(Topic)的產生方式。包含機器組Topic,檔案路徑提取,自訂三種方式。

進階參數

其它可選的與配置全域相關的進階功能參數,請參見建立Logtail流水線配置

輸入配置參數介紹

配置項

說明

Logtail部署模式

DaemonSet:在叢集的每個Node節點上部署一個 LoongCollector,負責採集該節點上所有容器的日誌。

Sidecar:每個容器組(Pod)運行一個LoongCollector容器,用於採集當前容器組(Pod)所有容器(Containers)的日誌。不同Pod的日誌採集相互隔離。

檔案路徑類型

支援配置容器內路徑宿主機路徑

  • 容器內路徑:採集容器內文本記錄檔時,請選擇容器內路徑。

  • 宿主機路徑:採集叢集節點上的服務日誌時,請選擇宿主機路徑。

檔案路徑

根據日誌在主機(例如ECS)上的位置,設定日誌目錄和檔案名稱。

  • 如果目標主機是Linux系統,則日誌路徑必須以正斜線(/)開頭,例如/apsara/nuwa/**/app.Log

  • 如果目標主機是Windows系統,則日誌路徑必須以盤符開頭,例如C:\Program Files\Intel\**\*.Log

目錄名和檔案名稱均支援完整模式和萬用字元模式,檔案名稱規則請參見Wildcard matching。其中,日誌路徑萬用字元只支援星號(*)和半形問號(?)。

記錄檔尋找模式為多層目錄匹配,即合格指定目錄(包含所有層級的目錄)下所有合格檔案都會被尋找到。例如:

  • /apsara/nuwa/**/*.log表示/apsara/nuwa目錄(包含該目錄的遞迴子目錄)中尾碼名為.log的檔案。

  • /var/logs/app_*/**/*.log表示/var/logs目錄下所有符合app_*格式的目錄(包含該目錄的遞迴子目錄)中尾碼名為.log的檔案。

  • /var/log/nginx/**/access*表示/var/log/nginx目錄(包含該目錄的遞迴子目錄)中以access開頭的檔案。

最大目錄監控深度

設定日誌目錄被監控的最大深度,即檔案路徑中萬用字元**匹配的最大目錄深度。0代表只監控本層目錄。

標準輸出

開啟標準輸出後,Logtail將採集容器標準輸出。

標準錯誤

開啟標準錯誤後,Logtail將採集容器標準錯誤。

允許標準輸出多次採集

預設情況下,一個容器的標準輸出日誌只能匹配一個Logtail新版標準輸出採集配置。如果標準輸出需要被多個新版標準輸出採集配置採集,需開啟允許標準輸出多次採集開關。

啟用容器元資訊預覽

開啟啟用容器元資訊預覽後,可在建立Logtail配置後,查看容器元資訊,包括匹配容器資訊和全量容器資訊。

容器過濾

  • 過濾條件說明

重要
  • 容器Label為Docker inspect中的Label,不是Kubernetes中的Label。如何擷取,請參見擷取容器Label

  • 環境變數為容器啟動中配置的環境變數資訊。如何擷取,請參見擷取容器環境變數

  • Kubernetes情境下,推薦使用Kubernetes層級的資訊(K8s Pod名稱正則匹配K8s Namespace正則匹配K8s容器名稱正則匹配K8s Pod標籤白名單等)進行容器過濾。

  1. Kubernetes中的Namespace和容器名稱會映射到容器Label中,分別為io.kubernetes.pod.namespaceio.kubernetes.container.name,推薦使用這兩個容器Label進行容器過濾。例如,某Pod所屬的命名空間為backend-prod,容器名為worker-server,如要採集包含該容器的日誌,可以設定容器Label白名單為io.kubernetes.pod.namespace : backend-prodio.kubernetes.container.name : worker-server

  2. 如果以上兩個容器Label不滿足過濾需求,請使用環境變數的黑白名單進行容器過濾。

K8s Pod名稱正則匹配

通過Pod名稱指定待採集的容器,支援正則匹配。例如設定為^(nginx-log-demo.*)$,表示匹配以nginx-log-demo開頭的Pod下的所有容器。

K8s Namespace正則匹配

通過Namespace名稱指定採集的容器,支援正則匹配。例如設定為^(default|nginx)$,表示匹配nginx命名空間、default命名空間下的所有容器。

K8s容器名稱正則匹配

通過容器名稱指定待採集的容器(Kubernetes容器名稱是定義在spec.containers中),支援正則匹配。例如設定為^(container-test)$,表示匹配所有名為container-test的容器。

容器label白名單

容器Label白名單,用於指定待採集的容器。預設為空白,表示採集所有容器的標準輸出。如要設定容器Label白名單,那麼LabelKey必填,LabelValue可選填。

  • 如果LabelValue為空白,則容器Label中包含LabelKey的容器都匹配。

  • 如果LabelValue不為空白,則容器Label中包含LabelKey=LabelValue的容器才匹配。

    LabelValue預設為字串匹配,即只有LabelValue和容器Label的值完全相同才會匹配。如果該值以^開頭並且以$結尾,則為正則匹配。例如:配置LabelKeyio.kubernetes.container.name,配置LabelValue^(nginx|cube)$,表示可匹配名為nginx、cube的容器。

多個白名單之間為或關係,即只要容器Label滿足任一白名單即可被匹配。

容器label黑名單

容器Label黑名單,用於排除不採集的容器。預設為空白,表示不排除任何容器。如要設定容器Label黑名單,那麼LabelKey必填,LabelValue可選填。

  • 如果LabelValue為空白,則容器Label中包含LabelKey的容器都將被排除。

  • 如果LabelValue不為空白,則容器Label中包含LabelKey=LabelValue的容器才會被排除。

    LabelValue預設為字串匹配,即只有LabelValue和容器Label的值完全相同才會匹配。如果該值以^開頭並且以$結尾,則為正則匹配。例如:設定LabelKeyio.kubernetes.container.name,設定LabelValue^(nginx|cube)$,表示可匹配名為nginx、cube的容器。

多個黑名單之間為或關係,即只要容器Label滿足任一黑名單對即可被排除。

環境變數白名單

環境變數白名單,用於指定待採集的容器。預設為空白,表示採集所有容器的標準輸出。如要設定環境變數白名單,那麼EnvKey必填,EnvValue可選填。

  • 如果EnvValue為空白,則容器環境變數中包含EnvKey的容器都匹配。

  • 如果EnvValue不為空白,則容器環境變數中包含EnvKey=EnvValue的容器才匹配。

    EnvValue預設為字串匹配,即只有EnvValue和環境變數的值完全相同才會匹配。如果該值以^開頭並且以$結尾,則為正則匹配,例如:設定EnvKeyNGINX_SERVICE_PORT,設定EnvValue^(80|6379)$,表示可匹配服務連接埠為80、6379的容器。

多個白名單之間為或關係,即只要容器的環境變數滿足任一索引值對即可被匹配。

環境變數黑名單

環境變數黑名單,用於排除不採集的容器。預設為空白,表示不排除任何容器。如要設定環境變數黑名單,那麼EnvKey必填,EnvValue可選填。

  • 如果EnvValue為空白,則容器環境變數中包含EnvKey的容器的日誌都將被排除。

  • 如果EnvValue不為空白,則容器環境變數中包含EnvKey=EnvValue的容器才會被排除。

    EnvValue預設為字串匹配,即只有EnvValue和環境變數的值完全相同才會匹配。如果該值以^開頭並且以$結尾,則為正則匹配,例如:設定EnvKeyNGINX_SERVICE_PORT,設定EnvValue^(80|6379)$,表示可匹配服務連接埠為80、6379的容器。

多個黑名單之間為或關係,即只要容器的環境變數滿足任一索引值對即可被排除。

K8s Pod標籤白名單

通過Kubernetes Label白名單指定待採集的容器。如要設定Kubernetes Label白名單,那麼LabelKey必填,LabelValue可選填。

  • 如果LabelValue為空白,則Kubernetes Label中包含LabelKey的容器都匹配。

  • 如果LabelValue不為空白,則Kubernetes Label中包含LabelKey=LabelValue的容器才匹配。

    LabelValue預設為字串匹配,即只有LabelValue和Kubernetes Label的值完全相同才會匹配。如果該值以^開頭並且以$結尾,則為正則匹配。例如設定LabelKeyapp,設定LabelValue^(test1|test2)$,表示匹配Kubernetes Label中包含app:test1、app:test2的容器。

多個白名單之間為或關係,即只要Kubernetes Label滿足任一白名單即可被匹配。

說明
  • 由於在Kubernetes管控類資源(例如Deployment)運行時更改Label,不會重啟具體的工作資源Pod,因此Pod無法感知此變更,可能導致匹配規則失效。設定K8s Label黑白名單時,請以Pod中的Kubernetes Label為準。關於Kubernetes Label的更多資訊,請參見Labels and Selectors

K8s Pod標籤黑名單

通過Kubernetes Label黑名單排除不採集的容器。如要設定Kubernetes Label黑名單,那麼LabelKey必填,LabelValue可選填。

  • 如果LabelValue為空白,則Kubernetes Label中包含LabelKey的容器都被排除。

  • 如果LabelValue不為空白,則Kubernetes Label中包含LabelKey=LabelValue的容器才會被排除。

    LabelValue預設為字串匹配,即只有LabelValue和Kubernetes Label的值完全相同才會匹配。如果該值以^開頭並且以$結尾,則為正則匹配。例如設定LabelKeyapp,設定LabelValue^(test1|test2)$,表示匹配Kubernetes Label中包含app:test1、app:test2的容器。

多個黑名單之間為或關係,即只要Kubernetes Label滿足任一黑名單對即可被排除。

說明
  • 由於在Kubernetes管控類資源(例如Deployment)運行時更改Label,不會重啟具體的工作資源Pod,因此Pod無法感知此變更,可能導致匹配規則失效。設定K8s Label黑白名單時,請以Pod中的Kubernetes Label為準。關於Kubernetes Label的更多資訊,請參見Labels and Selectors

日誌標籤富化

可將環境變數和Kubernetes Label添加到日誌,作為日誌標籤。

環境變數相關

設定環境變數擴充欄位後,Log Service將在日誌中新增環境變數相關欄位。例如設定環境變數名VERSION,設定tag名env_version,當容器中包含環境變數VERSION=v1.0.0時,會將該資訊添加到日誌中,即添加欄位__tag__:__env_version__: v1.0.0

Pod標籤相關

設定Kubernetes Pod擴充欄位後,Log Service將在日誌中新增Kubernetes Pod相關欄位。例如設定Pod標籤名app,設定tag名k8s_pod_app,當Kubernetes中包含Labelapp=serviceA時,會將該資訊添加到日誌中,即添加欄位__tag__:__k8s_pod_app__: serviceA

檔案編碼

選擇記錄檔的編碼格式。

首次採集大小

配置首次生效時,匹配檔案的起始採集位置距離檔案結尾的大小。首次採集大小設定值為1024 KB。

  • 首次採集時,如果檔案小於1024 KB,則從檔案內容起始位置開始採集。

  • 首次採集時,如果檔案大於1024 KB,則從距離檔案末尾1024 KB的位置開始採集。

可通過此處修改首次採集大小,取值範圍為0~10485760,單位為KB。

採集黑名單

開啟採集黑名單開關後,可進行黑名單配置,即可在採集時忽略指定的目錄或檔案。支援完整匹配和萬用字元匹配目錄和檔案名稱。其中,萬用字元只支援星號(*)和半形問號(?)。

重要
  • 如在配置檔案路徑時使用了萬用字元,但又需要過濾掉其中部分路徑,則需在採集黑名單中填寫對應的完整路徑來保證黑名單配置生效。

    例如配置檔案路徑/home/admin/app*/log/*.log,但要過濾/home/admin/app1*目錄下的所有子目錄,則需選擇目錄黑名單,配置目錄為/home/admin/app1*/**。如果配置為/home/admin/app1*,黑名單不會生效。

  • 匹配黑名單過程存在計算開銷,建議黑名單條目數控制在10條內。

  • 目錄路徑不能以正斜線(/)結尾,例如將設定路徑為/home/admin/dir1/,目錄黑名單不會生效。

支援按照檔案路徑黑名單、檔案黑名單、目錄黑名單設定,詳細說明如下:

檔案路徑黑名單

  • 選擇檔案路徑黑名單,配置路徑為/home/admin/private*.log,則表示在採集時忽略/home/admin/目錄下所有以private開頭,以.log結尾的檔案。

  • 選擇檔案路徑黑名單,配置路徑為/home/admin/private*/*_inner.log,則表示在採集時忽略/home/admin/目錄下以private開頭的目錄內,以_inner.log結尾的檔案。例如/home/admin/private/app_inner.log檔案被忽略,/home/admin/private/app.log檔案被採集。

檔案黑名單

選擇檔案黑名單,設定檔名為app_inner.log,則表示採集時忽略所有名為app_inner.log的檔案。

目錄黑名單

  • 選擇目錄黑名單,配置目錄為/home/admin/dir1,則表示在採集時忽略/home/admin/dir1目錄下的所有檔案。

  • 選擇目錄黑名單,配置目錄為/home/admin/dir*,則表示在採集時忽略/home/admin/目錄下所有以dir開頭的子目錄下的檔案。

  • 選擇目錄黑名單,配置目錄為/home/admin/*/dir,則表示在採集時忽略/home/admin/目錄下二級目錄名為dir的子目錄下的所有檔案。例如/home/admin/a/dir目錄下的檔案被忽略,/home/admin/a/b/dir目錄下的檔案被採集。

允許檔案多次採集

預設情況下,一個記錄檔只能匹配一個Logtail配置。如果檔案中的日誌需要被採集多份,需要開啟允許檔案多次採集開關。

進階參數

其它可選的與檔案輸入外掛程式相關的進階功能參數,請參見建立Logtail流水線配置

處理配置參數介紹

配置項

說明

日誌範例

待採集日誌的範例,請務必使用實際情境的日誌。日誌範例可協助配置Tlog相關參數,降低配置難度。支援添加多條範例,總長度不超過1500個字元。

[2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
    at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
    at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
    at TestPrintStackTrace.main(TestPrintStackTrace.java:16)

多行模式

  • 多行日誌的類型:多行日誌是指每條日誌分布在連續的多行中,需要從日誌內容中區分出每一條日誌。

    • 自訂:通過行首Regex區分每一條日誌。

    • 多行JSON:每個JSON對象被展開為多行,例如:

      {
        "name": "John Doe",
        "age": 30,
        "address": {
          "city": "New York",
          "country": "USA"
        }
      }
  • 切分失敗處理方式:

    Exception in thread "main" java.lang.NullPointerException
        at com.example.MyClass.methodA(MyClass.java:12)
        at com.example.MyClass.methodB(MyClass.java:34)
        at com.example.MyClass.main(MyClass.java:½0)

    對於以上日誌內容,如果Log Service切分失敗:

    • 丟棄:直接丟棄這段日誌。

    • 保留單行:將每行日誌文本單獨保留為一條日誌,保留為一共四條日誌。

處理模式

處理外掛程式組合,包括原生外掛程式拓展外掛程式。有關處理外掛程式的更多資訊,請參見原生與拓展處理外掛程式使用說明

重要

處理外掛程式的使用限制,請以控制台頁面的提示為準。

  • 2.0版本的Logtail:

    • 原生處理外掛程式可任意組合。

    • 原生處理外掛程式和擴充處理外掛程式可同時使用,但擴充處理外掛程式只能出現在所有的原生處理外掛程式之後。

  • 低於2.0版本的Logtail:

    • 不支援同時添加原生外掛程式和擴充外掛程式。

    • 原生外掛程式僅可用於採集文本日誌。使用原生外掛程式時,須符合如下要求:

      • 第一個處理外掛程式必須為正則解析外掛程式、分隔字元模式解析外掛程式、JSON解析外掛程式、Nginx模式解析外掛程式、Apache模式解析外掛程式或IIS模式解析外掛程式。

      • 從第二個處理外掛程式到最後一個處理外掛程式,最多包括1個時間解析處理外掛程式,1個過濾處理外掛程式和多個脫敏處理外掛程式。

    • 對於解析失敗時保留原始欄位解析成功時保留原始欄位參數,只有以下組合有效,其餘組合無效。

      • 只上傳解析成功的日誌:

        image

      • 解析成功時上傳解析後的日誌,解析失敗時上傳原始日誌:

        image

      • 解析成功時不僅上傳解析後的日誌,並且追加原始日誌欄位,解析失敗時上傳原始日誌。

        例如,原始日誌"content": "{"request_method":"GET", "request_time":"200"}"解析成功,追加原始欄位是在解析後日誌的基礎上再增加一個欄位,欄位名為重新命名的原始欄位(如果不填則預設為原始欄位名),欄位值為原始日誌{"request_method":"GET", "request_time":"200"}

        image

地區

  1. 登入Log Service控制台,在Project列表中,單擊目標Project。

  2. 單擊Project名稱右側的image進入專案概覽頁面。

  3. 在基礎資訊中可查看當前Project的地區名稱,地區名稱對應RegionID請參考下表。

    地區代表雲端服務資源的物理資料中心所在的地理位置RegionID 是雲端服務地區的唯一識別碼。

    地區名稱

    RegionID

    華北1(青島)

    cn-qingdao

    華北2(北京)

    cn-beijing

    華北3(張家口)

    cn-zhangjiakou

    華北5(呼和浩特)

    cn-huhehaote

    華北6(烏蘭察布)

    cn-wulanchabu

    華東1(杭州)

    cn-hangzhou

    華東2(上海)

    cn-shanghai

    華東5(南京-本地地區-關停中)

    cn-nanjing

    華東6(福州-本地地區-關停中)

    cn-fuzhou

    華南1(深圳)

    cn-shenzhen

    華南2(河源)

    cn-heyuan

    華南3(廣州)

    cn-guangzhou

    菲律賓(馬尼拉)

    ap-southeast-6

    韓國(首爾)

    ap-northeast-2

    馬來西亞(吉隆坡)

    ap-southeast-3

    日本(東京)

    ap-northeast-1

    泰國(曼穀)

    ap-southeast-7

    西南1(成都)

    cn-chengdu

    新加坡

    ap-southeast-1

    印尼(雅加達)

    ap-southeast-5

    中國香港

    cn-hongkong

    德國(法蘭克福)

    eu-central-1

    美國(維吉尼亞)

    us-east-1

    美國(矽谷)

    us-west-1

    英國(倫敦)

    eu-west-1

    阿聯酋(杜拜)

    me-east-1

    沙特(利雅得)

    me-central-1

網路傳輸類型

網路類型

對應網域名稱類型

描述

適用情境

阿里雲內網

私網網域名稱

阿里雲內網為千兆共用網路,日誌資料通過阿里雲內網傳輸比公網傳輸更快速、穩定,內網包括VPC和傳統網路。

ECS執行個體和Log ServiceProject屬於同一地區或伺服器通過Express Connect串連Virtual Private Cloud的情況。

說明

推薦在ECS所在地區建立Log ServiceProject,通過阿里雲內網採集ECS中日誌,不消耗公網頻寬。

公網

公網網域名稱

使用公網傳輸日誌資料,不僅會受到網路頻寬的限制,還可能會因網路抖動、延遲、丟包等影響資料擷取的速度和穩定性。

以下兩種情況,可以選擇公網傳輸資料。

  • ECS執行個體和Log ServiceProject屬於不同地區。

  • 伺服器為其他雲廠商伺服器或自建IDC。

傳輸加速

傳輸加速網域名稱

利用阿里雲CDN邊緣節點進行日誌採集加速,相對公網採集在網路延遲、穩定性上具有很大優勢,但流量需額外計費。 

如果商務服務器、Log ServiceProject分別屬於國內地區和國外地區,使用公網傳輸資料可能會出現網路延遲高、傳輸不穩定等問題,您可以選擇傳輸加速傳輸資料。更多資訊,請參見傳輸加速