本文介绍文件中的日志被采集多份的解决方案。
默认情况下,一个文件只能匹配一个Logtail配置。当多个Logtail配置匹配同一个文件时,只会生效1个。因为在客户端上对文件中的日志采集多份需要消耗多倍的CPU、内存、磁盘IO和网络IO开销,将对同机部署的其他服务性能造成额外影响,并非优化的日志采集方案。
一份日志需要被存储到不同Logstore时,您可以使用日志服务数据加工功能。通过数据加工对日志进行复制,可避免对同机的其他服务性能造成影响。具体操作,请参见复制Logstore数据。
如果您的需求是必须在客户端上对文件中的日志采集多份,则可以使用如下三种方案。
- 创建目录软链接
为文件所在的目录创建软链接。例如/home/log/nginx/log/log.log文件中的日志需要被采集两份,则执行如下命令创建该文件所在目录的软链接。在一个Logtail配置中使用原路径,在另一个Logtail配置中使用软链接路径。
ln -s /home/log/nginx/log /home/log/nginx/link_log
- 添加强制采集配置
在Logtail采集配置的中添加
{"force_multiconfig": true}
,实现目标文件可被多个Logtail配置匹配,从而实现目标文件中的日志被采集多份。 - 设置启动参数
在安装Logtail的服务器上,打开/usr/local/ilogtail/ilogtail_config.json文件,设置
"accept_multi_config": true
,允许多个Logtail配置采集同一个文件中的日志。更多信息,请参见设置Logtail启动参数。