阿里云日志服務SLS(Log Service)是針對日志數據的一站式服務,讓您無需開發(fā)就能快捷完成日志數據采集、消費、投遞以及查詢分析等功能。ACK Serverless集群提供了日志服務托管功能。您可以在ACK Serverless集群中使用SLS環(huán)境變量,將業(yè)務容器的標準輸出和日志文件收集到SLS。
前提條件
已創(chuàng)建ACK Serverless集群,且集群已啟用日志服務組件alibaba-log-controller。
新建集群:在創(chuàng)建集群的組件配置頁面,選中使用日志服務,安裝日志插件。具體操作,請參見創(chuàng)建ACK Serverless集群。
已有集群:在集群管理頁左側導航欄中,選擇運維管理>組件管理,并在日志與監(jiān)控區(qū)域找到alibaba-log-controller,并按照頁面指引安裝組件。
步驟一:創(chuàng)建應用并配置日志服務
您可以在創(chuàng)建應用的同時配置日志服務,從而對容器的日志進行采集。您可以通過鏡像和YAML模板兩種方式創(chuàng)建應用。阿里云日志服務SLS的詳細信息,請參見什么是日志服務。
使用鏡像創(chuàng)建
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在無狀態(tài)頁面上方的命名空間下拉列表中選擇目標命名空間,然后在頁面右上角單擊使用鏡像創(chuàng)建。
在應用基本信息頁簽,設置應用名稱、副本數量和類型,然后單擊下一步。
在容器配置頁簽的日志服務區(qū)域,進行相關配置。
說明本文僅介紹日志服務相關的配置,其他的應用配置,請參見創(chuàng)建無狀態(tài)工作負載Deployment。
配置示例如下:
配置項
說明
采集配置
單擊采集配置,配置日志庫和容器內日志路徑。
日志庫:配置Logstore名稱,名稱中只能包含小寫字母、數字和短劃線(-)。
您可以使用它來指定所采集日志存儲于該Logstore,如果該Logstore不存在的話,ACK Serverless會自動為您在集群關聯(lián)的日志服務Project下創(chuàng)建相應的Logstore。
容器內日志路徑:指定希望采集的日志所在的路徑,例如使用/usr/local/tomcat/logs/catalina.*.log來采集Tomcat的文本日志。
說明如果指定為stdout,表示采集容器的標準輸出和標準錯誤輸出。
每一項采集配置都會被自動創(chuàng)建為對應Logstore的一個采集配置,默認采用極簡模式(按行)進行采集,如果您需要更豐富的采集方式,可以登錄日志服務控制臺,進入相應的Project(默認是k8s-log前綴)和Logstore對配置進行修改。
自定義Tag
單擊自定義Tag,配置Tag名稱和Tag值。
每一個自定義Tag都是一個鍵值對,會拼接到所采集到的日志中,您可以使用它來為容器的日志數據進行標記,例如版本號。
配置完成后,在頁面右側單擊下一步,后續(xù)操作,請參見創(chuàng)建無狀態(tài)工作負載Deployment。
使用YAML創(chuàng)建
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在無狀態(tài)頁面上方的命名空間下拉列表中選擇目標命名空間,然后在頁面右上角單擊使用YAML創(chuàng)建資源。
在創(chuàng)建頁面,選擇示例模板,并使用YAML配置相應的模板,然后單擊創(chuàng)建。
YAML模板的語法同Kubernetes語法。但為了給容器指定采集配置,需要使用
env
來為容器增加采集配置和自定義Tag,并根據采集配置,創(chuàng)建對應的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' env: ######### 配置環(huán)境變量 ########### - 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示例中增加以下配置示例:
說明若您有更多的日志采集需求,請參見步驟二:配置環(huán)境變量的高級參數。
通過環(huán)境變量創(chuàng)建采集配置和自定義Tag,所有與配置相關的環(huán)境變量都采用
aliyun_logs_
作為前綴。創(chuàng)建采集配置的規(guī)則:
- name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log
示例中創(chuàng)建了兩個采集配置,格式為
aliyun_logs_{key}
,對應的{key}
分別為log-stdout
和log-varlog
。aliyun_logs_log-stdout
:該env
表示創(chuàng)建一個名稱為log-stdout
的Logstore,日志采集路徑為stdout
的配置,對應的日志服務采集配置名稱也是log-stdout
,目的是將容器的標準輸出采集到log-stdout
Logstore中。aliyun_logs_log-varlog
:該env
表示創(chuàng)建一個名稱為log-varlog
的Logstore,日志采集路徑為/var/log/*.log
的配置,對應的日志服務采集配置名稱也是log-varlog
,目的是將容器的/var/log/*.log
文件內容采集到log-varlog
Logstore中。
創(chuàng)建自定義Tag規(guī)則:
- name: aliyun_logs_mytag1_tags value: tag1=v1
配置Tag后,當采集到該容器的日志時,會自動附加對應的字段到日志服務。其中
mytag1
為只能包含小寫字母、數字和短劃線(-)的名稱。
如果您的采集配置中指定了非
stdout
的采集路徑,需要在此部分創(chuàng)建相應的volumeMounts
。示例中采集配置添加了對/var/log/*.log
的采集,因此相應地添加了/var/log的volumeMounts
。
步驟二:配置環(huán)境變量的高級參數
通過容器環(huán)境變量配置采集支持多種配置參數,您可以根據實際需求設置高級參數來實現日志采集的特殊需求。
通過容器環(huán)境變量配置采集日志的方式不適用于邊緣場景。
字段 | 說明 | 示例 | 注意事項 |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | 可選。值為{tag-key}={tag-value}類型,用于對日志進行標識。 |
| - |
aliyun_logs_{key}_project | 可選。值為指定的日志服務Project。當不存在該環(huán)境變量時為您安裝時所選的Project。 |
| Project需與您的Logtail工作所在Region一致。 |
aliyun_logs_{key}_logstore | 可選。值為指定的日志服務Logstore。當不存在該環(huán)境變量時Logstore和{key}一致。 |
| - |
aliyun_logs_{key}_shard | 可選。值為創(chuàng)建Logstore時的shard數,有效值為1~10。當不存在該環(huán)境變量時值為2。 |
| - |
aliyun_logs_{key}_ttl | 可選。值為指定的日志保存時間,有效值為1~3650。
|
| - |
aliyun_logs_{key}_machinegroup | 可選。值為應用的機器組。當不存在該環(huán)境變量時與安裝Logtail的默認機器組一致。 |
| - |
定制需求1:將多個應用數據采集到同一Logstore
如果您需要將多個應用數據采集到同一Logstore,可以設置 aliyun_logs_{key}_logstore參數,例如以下配置將2個應用的stdout采集到stdout-logstore中。
示例中應用1的
{key}
為app1-stdout
,應用2的{key}
為app2-stdout
。應用1設置的環(huán)境變量為:
# 配置環(huán)境變量 - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore
應用2設置的環(huán)境變量為:
# 配置環(huán)境變量 - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore
定制需求2:將不同應用數據采集到不同的Project
如果您需要將不同應用的數據采集到多個Project中,您需要進行以下操作:
在每個Project中創(chuàng)建一個機器組,選擇自定義標識,標識名為
k8s-group-{cluster-id}
,其中{cluster-id}
為您的集群ID,機器組名稱可以自定義配置。在每個應用的環(huán)境變量中配置project、logstore、machinegroup信息,其中機器組名稱為您在上一步創(chuàng)建的機器組名。
如下示例中應用1的
{key}
為app1-stdout
,應用2的{key}
為app2-stdout
。其中如果兩個應用在同一個K8s集群中,對應的machinegroup可以使用同一個machinegroup。應用1設置的環(huán)境變量為:
# 配置環(huán)境變量 - 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設置的環(huán)境變量為:
# 應用2 配置環(huán)境變量 - 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
步驟三:查看日志
在容器服務控制臺查看應用容器的日志的具體步驟如下。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在日志中心頁面,單擊應用日志頁簽,按需選擇日志庫,查看應用容器的相關日志。