iLogtail专题十一:iLogtail采集原理

 公司一直使用的Filebeat进行日志采集
 由于Filebeat采集组件一些问题,现需要使用iLogtail进行代替
 现记录下iLogtail介绍和实际使用过程
 这是iLogtail系列的第十一篇文章

采集过程

Logtail采集数据的过程如下:

  1. 监听文件
  2. 读取文件
  3. 处理日志
  4. 过滤日志
  5. 聚合日志
  6. 发送日志

监听文件

在服务器上安装Logtail及在日志服务控制台上创建Logtail采集配置后,日志服务会实时下发Logtail采集配置到Logtail,Logtail根据Logtail采集配置开始监听文件。Logtail根据Logtail采集配置中的日志路径和最大监控目录深度,逐层扫描符合规则的日志目录和文件。

将Logtail采集配置应用到机器组后,对应服务器上没有发生修改事件的日志文件会被判定为历史日志文件,Logtail监听到历史日志文件,并不会采集。当日志文件产生了修改事件,才会触发采集流程,Logtail开始读取文件。如果您要采集历史日志文件,请参见导入历史日志文件。

为保证采集日志的时效性以及稳定性,Logtail会对待采集的目录注册事件监听(Linux下使用Inotify)以及定期轮询。

读取文件

Logtail监听到日志文件,并确认有更新后,开始读取。

  • 首次读取日志文件时,日志服务默认首次读取大小为1024 KB。
    • 如果文件小于1024 KB,则从文件内容起始位置开始读取。
    • 如果文件大于1024 KB,则从距离文件末尾1024 KB的位置开始读取。

    说明 日志服务支持自定义首次读取大小。

    • 控制台方式:在Logtail配置中修改首次采集大小参数。具体操作,请参见高级配置。
    • API方式:在Logtail配置中修改tail_size_kb参数。具体操作,请参见advanced参数说明。

  • 如果Logtail已读取过该日志文件,则从上次读取的Checkpoint处继续读取。
  • 读取日志文件时,每次最多可以读取512 KB,因此每条日志的大小请控制在512 KB以内,否则无法正常读取。

说明 如果您修改了服务器上的时间,请手动重启Logtail,否则会导致日志时间不正确、意外丢弃日志等现象。

处理日志

Logtail读取日志后,对日志内容进行分行、解析、设置时间字段。

  • 分行

    如果Logtail采集配置中指定了行首正则表达式,则Logtail根据行首正则表达式对每次读取的日志进行分行,切分成多条日志;如果没有指定行首正则表达式,则将一行日志作为一条日志处理。

  • 解析根据Logtail采集配置中配置的采集模式,对每条日志内容进行解析。

    说明 如果您的正则表达式比较复杂,可能会导致CPU占用率过高,请使用合理高效的正则表达式。
    如果解析失败,会根据Logtail采集配置中是否开启丢弃解析失败日志的功能进行处理。

    • 开启丢弃解析失败日志,则直接丢弃该日志,并上报解析失败的报错信息。
    • 关闭丢弃解析失败日志,则上传解析失败的原始日志,其中Key为raw_log、Value为日志内容。

  • 设置日志时间字段
    • 如果未配置时间字段,则日志时间为当前解析日志的时间。
    • 如果配置了时间字段:
      • 日志中记录的时间距离当前时间12小时以内,则从解析的日志字段中提取时间。
      • 日志中记录的时间距离当前时间12小时以上,则丢弃该日志并上传错误信息。

过滤日志

处理日志后,根据Logtail采集配置中的过滤器配置过滤日志。

  • 在Logtail采集配置中未设置过滤器配置,则不过滤日志,执行下一个步骤。
  • Logtail采集配置已设置过滤器配置,则对每条日志中的所有字段进行遍历并验证。

    只有符合过滤器配置的日志被采集。

聚合日志

为降低网络请求次数,在日志处理、过滤完毕后,会在Logtail内部缓存一段时间后进行聚合打包,再发送到日志服务。缓存数据后,触发打包日志发送到日志服务的条件如下:

  • 日志聚合时间超过3秒。
  • 日志聚合条数超过4096条。
  • 日志聚合总大小超过512 KB。

发送日志

Logtail将采集到的日志聚合并发送到日志服务。如果数据发送失败,Logtail自动根据错误信息决定重试或放弃发送。

错误信息

说明

Logtail处理方式

401错误Logtail没有权限采集数据。直接丢弃日志包。
404错误Logtail采集配置中指定的Project或Logstore不存在。直接丢弃日志包。
403错误Shard Quota超出限制。等待3秒后重试。
500错误服务端异常。等待3秒后重试。

说明 如果要调整数据的发送速度和最大并发数,您可以设置启动参数配置文件中的max_bytes_per_sec参数和send_request_concurrency参数。具体操作,请参见设置Logtail启动参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值