使用Logtail采集Docker、自建Kubernetes或阿里云Kubernetes容器服务的日志时,如果采集状态异常,您可以根据本文排查问题、检查运行状态等运维操作。
排查机器组心跳异常
您可以通过检查机器组心跳状态的方式判断容器上的Logtail是否已正确安装。
-
查看机器组心跳状态。
-
在Project列表区域,单击目标Project名称。
-
在左侧导航栏,单击 机器组 图标。
-
单击需要查看状态的机器组名称。
在 机器组状态 中记录心跳状态为 OK 的节点数。
-
检查集群中Worker节点数。
-
登录Kubernetes集群的Master节点。更多信息,请参见 容器服务Kubernetes版用户指南 中的 通过kubectl连接Kubernetes集群 章节。
-
执行以下命令,查看集群中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日志采集流程,请检查 ${your_region_name} 、 ${your_aliyun_user_id} 和 ${your_machine_group_user_defined_id} 参数填写是否正确。更多信息,请参见 参数说明 。
- 如果您使用阿里云容器服务Kubernetes安装方式采集日志,请提交工单。
-
如果您使用自建Kubernetes安装方式采集日志,请检查
{your-project-suffix}
、
{aliuid}
、
{access-key-id}
和
{access-key-secret}
参数填写是否正确。更多信息,请参见
参数说明
。
若参数填写错误,请执行命令
helm del --purge alibaba-log-controller
删除安装包,并重新安装。
-
机器组心跳状态为
OK
的节点数少于集群中Worker节点数。
-
判断是否使用yaml文件手动部署DaemonSet。
执行命令
kubectl get po -n kube-system -l k8s-app=logtail
,若有返回结果,表示您之前使用yaml文件手动部署了DaemonSet。 - 下载最新版本的 DaemonSet模板 。
- 将其中的 ${your_region_name} 、 ${your_aliyun_user_id} 、 ${your_machine_group_name} 替换为您的真实内容。
-
执行命令
kubectl apply -f ./logtail-daemonset.yaml
更新DaemonSet yaml文件。
-
判断是否使用yaml文件手动部署DaemonSet。
-
机器组中所有节点的心跳状态均为
Failed
。
排查容器日志采集异常
如果您在控制台的 消费预览 或 查询分析 页面未查看到日志数据,说明日志服务并未采集到您的容器日志数据。请确认容器状态后,执行以下检查。
-
查看机器组的心跳是否存在异常。具体操作,请参见 确认机器组状态 。
-
检查采集配置标识是否正确。
检查配置中
IncludeLabel 、ExcludeLabel 、IncludeEnv 、ExcludeEnv 是否和您需要采集的容器配置匹配。说明 其中的Label
为容器Label(docker inspect 中的Label信息),并不是Kubernetes中定义的Label。 您可以通过将IncludeLabel 、ExcludeLabel 、IncludeEnv 和ExcludeEnv 配置临时去除,查看是否可以正常采集到日志,若可以采集则可以确定为标记配置问题。 -
检查其他注意事项。
若您配置采集容器内文件,请注意:
- 若下发采集配置后文件没有修改事件,Logtail则不采集。
- 采集容器日志文件,只支持采集容器默认存储或挂载到本地的文件,暂不支持其他存储方式。
其他运维操作
登录Logtail容器
请根据现场情况,选择以下对应的步骤:-
Docker
-
登录宿主机,执行以下命令,查看并记录Logtail容器ID。
docker ps | grep logtail
-
执行以下命令,登录Logtail容器。
docker exec -it [$ID] bash
说明 [$ID]为Logtail容器ID。
-
登录宿主机,执行以下命令,查看并记录Logtail容器ID。
-
Kubernetes
-
执行以下命令,查看并记录Logtail的Pod。
kubectl get po -n kube-system | grep logtail
-
执行以下命令,登录Logtail的Pod。
kubectl exec -it -n kube-system [$Pod_ID] bash
说明 [$Pod_ID]为Pod的ID。
-
执行以下命令,查看并记录Logtail的Pod。
查看Logtail的运行日志
Logtail日志存储在Logtail容器中的 /usr/local/ilogtail/ 目录中,文件名为 ilogtail.LOG 和 logtail_plugin.LOG 。
-
登录Logtail容器。更多信息,请参见 登录Logtail容器 。
-
执行以下命令,进入指定目录。
cd /usr/local/ilogtail
-
依次执行以下命令,查看ilogtail.LOG和logtail_plugin.LOG日志文件。
cat ilogtail.LOG cat logtail_plugin.LOG
Logtail的容器标准输出(stdout)
容器stdout并不具备参考意义,请忽略以下标准输出(stdout):
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集群中日志相关组件状态
- 登录Kubernetes集群的Master节点。更多信息,请参见 容器服务Kubernetes版用户指南 中的 通过kubectl连接Kubernetes集群 章节。
-
执行以下命令,查看Kubernetes集群中日志相关组件状态。
helm status alibaba-log-controller
查看Logtail的版本号信息、IP地址、启动时间
- 登录Logtail容器。更多信息,请参见 登录Logtail容器 。
-
执行以下命令,查看Logtail的版本号信息、IP地址、启动时间。
预期输出:kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
{ "UUID" : "", "hostname" : "logtail-gb92k", "instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_10.10.10.10_1517810940", "ip" : "203.0.113.10", "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"