集群kube-system命名空間下名為icagent的DaemonSet),ICAgent負責收集工作負載的日志并上報到AOM,您可以在CCE控制臺和AOM控制臺查看工作負載的日志。
約束與限制
ICAgent只采集*.log、 .trace和 .out類型的文本日志文件。
費用說明
AOM每月贈送每個賬號500M免費日志采集額度。
使用ICAgent采集日志
在工作負載中可以單獨配置日志采集策略,此策略需要使用ICAgent。
步驟 1 在CCE中創建工作負載時,在配置容器信息時可以設置容器日志。
步驟 2 單擊添加日志策略。
以nginx為例,不同工作負載根據實際情況配置。
圖 添加日志策略

步驟 2 存儲類型有“主機路徑”和“容器路徑”兩種類型可供選擇:
表 配置日志策略
參數 參數說明 存儲類型
主機路徑:HostPath模式,將主機路徑掛載到指定的容器路徑(掛載路徑)。用戶可以在節點的主機路徑中查看到容器輸出在掛載路徑中的日志信息。
容器路徑:EmptyDir模式,將節點的臨時路徑掛載到指定的路徑(掛載路徑)。臨時路徑中存在的但暫未被采集器上報到AOM的日志數據在Pod實例刪除后會消失。
主機路徑 請輸入主機的路徑,如:/var/paas/sys/log/nginx 掛載路徑 請輸入數據存儲要掛載到容器上的路徑,如:/tmp 說明
請不要掛載到系統目錄下,如“/”、“**/var/run”**等,否則會導致容器異常。建議掛載在空目錄下,若目錄不為空,請確保目錄下無影響容器啟動的文件,否則文件會被替換,導致容器啟動異常,工作負載創建失敗。
掛載高危目錄的情況下 ,建議使用低權限帳號啟動,否則可能會造成宿主機高危文件被破壞。
AOM只采集最近修改過的前20個日志文件,且默認采集兩級子目錄。
AOM只采集掛載路徑下的“.log”、“.trace”、“.out”文本日志文件。
容器中掛載點的權限設置方法,請參見為。
主機擴展路徑 僅“主機路徑”類型需要填寫
通過實例的ID或者容器的名稱擴展主機路徑,實現同一個主機路徑下區分來自不同容器的掛載。會在原先的“卷目錄/子目錄”中增加一個三級目錄。使用戶更方便獲取單個Pod輸出的文件。
?None:不配置拓展路徑。
PodUID:Pod的ID。
PodName:Pod的名稱。
PodUID/ContainerName:Pod的ID/容器名稱。
PodName/ContainerName:Pod名稱/容器名稱。
采集路徑 設置采集路徑可以更精確的指定采集內容,當前支持以下設置方式:
例子:?采集路徑為/tmp//test*.log表示采集/tmp目錄及其1-5層子目錄下的全部以test開頭的.log文件。
不設置則默認采集當前路徑下.log .trace .out文件
設置表示遞歸采集5層目錄下的.log .trace .out文件
設置*表示模糊匹配
注意使用采集路徑功能請確認您的采集器ICAgent版本為5.12.22或以上版本。日志轉儲 此處日志轉儲是指日志的本地繞接。
設置:AOM每分鐘掃描一次日志文件,當某個日志文件超過50MB時,會立即對其轉儲(轉儲時會在該日志文件所在的目錄下生成一個新的zip文件。對于一個日志文件,AOM只保留最近生成的20個zip文件,當zip文件超過20個時,時間較早的zip文件會被刪除),轉儲完成后AOM會將該日志文件清空。
不設置:若您在下拉列表框中選擇“不設置”,則AOM不會對日志文件進行轉儲。
說明
AOM的日志繞接能力是使用copytruncate方式實現的,如果選擇了設置,請務必保證您寫日志文件的方式是append(追加模式),否則可能出現文件空洞問題
當前主流的日志組件例如Log4j、Logback等均已經具備日志文件的繞接能力,如果您的日志文件已經實現了繞接能力,則無需設置。否則可能出現沖突
建議您的業務自己實現繞接,可以更靈活的控制繞接文件的大小和個數。
步驟 3 單擊“確定”,并完成創建工作負載。
YAML示例(ICAgent)
您可以通過在YAML定義的方式設置容器日志存儲路徑。
如下所示,使用EmptyDir掛載到容器的“/var/log/nginx”路徑下,這樣ICAgent就會采集容器“/var/log/nginx”路徑下的日志。其中policy字段是CCE自定義的字段,能夠讓ICAgent識別并采集日志。
apiVersion: apps/v1
kind: Deployment
metadata:
name: testlog
namespace: default
spec:
selector:
matchLabels:
app: testlog
template:
replicas: 1
metadata:
labels:
app: testlog
spec:
containers:
- image: 'nginx:alpine'
name: container-0
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 250m
memory: 512Mi
volumeMounts:
- name: vol-log
mountPath: /var/log/nginx
policy:
logs:
rotate: ''
volumes:
- emptyDir: {}
name: vol-log
imagePullSecrets:
- name: default-secret
使用HostPath方法如下所示,相比EmptyDir就是volume的類型變成hostPath,且需要配置hostPath在主機上的路徑。下面示例中將主機上“/tmp/log”掛載到容器的“/var/log/nginx”路徑下,這樣ICAgent就會采集容器“/var/log/nginx”路徑下的日志,且日志還會在主機的“/tmp/log”路徑下存儲。
piVersion: apps/v1
kind: Deployment
metadata:
name: testlog
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: testlog
template:
metadata:
labels:
app: testlog
spec:
containers:
- image: 'nginx:alpine'
name: container-0
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 250m
memory: 512Mi
volumeMounts:
- name: vol-log
mountPath: /var/log/nginx
readOnly: false
extendPathMode: PodUID
policy:
logs:
rotate: Hourly
annotations:
pathPattern: '**'
format: ''
volumes:
- hostPath:
path: /tmp/log
name: vol-log
imagePullSecrets:
- name: default-secret
表 關鍵參數解釋
參數 參數說明 存儲類型
主機路徑:HostPath模式,將主機路徑掛載到指定的容器路徑(掛載路徑)。用戶可以在節點的主機路徑中查看到容器輸出在掛載路徑中的日志信息。
容器路徑:EmptyDir模式,將節點的臨時路徑掛載到指定的路徑(掛載路徑)。臨時路徑中存在的但暫未被采集器上報到AOM的日志數據在Pod實例刪除后會消失。
主機路徑 請輸入主機的路徑,如:/var/paas/sys/log/nginx 掛載路徑 請輸入數據存儲要掛載到容器上的路徑,如:/tmp 說明
請不要掛載到系統目錄下,如“/”、“**/var/run”**等,否則會導致容器異常。建議掛載在空目錄下,若目錄不為空,請確保目錄下無影響容器啟動的文件,否則文件會被替換,導致容器啟動異常,工作負載創建失敗。
掛載高危目錄的情況下 ,建議使用低權限帳號啟動,否則可能會造成宿主機高危文件被破壞。
AOM只采集最近修改過的前20個日志文件,且默認采集兩級子目錄。
AOM只采集掛載路徑下的“.log”、“.trace”、“.out”文本日志文件。
容器中掛載點的權限設置方法,請參見為。
主機擴展路徑 僅“主機路徑”類型需要填寫
通過實例的ID或者容器的名稱擴展主機路徑,實現同一個主機路徑下區分來自不同容器的掛載。會在原先的“卷目錄/子目錄”中增加一個三級目錄。使用戶更方便獲取單個Pod輸出的文件。
None:不配置拓展路徑。
PodUID:Pod的ID。
PodName:Pod的名稱。
PodUID/ContainerName:Pod的ID/容器名稱。
PodName/ContainerName:Pod名稱/容器名稱。
采集路徑 設置采集路徑可以更精確的指定采集內容,當前支持以下設置方式:
不設置則默認采集當前路徑下.log .trace .out文件
設置表示遞歸采集5層目錄下的.log .trace .out文件
設置*表示模糊匹配
例子:?采集路徑為/tmp//test*.log表示采集/tmp目錄及其1-5層子目錄下的全部以test開頭的.log文件。說明使用采集路徑功能請確認您的采集器ICAgent版本為5.12.22或以上版本。日志轉儲 此處日志轉儲是指日志的本地繞接。
設置:AOM每分鐘掃描一次日志文件,當某個日志文件超過50MB時,會立即對其轉儲(轉儲時會在該日志文件所在的目錄下生成一個新的zip文件。對于一個日志文件,AOM只保留最近生成的20個zip文件,當zip文件超過20個時,時間較早的zip文件會被刪除),轉儲完成后AOM會將該日志文件清空。
不設置:若您在下拉列表框中選擇“不設置”,則AOM不會對日志文件進行轉儲。
說明
AOM的日志繞接能力是使用copytruncate方式實現的,如果選擇了設置,請務必保證您寫日志文件的方式是append(追加模式),否則可能出現文件空洞問題。
當前主流的日志組件例如Log4j、Logback等均已經具備日志文件的繞接能力,如果您的日志文件已經實現了繞接能力,則無需設置。否則可能出現沖突
建議您的業務自己實現繞接,可以更靈活的控制繞接文件的大小和個數。
日志采集路徑配置和工作負載創建完成后,若已配置的路徑下存在日志文件,則ICAgent會從已配置的路徑中采集日志文件,采集大概需要1分鐘,請您耐心等待。
待采集完成后,進入工作負載詳情頁,單擊右上角的“日志”按鈕查看日志詳情。
您還可以在AOM控制臺查看日志。
另外您還可以使用kubectl logs命令查看容器的標準輸出,具體如下所示。
# 查看指定pod的日志
kubectl logs <pod_name>
kubectl logs -f <pod_name> #類似tail -f的方式查看
# 查看指定pod中指定容器的日志
kubectl logs <pod_name> -c <container_name>
kubectl logs pod_name -c container_name -n namespace (一次性查看)
kubectl logs -f <pod_name> -n namespace (tail -f方式實時查看)