Logtail默认只采集增量的日志文件,如果您需要采集历史日志文件,可使用Logtail自带的导入历史文件功能。

前提条件

背景信息

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

您需要在Logtail的安装目录下执行导入历史文件的操作,该目录在不同操作系统中位于不同位置。
  • Linux系统:/usr/local/ilogtail
  • Windows系统:
    • 32位:C:\Program Files\Alibaba\Logtail
    • 64位:C:\Program Files (x86)\Alibaba\Logtail
说明
  • 导入本地事件最长延迟为1分钟。
  • 由于加载本地事件属于特殊行为,Logtail会向服务器发送LOAD_LOCAL_EVENT_ALARM消息。
  • 如果您导入的文件量较大,建议修改Logtail启动参数,建议将CPU调整至2.0及以上,内存调整至512MB及以上,详情请参见配置Logtail启动参数

操作步骤

  1. 获取Logtail配置的唯一标识。
    您可以在Logtail安装目录下的user_log_config.json文件中获取Logtail配置的唯一标识。
    此处以Linux系统为例,查看Logtail配置的唯一标识。
    grep "##" /usr/local/ilogtail/user_log_config.json | awk '{print $1}'
                        "##1.0##log-config-test$multi"
                        "##1.0##log-config-test$ecs-test"
                        "##1.0##log-config-test$metric_system_test"
                        "##1.0##log-config-test$redis-status"
  2. 添加本地事件。
    1. 在Logtail安装目录下,创建local_event.json文件。
    2. local_event.json文件中添加本地事件,类型为标准JSON,格式如下所示。
      [ 
        {
          "config" : "${your_config_unique_id}",
          "dir" : "${your_log_dir}",
          "name" : "${your_log_file_name}"
         },
        {
         ...
         }
         ...
      ]
      说明 为了防止Logtail加载无效的JSON,建议您先将本地事件配置保存在临时文件中,编辑完成后拷贝到local_event.json文件中。
      参数 说明
      config 填写步骤1中获取的Logtail配置唯一标识,例如:##1.0##log-config-test$ecs-test。
      dir 历史日志文件所在目录,例如:/data/logs
      说明 文件夹不能以/结尾。
      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采集过。