导入历史日志文件

Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。如果您需要采集历史日志,可使用Logtail自带的导入历史日志文件功能。

前提条件

  • 已在服务器上安装0.16.15(Linux系统)或1.0.0.1(Windows系统)及以上版本的Logtail。具体操作,请参见安装Logtail(Linux系统)安装Logtail(Windows系统)

  • 已创建Logtail配置并应用到机器组。具体操作,请参见文本日志概述

    说明

    如果该Logtail配置只用来导入历史日志文件,可以设置一个不存在的采集路径。

背景信息

Logtail基于监听文件的修改事件进行日志采集,还支持从本地文件中加载事件,以驱动日志采集。采集历史日志文件就是基于本地事件加载实现的功能。

说明
  • 导入本地事件最长延迟为1分钟。

  • 由于加载本地事件属于特殊行为,Logtail会向服务器发送LOAD_LOCAL_EVENT_ALARM消息。

  • 如果您导入的文件量较大,建议修改Logtail启动参数,建议将CPU调整至2.0及以上,内存调整至512MB及以上。更多信息,请参见设置Logtail启动参数

  • 如果您的日志文件中存在中文,需要设置文件字符集。

您需要在Logtail的安装目录下执行导入历史日志文件的操作,该安装目录在不同操作系统中位于不同位置,具体说明如下表所示。

操作系统

Logtail

Logtail安装目录

Linux

Logtail(64位程序)

/usr/local/ilogtail

Windows(64位操作系统)

Logtail(64位程序)

C:\Program Files\Alibaba\Logtail

Logtail(32位程序)

C:\Program Files (x86)\Alibaba\Logtail

说明

Windows 64位操作系统支持运行32/64位应用程序,但是出于兼容性考虑,在Windows 64位操作系统上,Windows会使用单独的x86目录来存放32位应用程序。

Windows (32位操作系统)

Logtail(32位程序)

C:\Program Files\Alibaba\Logtail

操作步骤

  1. 获取Logtail配置的唯一标识。

    您可以在Logtail安装目录下的user_log_config.json文件中获取Logtail配置的唯一标识。此处以Linux系统为例,查看Logtail配置的唯一标识。

    grep "##" /usr/local/ilogtail/user_log_config.json | awk '{print $1}'
  2. 添加本地事件。

    1. 在Logtail安装目录下,创建local_event.json文件。

    2. 在local_event.json文件中添加本地事件,类型为标准JSON,格式如下所示。

      重要

      为了防止Logtail加载无效的JSON,建议您先将本地事件配置保存在临时文件中,编辑完成后拷贝到local_event.json文件中。

      [ 
        {
          "config" : "${your_config_unique_id}",
          "dir" : "${your_log_dir}",
          "name" : "${your_log_file_name}"
         },
        {
         ...
         }
         ...
      ]

      参数

      说明

      config

      填写步骤1中获取的Logtail配置唯一标识,例如##1.0##log-config-test$ecs-test

      dir

      历史日志文件所在目录,例如:/data/logs

      重要
      • 文件夹不能以/结尾。

      • 文件夹目录不能是Logtail安装目录(/usr/local/ilogtail)。

      name

      历史日志文件名,支持通配符,例如access.log.2018-08-08、access.log*。

      本文以Linux系统为例,介绍配置示例。

      $ cat /usr/local/ilogtail/local_event.json
      [
        {
          "config": "##1.0##log-config-test$ecs-test",
          "dir": "/data/log",
          "name": "access.log*"
        },
        {
          "config": "##1.0##log-config-test$tmp-test",
          "dir": "/tmp",
          "name": "access.log.2017-08-09"
        }
      ]                            

常见问题

  • 检查Logtail是否加载Logtail配置。

    通常情况下,保存local_event.json文件后,Logtail会在1分钟内将文件内容加载到内存中,并将local_event.json文件中的内容清空。

    您可以通过以下方式检查Logtail是否已加载Logtail采集配置。

    1. local_event.json文件中的内容被清空,则说明Logtail已读取到事件信息。

    2. 检查Logtail安装目录中的ilogtail.LOG文件中是否包含process local event参数。如果local_event.json文件被清空但未查询到process local event参数,可能是因为local_event.json文件内容不合法而被过滤。

  • 已加载Logtail采集配置但未采集到数据,是什么原因?

    • Logtail采集配置不合法。

    • local_event.json文件配置不合法。

    • 日志文件不在Logtail采集配置已设定的路径下。

    • 该日志文件已被Logtail采集过。

后续操作

导入历史文件采集成功后,查询和分析请参见通过索引模式查询和分析日志