本文介绍如何在控制台上创建Logtail配置,并以DaemonSet方式采集Kubernetes文件。
前提条件
功能特点
Logtail支持采集容器内产生的文本日志,并附加容器的相关元数据信息一起上传到日志服务。相对基础的日志文件采集,Kubernetes文件采集具备以下功能特点。
- 只需配置容器内的日志路径,无需关心该路径到宿主机的映射。
- 支持通过Label指定采集的容器。
- 支持通过Label排除特定容器。
- 支持通过环境变量指定采集的容器。
- 支持通过环境变量指定排除的容器。
- 支持多行日志(例如java stack日志)。
- 支持Docker容器数据自动打标签。
- 支持Kubernetes容器数据自动打标签。
说明
- 本文的Label为Docker inspect中的Label,并不是Kubernetes配置中的Label。
- 本文中的环境变量为容器启动中配置的环境变量信息。
限制说明
- 采集停止策略:当容器被停止后,Logtail监听到容器
die
的事件后会停止该容器日志的采集,若此时采集出现延迟,则可能丢失停止前的部分日志。 - Docker存储驱动限制:目前只支持overlay、overlay2,其他存储驱动需将日志所在目录挂载到宿主机上。
- 不支持采集软链接:目前Logtail无法访问业务容器的软链接,请按真实路径配置采集目录。
创建采集配置
配置示例
- 环境变量配置方式
例如:采集环境变量为
NGINX_PORT_80_TCP_PORT=80
且不为POD_NAMESPACE=kube-system
的容器日志,日志文件路径为/var/log/nginx/access.log
,日志解析方式为极简类型。 - Label配置方式
采集label为
io.kubernetes.container.name=nginx
的容器日志,日志文件路径为/var/log/nginx/access.log
,日志解析方式为极简类型。
默认字段
每条日志默认上传的字段如下所示。
字段名 | 说明 |
---|---|
_image_name_ | 镜像名 |
_container_name_ | 容器名 |
_pod_name_ | Pod名 |
_namespace_ | Pod所在命名空间 |
_pod_uid_ | Pod的唯一标识 |
_container_ip_ | Pod的IP地址 |