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

前提条件

  • Logtail版本需在0.16.15(Linux)或1.0.0.1(Windows)及以上,若低于此版本,请先升级至最新版本。
  • 需要被采集的历史文件不需要处于采集配置覆盖的范围下,若此前文件已经被Logtail采集过,再次导入会重复采集一次。
  • 本地事件导入最长触发延迟为1分钟。
  • 由于加载本地配置属于特殊行为,Logtail会向服务器发送LOAD_LOCAL_EVENT_ALARM以提醒用户。
  • 若您导入的文件量较大,建议参考配置启动参数修改Logtail启动配置,提升CPU、内存上限,建议CPU调整至2.0或以上,内存调整至512 MB或以上。

背景信息

Logtail基于事件进行文件采集,事件通常由监听或定期轮询文件修改产生。除以上方式外,Logtail还支持从本地文件中加载事件,以此驱动日志采集。历史文件采集就是基于本地事件加载实现的功能。

导入历史日志的步骤需要在Logtail的安装目录下操作,该目录在不同操作系统中位于不同位置。
  • Linux系统:/usr/local/ilogtail
  • Windows系统:
    • 32位:C:\Program Files\Alibaba\Logtail
    • 64位:C:\Program Files (x86)\Alibaba\Logtail

操作步骤

  1. 创建采集配置。
    请根据采集文本日志创建采集配置并应用到机器组,若该配置只用来导入历史文件,可以设置一个不存在的采集目录。
  2. 获取配置唯一标识。
    采集配置的唯一标识可在Logtail安装目录下的文件 user_log_config.json中获取。Linux系统可在该目录下执行命令grep查看;Windows系统可以通过记事本等工具查看。
    以Linux系统为例,查看标识的操作如下:
    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"
                    
  3. 添加本地事件。
    本地事件保存在Logtail安装目录下的文件 local_event.json中,类型为标准JSON,格式为:
    [ 
      {
        "config" : "${your_config_unique_id}",
        "dir" : "${your_log_dir}",
        "name" : "${your_log_file_name}"
       },
      {
       ...
       }
       ...
    ]
    • 配置项
      配置项 说明 示例
      config 步骤2获取的配置唯一标识。 ##1.0##log-config-test$ecs-test
      dir 日志所在文件夹。
      说明 文件夹不能以 /结尾。
      /data/logs
      name 日志文件名,支持通配符。 access.log.2018-08-08access.log*
      说明 为防止Logtail加载无效的JSON,建议您将本地事件配置保存在临时文件中,编辑完成后拷贝到 local_event.json中。
    • 配置示例

      以Linux系统为例,添加本地事件的步骤如下,Windows系统可直接通过记事本等工具修改local_event.json文件。

      $ 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是否加载配置

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

    您可以通过以下三种方式检查Logtail是否已经读取事件:

    • local_event.json文件被清空,说明Logtail已经读取到事件信息。
    • 检查目录ilogtail(Linux)或Logtail(Windows)中的文件ilogtail.LOG中是否包含 process local event关键字。若local_event.json被清空但未查询到该组关键字,可能因为您的本地配置文件内容不合法而被过滤。
    • 通过诊断采集错误查询是否存在LOAD_LOCAL_EVENT_ALARM提示。
  • 配置被加载但未采集到数据

    若Logtail已经加载配置但数据未被采集到,可能由以下几种原因造成:

    • 配置不合法。
    • 本地配置config不存在。
    • 日志文件不在Logtail采集配置已设定的路径下。
    • 该日志文件被Logtail采集过。