如何实现文件中的日志被采集多份

默认情况下,一个文件只能匹配一个Logtail采集配置。本文介绍如何实现文件日志被采集多份。

背景信息

当多个Logtail采集配置匹配同一个文件时,会导致多倍的CPU、内存、磁盘IO和网络IO资源占用,将影响同一台服务器部署的其他服务性能,因此默认情况下,一个文件只能匹配一个Logtail采集配置。

解决方案

将日志数据存储到不同Logstore

不需要配置多个Logtail采集配置,可以使用日志服务数据加工功能对日志进行复制,避免对同主机的其他服务性能造成影响。具体操作,请参见复制Logstore数据

创建多个Logtail采集配置

主机场景

  • 创建目录软链接

    为文件所在的目录创建软链接。在一个Logtail配置中使用原路径,在另一个Logtail配置中使用软链接路径。例如执行如下命令,为文件所在目录/home/log/nginx/log创建软链接/home/log/nginx/link_log,通过软链接可以读取目录下的文件内容。

    ln -s /home/log/nginx/log /home/log/nginx/link_log
  • 添加强制采集配置

    在Logtail采集配置的输入配置中,打开允许文件多次采集开关。参见采集主机文本日志

    image

容器场景

采集容器日志的配置步骤,请参见通过DaemonSet方式采集Kubernetes容器文本日志通过Sidecar方式采集Kubernetes容器文本日志

  • 控制台

    在Logtail采集配置的输入配置中,打开允许文件多次采集开关。

    image

  • CRD

    定义多个CRD。