全部產品
Search
文件中心

Container Service for Kubernetes:通過Pod環境變數採集應用日誌

更新時間:Jan 07, 2026

阿里雲Log ServiceSLS(Log Service)是針對日誌資料的一站式服務,讓您無需開發就能快捷完成日誌資料擷取、消費、投遞以及查詢分析等功能。ACK Serverless叢集提供了Log Service託管功能。您可以在ACK Serverless叢集中使用SLS環境變數,將業務容器的標準輸出和記錄檔收集到SLS。

重要
  • 推薦您優先使用SLS CRD的方式採集日誌。具體操作,請參見通過CRD採集應用日誌

  • 請勿同時使用SLS CRD和環境變數方式,這可能會導致日誌採集失敗。

步驟一:建立應用並配置Log Service

您可以通過鏡像或YAML模板建立應用,並同時配置Log Service,以用來採集容器日誌。關於Log ServiceSLS詳細資料請參見什麼是Log Service

使用鏡像建立

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  3. 無狀態頁面上方的命名空間下拉式清單中選擇目標命名空間,然後在頁面上方單擊使用鏡像建立

    1. 應用基本資料頁簽,設定應用程式名稱副本數量類型,然後單擊下一步

    2. 容器配置頁簽的Log Service地區,進行相關配置。

      說明

      本文僅介紹Log Service相關的配置,其他的應用配置,請參見建立無狀態工作負載Deployment

      配置樣本如下:採集配置

      配置項

      說明

      採集配置

      採集配置發生變更時,需手動刪除歷史採集配置,防止重複採集。

      單擊採集配置,配置日誌庫容器內日誌路徑

      • 日誌庫:配置Logstore名稱,名稱中只能包含小寫字母、數字和短劃線(-)。

        您可以使用它來指定所採集日誌儲存於該Logstore,如果該Logstore不存在的話,ACK Serverless會自動為您在叢集關聯的Log ServiceProject下建立相應的Logstore。

      • 容器內日誌路徑:指定希望採集的日誌所在的路徑,例如使用/usr/local/tomcat/logs/catalina.*.log來採集Tomcat的文本日誌。

        說明

        如果指定為stdout,表示採集容器的標準輸出和標準錯誤輸出。

      每一項採集配置都會被自動建立為對應Logstore的一個採集配置,預設採用極簡模式(按行)進行採集,如果您需要更豐富的採集方式,可以登入Log Service控制台,進入相應的Project(預設是k8s-log首碼)和Logstore對配置進行修改。

      自訂Tag

      單擊自訂Tag,配置Tag名稱Tag值

      每一個自訂Tag都是一個索引值對,會拼接到所採集到的日誌中,您可以使用它來為容器的日誌資料進行標記,例如版本號碼。

    3. 配置完成後,在頁面右側單擊下一步,後續操作,請參見建立無狀態工作負載Deployment

