Logtail根据采集场景不同操作流程也有差异,本文将介绍在主机场景,K8s集群场景,容器场景下如何使用Logtail采集日志。
主机场景Logtail安装采集指引
采集主机文本日志时,根据主机所属情况,日志服务支持通过一键自动安装Logtail方式和手动安装Logtail方式进行采集。
一键自动安装
满足如下条件时,可在控制台上一键自动安装Logtail,日志服务将借助运维编排服务OOS,在ECS实例中自动安装Logtail,详情请参见主机文本日志采集(自动安装)。
主机类型为ECS。
主机与日志服务Project同属一个账号,且同属一个地域。
手动安装方式
存在如下任一情况时,请在主机上手动安装Logtail,详情请参见主机文本日志采集(手动安装)。
主机类型不是ECS。
主机类型是ECS,但是与日志服务不属于同一个账号。
主机类型是ECS,且与日志服务Project同属一个账号,但不属于同一个地域。
K8s集群场景Logtail安装采集指引
采集容器K8s日志可用于故障排查、性能优化、安全审计、资源利用率分析。日志服务支持通过DaemonSet方式和Sidecar方式采集K8s集群的容器日志。
DaemonSet模式
在DaemonSet模式中,Kubernetes集群确保每个节点(Node)只运行一个Logtail容器,用于采集当前节点内所有容器(Containers)的日志。
当新节点加入集群时,Kubernetes集群会自动在新节点上创建Logtail容器;当节点退出集群时,Kubernetes集群会自动销毁当前节点上的Logtail容器。通过DaemonSet的自动扩缩容机制以及标识型机器组,无需您手动管理Logtail实例。
Sidecar模式
在Sidecar模式中,每个容器组(Pod)运行一个Logtail容器,用于采集当前容器组(Pod)所有容器(Containers)的日志。不同Pod的日志采集相互隔离。
为了采集同一Pod中其他容器的日志文件,需要通过共享存储卷的方式来完成,即将同一份存储卷分别挂载到业务容器和Logtail容器。关于Sidecar方式采集容器日志的更多信息,请参见Sidecar日志采集介绍和Sidecar模式示例。存储卷的更多信息,请参见存储基础知识。
采集方式 | 场景 | 优势 | 劣势 |
采集方式 | 场景 | 优势 | 劣势 |
DaemonSet | 一般情况下建议使用DaemonSet | 运维简单、资源占用少、支持采集容器的标准输出和文本文件、配置方式灵活。 | Logtail采集该节点内所有容器的日志,存在一定的性能瓶颈,且各个容器之间的隔离性较弱。 |
Sidecar | 需要每个Pod使用单独Logtail实例采集的情况(ASK集群默认使用sidecar方式部署Logtail)。 | 为每个需要采集日志的容器创建一个Sidecar容器,多租户隔离性好。 | 资源消耗较高,配置与维护较复杂, |
容器发现
Logtail容器采集其他容器的日志,必须发现和确定哪些容器正在运行,这个过程称为容器发现。在容器发现阶段,Logtail容器不与Kubernetes集群的kube-apiserver进行通信,而是直接和节点上的容器运行时守护进程(Container Runtime Daemon)进行通信,从而获取当前节点上的所有容器信息,避免容器发现对集群kube-apiserver产生压力。
Logtail支持通过Namespace名称、Pod名称、Pod标签、容器环境变量等条件指定或排除采集相应容器的日志。
容器文件路径映射
在Kubernetes集群中,因为Pod之间资源隔离,Logtail容器无法直接访问其他Pod中的容器的文件。但是,容器内的文件系统都是由宿主机的文件系统挂载形成,通过将宿主机根目录所在的文件系统挂载到Logtail容器,就可以访问宿主机上的任意文件,从而间接采集业务容器文件系统的文件。容器内文件路径与宿主机文件路径之间的关系被称为文件路径映射。
日志文件在当前容器内的路径是/log/app.log
,假设映射后的宿主机路径是/var/lib/docker/containers/<container-id>/log/app.log
。Logtail默认将宿主机根目录所在的文件系统挂载到自身的/logtail_host
目录下,因此Logtail实际采集的文件路径为/logtail_host/var/lib/docker/containers/<container-id>/log/app.log
。
注意事项
容器运行时支持
支持引擎:
Docker
Containerd
存储驱动限制(仅Docker):
只支持Overlay、Overlay2。
其他驱动:若使用非Overlay驱动,需将日志目录通过数据卷挂载为临时目录。
存储卷挂载方式
如果NAS以PVC的方式挂载到数据目录。
禁止使用:DaemonSet部署Logtail。
推荐使用:
采集集群文本日志(Sidecar):每个Pod部署独立Logtail容器
适用场景:高隔离性需求、多租户环境。
通过业务容器和Logtail容器共享PVC实现日志采集:独立部署Logtail服务。
适用场景:集中式日志采集、资源优化。
日志文件路径规范
禁止使用软链接:
错误配置:
/var/log/app -> /mnt/nas/logs
。正确配置:直接使用物理路径
/mnt/nas/logs
。
挂载路径匹配规则:
如果业务容器的数据目录通过数据卷(Volume)挂载, 采集路径必须≥挂载点路径。
示例:
1挂载点:/var/log/service 2✅ 有效采集路径:/var/log/service 或 /var/log/service/subdir 3❌ 无效采集路径:/var/log (路径过短)
容器停止时的日志处理
运行时 | 日志完整性 | 容器销毁延迟风险 | 优化建议 |
运行时 | 日志完整性 | 容器销毁延迟风险 | 优化建议 |
Docker | 如果在容器停止前,出现因网络延迟、资源占用多等原因导致的采集延时,可能会丢失容器停止前的部分日志。 | 当容器被停止时,Logtail会立刻释放容器文件句柄,容器可正常退出。 | 增加日志发送频率(调小 |
Containerd | 当容器被停止时,Logtail会持续持有容器内文件的句柄(即保持对日志文件的打开状态),直至所有日志文件内容发送完毕。 | 当出现网络延迟、资源占用多等原因导致的采集延时时,可能会导致业务容器不能及时销毁。 | 配置 |
Docker容器场景Logtail安装采集指引
在服务器上部署Docker后可以采集日志,Docker的日志分为两种类型:标准输出和文件日志。文件日志是指容器内生成的日志被写入服务器的指定文件目录中,而标准输出则指容器自身的实时输出流。
- 本页导读 (1)
- 主机场景Logtail安装采集指引
- 一键自动安装
- 手动安装方式
- K8s集群场景Logtail安装采集指引
- DaemonSet模式
- Sidecar模式
- 容器发现
- 容器文件路径映射
- 注意事项
- Docker容器场景Logtail安装采集指引