Logtail从入门到精通(六):工作原理简介

简介: Logtail数据采集原理介绍,包括文件采集原理以及插件采集原理。

文件采集原理


Logtail文件采集的流程包括:文件监听、文件读取、日志处理、日志过滤、日志聚合和数据发送6个环节。下面将分别进行介绍:

cdc72df3-4011-476c-907c-03bac0239cf1.png

  • 注意:本节只介绍正常运行模式中Logtail的文件采集原理,该模式下不支持采集历史文件,如有采集历史文件需求,请参考采集历史文件




文件监听


  1. 当Logtail获取到采集配置后,根据配置的日志路径、文件名、最大监控目录深度递归扫描目录下符合文件名规则的日志目录和文件。
  2. 为保证日志采集时效性以及稳定性,Logtail会对采集目录注册事件监听(Linux下Inotify、Windows下使用ReadDirectoryChangesW)以及定期轮询。
  3. 当第一次应用配置时,对于目录下存量的日志文件不会进行采集,直到文件在配置应用后产生修改事件才会采集。
  4. 当监听到文件修改后,会进入文件读取环节。


文件读取


  1. 每次Logtail读取会从该文件上一次读取的偏移处开始。
  2. 若该文件首次读取,会检查该文件大小,若文件小于1MB,则从文件头开始读取,否则从文件尾1MB处开始读取。
  3. 每次读取最多512KB数据,因此一条日志最大支持512KB。


日志处理


  1. 对于读取的数据块,会根据行首配置进行分行,切分成多条日志。
  2. 对于每条日志内容执行对应的解析,例如正则、分隔符、JSON等。
  3. 若未配置时间字段,则日志时间为当前解析时间;若配置了时间提取字段,则从解析的日志字段中提取时间,若时间距离当前时间超过12小时,则丢弃该日志并上传错误信息。
  4. 若该日志可以被正确解析,则进入日志过滤环节。
  5. 若该日志解析失败且开启 高级配置中的丢弃解析失败日志,则直接丢弃该日志,并上报解析失败的报错信息
  6. 若该日志解析失败,但未开启 高级配置中的丢弃解析失败日志,则将解析失败的原始日志上传,其中Key为raw_log、Value为日志内容


日志过滤


  1. 若用户未设置 高级配置 中的 过滤器配置,则跳过日志过滤环节。
  2. 若用户已经设置过滤器配置,则会对每条日志中的所有字段进行遍历并验证。
  3. 只有过滤器中配置的所有字段都在该日志出现,且所有对应的字段全部符合过滤器配置时,日志才会被采集,否则丢弃该日志。


日志聚合


  1. 为降低网络请求次数,当日志处理、过滤完毕后,会在Logtail内部缓存一段时间再进行发送。
  2. 缓存规则有3条,任一一条满足则触发发送:
  1. 日志聚合时间超过3秒
  2. 日志聚合条数超过4096条
  3. 日志聚合总大小超过1MB


日志发送


  1. 日志发送前会进行压缩,目前Logtail采用的是LZ4压缩算法。
  2. 日志发送受限于max_bytes_per_secsend_request_concurrency 限制,Logtail会保证发送速率以及并发不超过配置值,具体参数请参考启动参数配置
  3. 若数据发送失败,则根据错误信息选择重试还是丢弃数据:
  1. 401错误,说明没有权限采集数据,直接丢弃。
  2. 404错误,说明project或logstore不存在,直接丢弃。
  3. 403错误,Quota超限,等待3秒后重试。
  4. 500错误,等待3秒后重试。
  5. 网络超时,等待3秒后重试。


插件采集原理


Logtail的插件采集流程主要包括以下环节:插件数据采集、数据处理、日志聚合和日志发送。


插件数据采集


插件数据采集的原理在每个插件的文档中都有介绍,具体请参见各个插件的帮助文档。


aefd4313-e203-4918-bd60-db80c8c521f4.png


数据处理


插件数据处理逻辑请参考插件-数据处理


日志聚合


插件的日志聚合逻辑和文件采集的日志聚合逻辑一致。