使用YAML建立

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  3. 無狀態頁面上方的命名空間下拉式清單中選擇目標命名空間,然後在頁面上方單擊使用YAML建立資源

  4. 建立頁面,選擇樣本模板,並使用YAML配置相應的模板,然後單擊建立

    YAML模板的文法同Kubernetes文法。但為了給容器指定採集配置,需要使用env來為容器增加採集配置和自訂Tag,並根據採集配置,建立對應的volumeMountsvolumes。Pod YAML樣本如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-demo
    spec:
      containers:
      - name: my-demo-app
        image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
        args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /var/log/test.log; sleep 1;done
        command:
        - /bin/sh
        env:
        ######### 配置環境變數 ###########
        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log
        - name: aliyun_logs_mytag1_tags
          value: tag1=v1
        ######### 配置Volume Mount ###########
        volumeMounts:
        - name: volumn-sls-mydemo
          mountPath: /var/log
      volumes:
      - name: volumn-sls-mydemo
        emptyDir: {}

    按需在Pod YAML樣本中增加以下配置樣本:

    說明

    若您有更多的日誌採集需求,請參見步驟二:配置環境變數的進階參數

    1. 通過環境變數建立採集配置和自訂Tag,所有與配置相關的環境變數都採用aliyun_logs_作為首碼。

      1. 建立採集配置的規則:

        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log

        樣本中建立了兩個採集配置,格式為aliyun_logs_{key},對應的{key}分別為log-stdoutlog-varlog

        • aliyun_logs_log-stdout:該env表示建立一個名稱為log-stdout的Logstore,日誌採集路徑為stdout的配置,對應的Log Service採集配置名稱也是log-stdout,目的是將容器的標準輸出採集到log-stdoutLogstore中。

        • aliyun_logs_log-varlog:該env表示建立一個名稱為log-varlog的Logstore,日誌採集路徑為/var/log/*.log的配置,對應的Log Service採集配置名稱也是log-varlog,目的是將容器的/var/log/*.log檔案內容採集到log-varlogLogstore中。

      2. 建立自訂Tag規則:

        - name: aliyun_logs_mytag1_tags
          value: tag1=v1

        配置Tag後,當採集到該容器的日誌時,會自動附加對應的欄位到Log Service。其中mytag1只能包含小寫字母、數字和短劃線(-)的名稱。

    2. 如果您的採集配置中指定了非stdout的採集路徑,需要在此部分建立相應的volumeMounts。樣本中採集配置添加了對/var/log/*.log的採集,因此相應地添加了/var/log的volumeMounts

步驟二:配置環境變數的進階參數

通過容器環境變數配置採集支援多種配置參數。可根據實際需求設定進階參數,以滿足日誌採集的特殊需求。

重要

通過容器環境變數配置採集日誌的方式不適用於邊緣情境。

欄位

說明

樣本

注意事項

aliyun_logs_{key}

  • 必選項。{key}只能包含小寫字母、數字和-。

  • 若不存在aliyun_logs_{key}_logstore,則預設建立並採集到名為{key}的logstore。

  • 當值為stdout時表示採集容器的標準輸出;其他值為容器內的日誌路徑。

  • - name: aliyun_logs_catalina
    
      value: stdout
  • - name: aliyun_logs_access-log
    
      value: /var/log/nginx/access.log
  • 預設採集方式為極簡模式。如需解析日誌內容,建議使用Log Service控制台,或者CRD進行配置。

  • {key}表示Log Service中Logtail採集配置的名稱,需保持在K8s叢集內唯一。

aliyun_logs_{key}_tags

可選。值為{tag-key}={tag-value}類型,用於對日誌進行標識。

- name: aliyun_logs_catalina_tags

  value: app=catalina

不涉及。

aliyun_logs_{key}_project

可選。值為指定的Log ServiceProject。當不存在該環境變數時,為安裝時所選的Project。

- name: aliyun_logs_catalina_project

  value: my-k8s-project

Project需與Logtail工作所在的Region一致。

aliyun_logs_{key}_logstore

可選。值為指定的Log ServiceLogstore。當不存在該環境變數時,Logstore和{key}一致。

- name: aliyun_logs_catalina_logstore

  value: my-logstore

不涉及。

aliyun_logs_{key}_shard

可選。值為建立Logstore時的shard數,取值範圍為[1 , 10]。當不存在該環境變數時,值為2。

說明

若logstore已經存在,則該參數不生效。

- name: aliyun_logs_catalina_shard

  value: '4'

不涉及。

aliyun_logs_{key}_ttl

可選。值為指定的日誌儲存時間,取值範圍為[1 , 3650]。

  • 當取值為3650時,指定日誌的儲存時間為永久儲存。

  • 當不存在該環境變數時,預設指定日誌的儲存時間為90天。

說明

若Logstore已經存在,則該參數不生效。

- name: aliyun_logs_catalina_ttl

  value: '3650'

不涉及。

aliyun_logs_{key}_machinegroup

可選。值為應用的機器組。當不存在該環境變數時與安裝Logtail的預設機器組一致。關於該參數的詳細使用方法,請參見下文的採集ACK叢集容器日誌

- name: aliyun_logs_catalina_machinegroup

  value: my-machine-group

不涉及。

aliyun_logs_{key}_logstoremode

可選。值為指定的Log ServiceLogstore的類型,不指定該參數的話,預設值為standard,取值:

說明

若Logstore已經存在,則該參數不生效。

  • standard:支援Log Service一站式資料分析功能,適用於即時監控、互動式分析以及構建完整的可觀測性系統等情境。

  • query:支援高效能查詢,索引流量費用約為standard的一半,但不支援SQL分析,適用於資料量大、儲存周期長(周、月層級以上)、無日誌分析的情境。

  • - name: aliyun_logs_catalina_logstoremode
      value: standard 
  • - name: aliyun_logs_catalina_logstoremode
      value: query 

該參數需要logtail-ds鏡像版本>=1.3.1。

  • 定製需求1:將多個應用資料擷取到同一Logstore

    如果需要將多個應用資料擷取到同一Logstore,可以設定 aliyun_logs_{key}_logstore參數,例如以下配置將2個應用的stdout採集到stdout-logstore中。

    樣本中應用1的{key}app1-stdout,應用2的{key}app2-stdout

    應用1設定的環境變數為:

    # 配置環境變數
        - name: aliyun_logs_app1-stdout
          value: stdout
        - name: aliyun_logs_app1-stdout_logstore
          value: stdout-logstore

    應用2設定的環境變數為:

    # 配置環境變數
        - name: aliyun_logs_app2-stdout
          value: stdout
        - name: aliyun_logs_app2-stdout_logstore
          value: stdout-logstore
  • 定製需求2:將不同應用資料擷取到不同的Project

    如果需要將不同應用的資料擷取到多個Project中,需要進行以下操作:

    1. 在每個Project中建立一個機器組,選擇自訂標識,標識名為k8s-group-{cluster-id},其中{cluster-id}為叢集ID,機器組名稱可以自訂配置。

    2. 在每個應用的環境變數中配置project、logstore、machinegroup資訊,其中機器組名稱為上一步建立的機器組名稱。

      如下樣本中應用1的{key}app1-stdout,應用2的{key}app2-stdout。其中如果兩個應用在同一個K8s叢集中,對應的machinegroup可以使用同一個machinegroup。

      應用1設定的環境變數為:

      # 配置環境變數
          - name: aliyun_logs_app1-stdout
            value: stdout
          - name: aliyun_logs_app1-stdout_project
            value: app1-project
          - name: aliyun_logs_app1-stdout_logstore
            value: app1-logstore
          - name: aliyun_logs_app1-stdout_machinegroup
            value: app1-machine-group

      應用2設定的環境變數為:

      # 應用2 配置環境變數
          - name: aliyun_logs_app2-stdout
            value: stdout
          - name: aliyun_logs_app2-stdout_project
            value: app2-project
          - name: aliyun_logs_app2-stdout_logstore
            value: app2-logstore
          - name: aliyun_logs_app2-stdout_machinegroup
            value: app1-machine-group

步驟三:查看日誌

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 日誌中心

  3. 日誌中心頁面,單擊應用日誌頁簽,按需選擇日誌庫,查看應用程式容器的相關日誌。