當您使用Logtail採集容器(標準容器、Kubernetes)日誌時,如果採集狀態異常,可以根據本文進行問題排查、運行狀態檢查等營運操作。
排查機器組心跳是否異常
您可以通過檢查機器組心跳的狀態來判斷容器中的Logtail是否已正確安裝。
查看機器組心跳狀態。
在Project列表地區,單擊目標Project。
在左側導覽列中,選擇 。
在機器組列表中,單擊目標機器組。
在機器組配置頁面,查看機器組狀態並記錄心跳狀態為OK的節點數。
檢查容器叢集中Worker節點數。
串連叢集。
執行如下命令,查看叢集中Worker節點數。
kubectl get node | grep -v master
系統會返回如下類似結果。
NAME STATUS ROLES AGE VERSION cn-hangzhou.i-bp17enxc2us3624wexh2 Ready <none> 238d v1.10.4 cn-hangzhou.i-bp1ad2b02jtqd1shi2ut Ready <none> 220d v1.10.4
對比心跳狀態為OK的節點數是否和容器叢集中Worker節點數一致。根據對比結果選擇排查方式。
機器組中所有節點的心跳狀態均為Failed。
如果您要採集標準Docker容器日誌,請參見採集標準Docker容器日誌,檢查
${your_region_name}
、${your_aliyun_user_id}
、${your_machine_group_user_defined_id}
是否填寫正確。如果您使用的是阿里雲Kubernetes叢集,請提交工單。
如果您使用的是自建Kubernetes叢集,請參見通過Sidecar方式採集Kubernetes容器文本日誌,檢查
{your-project-suffix}
、{regionId}
、{aliuid}
、{access-key-id}
和{access-key-secret}
是否已正確填寫。如果填寫錯誤,請執行
helm del --purge alibaba-log-controller
命令,刪除安裝包,然後重新安裝。
機器組心跳狀態為OK的節點數量少於叢集中的Worker節點數量。
判斷是否已使用YAML檔案手動部署DaemonSet。
執行如下命令。如果存在返回結果,則表示您之前已使用YAML檔案手動部署DaemonSet。
kubectl get po -n kube-system -l k8s-app=logtail
根據實際值,配置${your_region_name}、${your_aliyun_user_id}、${your_machine_group_name}等參數。
執行如下命令,更新檔案。
kubectl apply -f ./logtail-daemonset.yaml
其他情況,請提交工單。
排查容器日誌採集是否異常
如果您在Log Service控制台的預覽或Logstore查詢頁面未查到日誌,則說明Log Service未採集到您的容器日誌。請確認容器狀態,然後執行如下檢查。
查看機器組心跳是否存在異常。具體操作,請參見排查機器組心跳是否異常。
檢查Logtail配置是否正確。
檢查Logtail配置中的IncludeLabel、ExcludeLabel、IncludeEnv、ExcludeEnv等配置是否符合您的採集需求。
說明其中此處的Label為容器Label,即Docker inspect中的Label,不是Kubernetes中的Label。
您可以將IncludeLabel、ExcludeLabel、IncludeEnv和ExcludeEnv配置臨時去除,查看是否可以正常採集到日誌。如果可以,則說明是上述參數的配置存在問題。
其他營運操作
登入Logtail容器
普通Docker
在宿主機上執行如下命令,查詢Logtail容器。
docker ps | grep logtail
系統將返回如下類似結果。
223****6e registry.cn-hangzhou.aliyuncs.com/log-service/logtail "/usr/local/ilogta..." 8 days ago Up 8 days logtail-iba
執行如下命令,在Logtail容器內啟動bash shell。
docker exec -it 223****6e bash
其中,
223****6e
為容器ID,請根據實際值替換。
Kubernetes
執行如下命令,查詢Logtail的Pod。
kubectl get po -n kube-system | grep logtail
系統將返回如下類似結果。
logtail-ds-****d 1/1 Running 0 8d logtail-ds-****8 1/1 Running 0 8d
執行如下命令,登入Pod。
kubectl exec -it -n kube-system logtail-ds-****d -- bash
其中,
logtail-ds-****d
為Pod ID,請根據實際值替換。
查看Logtail的作業記錄
Logtail日誌儲存在Logtail容器中的/usr/local/ilogtail/
目錄中,檔案名稱為ilogtail.LOG
和logtail_plugin.LOG
。
登入Logtail容器。具體操作,登入Logtail容器。
開啟/usr/local/ilogtail/目錄。
cd /usr/local/ilogtail
查看ilogtail.LOG和logtail_plugin.LOG檔案。
cat ilogtail.LOG cat logtail_plugin.LOG
Logtail容器的標準輸出(stdout)說明
Logtail容器中的標準輸出並不具備參考意義,請忽略以下標準輸出內容。
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running
查看Kubernetes叢集中Log Service相關組件的狀態
執行如下命令,查看名稱為alibaba-log-controller
的Deployment的狀態和資訊。
kubectl get deploy alibaba-log-controller -n kube-system
返回結果:
NAME READY UP-TO-DATE AVAILABLE AGE
alibaba-log-controller 1/1 1 1 11d
執行以下命令,查看關於DaemonSet資源的狀態資訊。
kubectl get ds logtail-ds -n kube-system
返回結果:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
logtail-ds 2 2 2 2 2 **ux 11d
查看Logtail的版本號碼、IP地址、啟動時間
在宿主機執行如下命令,查看Logtail的版本號碼、IP地址、啟動時間。
相關資訊儲存在Logtail容器的
/usr/local/ilogtail/app_info.json
檔案中。kubectl exec logtail-ds-****k -n kube-system cat /usr/local/ilogtail/app_info.json
系統將返回如下類似結果。
{ "UUID" : "", "hostname" : "logtail-****k", "instance_id" : "0EB****_172.20.4.2_1517810940", "ip" : "172.20.4.2", "logtail_version" : "0.16.2", "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64", "update_time" : "2018-02-05 06:09:01" }
誤刪由CRD建立的Logstore後,如何處理
如果您刪除了由CRD自動建立出的Logstore,則已採集的資料無法恢複,並且針對此Logstore的CRD配置會失效,您可以選擇以下方案避免日誌採集異常。
在CRD配置中使用其他Logstore,避免使用手動誤刪的Logstore。
重啟alibaba-log-controller Pod。
您可通過如下命令尋找該Pod。
kubectl get po -n kube-system | grep alibaba-log-controller