阿里雲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。
使用鏡像建立
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在無狀態頁面上方的命名空間下拉式清單中選擇目標命名空間,然後在頁面上方單擊使用鏡像建立。
在應用基本資料頁簽,設定應用程式名稱、副本數量和類型,然後單擊下一步。
在容器配置頁簽的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都是一個索引值對,會拼接到所採集到的日誌中,您可以使用它來為容器的日誌資料進行標記,例如版本號碼。
配置完成後,在頁面右側單擊下一步,後續操作,請參見建立無狀態工作負載Deployment。
使用YAML建立
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在無狀態頁面上方的命名空間下拉式清單中選擇目標命名空間,然後在頁面上方單擊使用YAML建立資源。
在建立頁面,選擇樣本模板,並使用YAML配置相應的模板,然後單擊建立。
YAML模板的文法同Kubernetes文法。但為了給容器指定採集配置,需要使用
env來為容器增加採集配置和自訂Tag,並根據採集配置,建立對應的volumeMounts和volumes。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樣本中增加以下配置樣本:
說明若您有更多的日誌採集需求,請參見步驟二:配置環境變數的進階參數。
通過環境變數建立採集配置和自訂Tag,所有與配置相關的環境變數都採用
aliyun_logs_作為首碼。建立採集配置的規則:
- name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log樣本中建立了兩個採集配置,格式為
aliyun_logs_{key},對應的{key}分別為log-stdout和log-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中。
建立自訂Tag規則:
- name: aliyun_logs_mytag1_tags value: tag1=v1配置Tag後,當採集到該容器的日誌時,會自動附加對應的欄位到Log Service。其中
mytag1只能包含小寫字母、數字和短劃線(-)的名稱。
如果您的採集配置中指定了非
stdout的採集路徑,需要在此部分建立相應的volumeMounts。樣本中採集配置添加了對/var/log/*.log的採集,因此相應地添加了/var/log的volumeMounts。
步驟二:配置環境變數的進階參數
通過容器環境變數配置採集支援多種配置參數。可根據實際需求設定進階參數,以滿足日誌採集的特殊需求。
通過容器環境變數配置採集日誌的方式不適用於邊緣情境。
欄位 | 說明 | 樣本 | 注意事項 |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | 可選。值為{tag-key}={tag-value}類型,用於對日誌進行標識。 | | 不涉及。 |
aliyun_logs_{key}_project | 可選。值為指定的Log ServiceProject。當不存在該環境變數時,為安裝時所選的Project。 | | Project需與Logtail工作所在的Region一致。 |
aliyun_logs_{key}_logstore | 可選。值為指定的Log ServiceLogstore。當不存在該環境變數時,Logstore和{key}一致。 | | 不涉及。 |
aliyun_logs_{key}_shard | 可選。值為建立Logstore時的shard數,取值範圍為[1 , 10]。當不存在該環境變數時,值為2。 說明 若logstore已經存在,則該參數不生效。 | | 不涉及。 |
aliyun_logs_{key}_ttl | 可選。值為指定的日誌儲存時間,取值範圍為[1 , 3650]。
說明 若Logstore已經存在,則該參數不生效。 | | 不涉及。 |
aliyun_logs_{key}_machinegroup | 可選。值為應用的機器組。當不存在該環境變數時與安裝Logtail的預設機器組一致。關於該參數的詳細使用方法,請參見下文的採集ACK叢集容器日誌。 | | 不涉及。 |
aliyun_logs_{key}_logstoremode | 可選。值為指定的Log ServiceLogstore的類型,不指定該參數的話,預設值為standard,取值: 說明 若Logstore已經存在,則該參數不生效。
|
| 該參數需要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中,需要進行以下操作:
在每個Project中建立一個機器組,選擇自訂標識,標識名為
k8s-group-{cluster-id},其中{cluster-id}為叢集ID,機器組名稱可以自訂配置。在每個應用的環境變數中配置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
步驟三:查看日誌
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在日誌中心頁面,單擊應用日誌頁簽,按需選擇日誌庫,查看應用程式容器的相關日誌。