日志发送


插件的日志发送逻辑和文件采集的日志发送逻辑一致。


资源限制


Logtail会根据配置文件中的资源限制进行工作,若资源占用长时间(5分钟)超过限定值,则Logtail会进行强制重启。重启后可能会产生一定的数据重复。


数据采集可靠性


Logtail在采集数据时,会定期将采集的点位(CheckPoint)信息保存到本地,若遇到宕机、Crash等异常时,Logtail再次启动会从上一次记录的位置处开始采集数据,尽可能保证数据不丢失。


Logtail内部采用了很多机制提升日志采集可靠性,但并不能保证日志绝对不会丢失。以下情况可能造成日志丢失:


  1. Logtail未运行且日志轮转多次。
  2. 日志轮转速度极快,例如1秒轮转1次。
  3. 日志采集速度长期无法达到日志产生速度。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
tengine 运维 Kubernetes
阿里巴巴重磅开源云原生网关: Higress
Higress 源自阿里巴巴内部电商、交易等核心生产场景的实践沉淀,遵循 Ingress/Gateway API 标准,将流量网关、微服务网关、安全网关三合一,并在此基础上扩展了服务管理插件、安全类插件和自定义插件,高度集成 K8s 和微服务生态,包括 Nacos 注册和配置、Sentinel 限流降级等能力,并支持规则变更毫秒级生效等热更新能力。
阿里巴巴重磅开源云原生网关: Higress
|
运维 Kubernetes Cloud Native
腾讯云私有云平台运维面试
根据会议将面试问题进行总结,很多问题感觉当时没回答好,这是为啥呢?应该还是不熟练吧,或者不善于表达。将次经历分享出来,大家多练练。
1184 0
|
监控 Java Go
深入探索 RUM 与全链路追踪:优化数字体验的利器
本文主要介绍了基于 OpenTeletemetry 与 W3C 协议构建端到端全链路的解决方案,同时探讨了 RUM 与端到端链路集成的最佳实践,希望可以为大家在生产环境落地应用提供一些参考。
1167 124
|
监控 Linux 数据处理
Linux grep技巧 结合awk查询
结合 `grep` 和 `awk`,可以实现灵活、高效的文本处理和数据分析。`grep` 用于快速过滤符合条件的行,`awk` 用于进一步处理和提取数据。这种组合使用在日志分析、数据处理和系统监控等场景中尤为常见。掌握这两者的基本用法和组合技巧,可以大大提升在 Linux 环境下的工作效率。
625 7
|
数据采集 监控 物联网
IOT/智能设备日志解决方案(1):概述
无论是物联网还是智能设备,规模都越来越大,产业分工也越来越明确,逐渐形成一整套的生态系统。而同时无论是物联网还是智能设备的生态系统中,日志数据永远是不可缺少的一个重要环节。
6520 0
IOT/智能设备日志解决方案(1):概述
|
Ubuntu Linux
Pi(树莓派/香蕉派/NanoPi/香橙派)Ubuntu换KDE桌面
由于自带的Ubuntu桌面太丑了~ 所以换KDE虽然不推荐搭建使用图形,但是有时候还是需要的~ 比如当作桌面系统使用的时候 KDE #添加PPA源 sudo add-apt-repository ppa:kubuntu-ppa/backpo...
4649 0
|
存储 监控 Go
破浪前行:iLogtail十年老架构浴火重生
本文主要介绍可观测数据采集器iLogtail的架构升级原因、目标及具体实践,同时分享了作者在此过程中收获的一些思考和成长。
|
运维 监控 搜索推荐
SRE方法论之服务质量目标
为了量化客户对服务可靠性的期望,找到客户对可靠性满意的点,我们需要制定针对用户的服务质量目标,并且努力去达到这个质量目标。在这个过程中,我们需要定义一些服务质量指标(SLI)、服务质量目标(SLO),以及服务质量协议(SLA)。这三项分别是指该服务最重要的一些基础指标、这些指标的预期值,以及当指标不符合预期时的应对计划。