Logtail安装采集快速入门

更新时间:2025-04-11 09:53:08

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驱动,需将日志目录通过数据卷挂载为临时目录

存储卷挂载方式

如果NASPVC的方式挂载到数据目录。

日志文件路径规范

  • 禁止使用软链接:

    • 错误配置:/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会立刻释放容器文件句柄,容器可正常退出。

增加日志发送频率(调小flush_interval)。

Containerd

当容器被停止时,Logtail会持续持有容器内文件的句柄(即保持对日志文件的打开状态),直至所有日志文件内容发送完毕。

当出现网络延迟、资源占用多等原因导致的采集延时时,可能会导致业务容器不能及时销毁。

配置max_hold_buffer_size限制内存占用。

Docker容器场景Logtail安装采集指引

在服务器上部署Docker后可以采集日志,Docker的日志分为两种类型:标准输出和文件日志。文件日志是指容器内生成的日志被写入服务器的指定文件目录中,而标准输出则指容器自身的实时输出流。

  • 本页导读 (1)
  • 主机场景Logtail安装采集指引
  • 一键自动安装
  • 手动安装方式
  • K8s集群场景Logtail安装采集指引
  • DaemonSet模式
  • Sidecar模式
  • 容器发现
  • 容器文件路径映射
  • 注意事项
  • Docker容器场景Logtail安装采集指引