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

前提条件

  • Logtail版本需在0.16.6及以上。
  • 需要被采集的历史文件必须处于采集配置覆盖的范围下,且此前未被Logtail采集过。
  • 历史文件的最后修改时间必须在配置Logtail之前。
  • 本地事件导入最长延迟为1分钟。
  • 由于加载本地配置属于特殊行为,Logtail会向服务器发送LOAD_LOCAL_EVENT_ALARM以提醒用户。

背景信息

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

操作步骤

  1. 创建采集配置。
    请根据采集文本日志创建采集配置并应用到机器组,确保文件处于对应采集配置覆盖范围。
  2. 获取配置唯一标识。
    采集配置的唯一标识可在本地 /usr/local/ilogtail/user_log_config.json 中获取,示例如下:
    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. 添加本地事件。
    本地事件保存的路径为 /usr/local/ilogtail/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 日志文件名,支持通配符。
      说明 支持通配符的Logtail版本在0.16.14及以上。
      access.log.2018-08-08access.log*
      说明 为防止Logtail加载无效的JSON,建议您将本地事件配置保存在临时文件中,编辑完成后拷贝到 /usr/local/ilogtail/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已经读取到事件信息。
    • 检查/usr/local/ilogtail/ilogtail.LOG 文件中是否包含 process local event关键字。若local_event.json被清空但未查询到该组关键字,可能因为您的本地配置文件内容不合法而被过滤。
    • 通过查询诊断错误查询是否存在LOAD_LOCAL_EVENT_ALARM提示。
  • 配置被加载但未采集到数据

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

    • 配置不合法。
    • 本地配置config不存在。
    • 日志文件不在Logtail采集配置已设定的路径下。
    • 该日志文件被Logtail采集过。
  • 如何采集已经被采集过的数据
    如果您需要采集已经被采集过的数据,可通过以下方式实现:
    1. 执行命令/etc/init.d/ilogtaild stop停止Logtail。
    2. /tmp/logtail_check_point文件中查找对应的日志文件路径。
    3. 删除该日志文件的checkpoint(JSON object)并保存。
    4. 按照本文步骤3添加本地事件。
    5. 执行命令/etc/init.d/ilogtaild start启动Logtail。