全部產品
Search
文件中心

Container Compute Service:通過Pod環境變數配置應用日誌採集

更新時間:Jun 03, 2026

Container Compute Service (ACS)整合了阿里雲Log ServiceSLS。可在建立ACS叢集時啟用Log Service,快速採集叢集內的容器日誌,包括容器的標準輸出以及容器內的文字檔。本文介紹如何在ACS叢集中通過Pod環境變數採集應用日誌。

步驟一:啟用Log Service組件

可在建立ACS叢集時勾選使用Log Service來自動啟用Log Service組件。若建立時未勾選,也可通過以下步驟為已有叢集啟用Log Service組件。

  1. 登入容器計算服務控制台,在左側導覽列選擇叢集列表

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

  3. 日誌與監控地區找到alibaba-log-controller。單擊安裝,並在安裝組件對話方塊中單擊確認

重要

如已安裝的alibaba-log-controller組件為舊版本,可以對組件進行升級。升級組件後,叢集會重設組件參數。如已自訂alibaba-log-controller的配置和環境變數,參數將被覆蓋,請重新設定。

步驟二:建立應用時配置Log Service

可在建立應用的同時配置Log Service,從而採集容器日誌。目前支援通過控制台和YAML檔案兩種方式進行配置。

通過控制台嚮導建立應用並配置Log Service

  1. 登入容器計算服務控制台,在左側導覽列選擇叢集列表

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

  3. 無狀態頁面上方的命名空間下拉框中設定命名空間,然後單擊頁面右上方的使用鏡像建立

    說明

    此處是以無狀態應用為例,對於其他類型的工作負載(例如:有狀態)配置方式相同。

  4. 應用基本資料頁簽,設定應用程式名稱副本數量類型,單擊下一步,進入容器配置頁面。

    說明

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

  5. 日志配置地區,配置日誌相關資訊。

    1. 設定採集配置

      單擊+表徵圖建立新的採集配置,每個採集配置由日誌庫容器內日誌路徑(可設定為stdout)兩項構成。

      • 日誌庫:配置Logstore名稱,用於指定所採集日誌儲存於該Logstore。如果該Logstore不存在,ACS將會自動在叢集關聯的Log ServiceProject下建立相應的Logstore。

        說明

        新建立的Logstore中的日誌預設儲存時間為180天。

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

        說明

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

        每一項採集配置都會被自動建立為對應Logstore的一個採集配置,預設採用極簡模式(按行)進行採集。

        配置樣本:日誌庫名稱設為access,對應容器內日誌路徑為/usr/local/tomcat/logs/catalina.*.log;日誌庫名稱設為catalina,對應路徑為stdout。注意:請確保叢集已部署日誌外掛程式。

    2. 設定自訂Tag

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

      Tag名稱 中輸入 release,在 Tag值 中輸入 1.0.0

  6. 當完成所有配置後,可單擊右上方的下一步進入後續流程。

    後續操作,可參見建立無狀態工作負載Deployment

通過YAML檔案建立

  1. 登入容器計算服務控制台,在左側導覽列選擇叢集列表

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

  3. 無狀態頁面上方的命名空間下拉框中設定命名空間,然後單擊頁面右上方的使用YAML建立資源

    說明

    此處是以無狀態應用為例,對於其他類型的工作負載(例如:有狀態)配置方式相同。

  4. 配置YAML檔案。

    YAML檔案的文法同Kubernetes文法,但是為了給容器指定採集配置,需要使用env來為容器增加採集配置自訂Tag。以下是一個簡單的Pod樣本:

    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'
        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
        command: ["sh", "-c"]
        args: ["echo 'Starting my demo app'; sleep 3600"]

    根據需求按照以下順序進行配置。

    說明

    如有更多的日誌採集需求,請參見步驟三:日誌採集的進階參數設定

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

      • 建立採集配置的規則如下:

        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'
            env:
            - name: aliyun_logs_log-stdout
              value: stdout
            - name: aliyun_logs_log-varlog
              value: /var/log/*.log    
            command: ["sh", "-c"]
            args: ["echo 'Starting my demo app'; sleep 3600"]                    

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

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

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

      • 建立自訂Tag的規則如下:

        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'
            env:
            - name: aliyun_logs_mytag1_tags
              value: tag1=v1           
            command: ["sh", "-c"]
            args: ["echo 'Starting my demo app'; sleep 3600"]            

        配置Tag後,當採集到該容器的日誌時,會自動附加對應的欄位到Log Service。其中mytag1任意不包含'_'的名稱

    2. 如採集配置中指定了非stdout的採集路徑,需要在此部分建立相應的volumeMounts

      樣本中採集配置添加了對/var/log/*.log的採集,因此相應地添加了/var/log的volumeMounts

  5. 當YAML編寫完成後,單擊建立,即可將相應的配置交由ACS叢集執行。

步驟三:日誌採集的進階參數設定

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

環境變數名

說明

樣本

注意事項

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控制台。

  • {key}表示Log Service組件採集配置的名稱,需保持在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需與Log Service組件工作所在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

可選。值為應用的機器組。當不存在該環境變數時與安裝Log Service組件的預設機器組一致。關於該參數的詳細使用方法,請參見下文的特殊情境二:將不同應用資料擷取到不同的Project

- 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 

不涉及。

  • 特殊情境一:將多個應用資料擷取到同一Logstore

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

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

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-demo-1
    spec:
      containers:
      - name: my-demo-app
        image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
        env:    # 配置環境變數
        - name: aliyun_logs_app1-stdout
          value: stdout
        - name: aliyun_logs_app1-stdout_logstore
          value: stdout-logstore
        command: ["sh", "-c"]
        args: ["echo 'Starting my demo app'; sleep 3600"]

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-demo-2
    spec:
      containers:
      - name: my-demo-app
        image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
        env:	# 配置環境變數
        - name: aliyun_logs_app2-stdout
          value: stdout
        - name: aliyun_logs_app2-stdout_logstore
          value: stdout-logstore
        command: ["sh", "-c"]
        args: ["echo 'Starting my demo app'; sleep 3600"]
  • 特殊情境二:將不同應用資料擷取到不同的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設定的環境變數為:

      apiVersion: v1
      kind: Pod
      metadata:
        name: my-demo-1
      spec:
        containers:
        - name: my-demo-app
          image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
          env:	# 配置環境變數
          - 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
          command: ["sh", "-c"]
          args: ["echo 'Starting my demo app'; sleep 3600"]

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

      apiVersion: v1
      kind: Pod
      metadata:
        name: my-demo-2
      spec:
        containers:
        - name: my-demo-app
          image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
          env:	# 應用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
          command: ["sh", "-c"]
          args: ["echo 'Starting my demo app'; sleep 3600"]

步驟四:通過Log Service控制台查看日誌

本例中查看通過控制台嚮導建立的應用日誌。完成配置後,應用日誌已被採集並儲存到Log Service中,可在Log Service控制台查看容器日誌。

  1. 登入Log Service控制台

  2. Project列表地區選取項目ACS叢集對應的Project(預設為k8s-log-{ACS叢集ID}),進入日誌庫列表頁簽。

  3. 在列表中找到相應的Logstore(採集配置中指定),將滑鼠懸浮在相應的Logstore名稱的右側,單擊button表徵圖,並單擊查詢剖析

    本例中,在日誌查詢頁面,可以查看應用的標準輸出日誌和容器內文本日誌,且自訂tag附加到日誌欄位中。

更多資訊