阿里雲Log ServiceSLS支援通過Sidecar模式採集ECI日誌。本文介紹如何部署Sidecar容器,以及建立Logtail配置,實現容器日誌的採集。
前提條件
已建立ACK Serverless叢集。具體操作,請參見建立叢集。
已開通Log Service。
登入Log Service控制台時,如果沒有開通Log Service,將收到相關提示,可根據頁面提示開通。
背景資訊
阿里雲Log ServiceSLS支援在ECI中通過Sidecar模式採集日誌,即在每個ECI執行個體中,除業務容器外,運行一個Sidecar容器作為日誌Agent,用於採集業務容器產生的日誌。
Sidecar模式基於Logtail實現,Logtail必須和業務容器共用日誌目錄,業務容器將日誌寫入到共用目錄中,Logtail通過監控共用目錄中記錄檔的變化並採集日誌。
採集的日誌可以分為以下兩種:
標準輸出
採集標準輸出依賴於ECI的stdlog卷。建立Pod時可以將該卷掛載到Sidecar容器上,Sidecar可以直接以檔案的方式訪問ECI基礎組件收集的標準輸出日誌。
文字檔
採集文字檔可以通過Pod內共用的Volume實現。Pod內同一個Volume可以掛載到多個容器,Sidecar可以直接收集業務容器輸出到對應Volume內的文字檔。
步驟一:部署Sidecar容器
建立一個包含Sidecar容器的Deployment。
YAML內容樣本如下,請根據實際情況將佔位符變數替換為實際值。
apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx-log-sidecar-demo name: nginx-log-sidecar-demo spec: replicas: 2 selector: matchLabels: app: nginx-log-sidecar-demo template: metadata: labels: app: nginx-log-sidecar-demo spec: containers: - name: nginx-log-demo image: registry-vpc.${RegionId}.aliyuncs.com/log-service/docker-log-test:latest command: - /bin/mock_log args: - '--log-type=nginx' - '--stdout=false' - '--stderr=true' - '--path=/var/log/nginx/access.log' - '--total-count=100000000' - '--logs-per-sec=100' imagePullPolicy: Always volumeMounts: - mountPath: /var/log/nginx name: nginx-log - name: logtail image: registry-vpc.${RegionId}.aliyuncs.com/log-service/logtail:latest env: - name: ALIYUN_LOGTAIL_USER_ID value: "${Aliuid}" - name: ALIYUN_LOGTAIL_USER_DEFINED_ID value: nginx-log-sidecar - name: ALIYUN_LOGTAIL_CONFIG value: /etc/ilogtail/conf/${RegionId}/ilogtail_config.json - name: aliyun_logs_machinegroup value: k8s-group-app-alpine imagePullPolicy: Always volumeMounts: - mountPath: /var/log/nginx name: nginx-log - mountPath: /stdlog name: stdlog volumes: - emptyDir: {} #文字檔日誌儲存到emptyDir卷 name: nginx-log - name: stdlog #標準輸出日誌儲存到stdlog卷 flexVolume: driver: alicloud/pod-stdlog擷取Pod資訊。
kubectl get pods -l app=nginx-log-sidecar-demo預期返回結果如下:
NAME READY STATUS RESTARTS AGE nginx-log-sidecar-demo-84587d9796-krn5z 2/2 Running 0 32m nginx-log-sidecar-demo-84587d9796-vhnld 2/2 Running 0 32m查看日誌。
通過kubectl命令查看日誌

通過Elastic Container Instance控制台查看日誌

步驟二:配置Logtail採集日誌
部署Sidecar容器後,需要在Log Service控制台建立Logtail配置來採集日誌。
在控制台右側單擊快速接入資料卡片,然後在接入資料頁面,單擊正則 - 文本日誌 。
選擇日誌空間,然後單擊下一步。
請選擇Project和Logstore。如果沒有,也可直接單擊立即建立進行建立。
說明系統預設會為每個K8s叢集產生一個名為
k8s-log-{K8s叢集ID}的Project。完成機器組配置,然後單擊下一步。
使用情境:選擇K8s情境。
部署方式:選擇Sidecar。
選擇機器組:在源機器組地區選取項目目標機器組,將該機器組移動到應用機器組地區。如果沒有機器組,請單擊建立機器組。
完成Logtail配置,然後單擊下一步。
Logtail支援通過極簡單行、正則解析、分隔字元解析、JSON解析等模式採集文本日誌。更多資訊,請參見主機文本日誌採集。
以下為配置樣本:
標準輸出樣本
採集標準輸出時,日誌路徑為stdlog卷在容器的掛載路徑。樣本參數配置如下:
配置地區
參數
樣本
全域配置
配置名稱
stdout
輸入配置
Logtail部署模式
文本日誌採集
檔案路徑
/stdlog/**/*.log
處理配置
處理模式
無
說明如需添加處理外掛程式,請參見資料擷取時處理(處理外掛程式)。
文字檔樣本
採集文字檔時,日誌路徑為共用Volume在容器的掛載路徑。樣本參數配置如下:
配置地區
參數
樣本
全域配置
配置名稱
file
輸入配置
Logtail部署模式
文本日誌採集
檔案路徑
/var/log/nginx/**/*.log
處理配置
處理模式
無
說明如需添加處理外掛程式,請參見資料擷取時處理(處理外掛程式)。
查詢分析配置。
預設已設定索引,您也可以根據業務需求,重新設定索引。具體操作,請參見配置索引。
查看採集的ECI日誌。
完成上述配置後,Log ServiceSLS即可開始採集ECI日誌。下圖為標準輸出日誌採集到SLS日誌庫的效果樣本。
