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

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 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. 日志采集速度长期无法达到日志产生速度。
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
Maven之阿里云镜像仓库配置
方式一:全局配置可以添加阿里云的镜像到maven的setting.xml配置中,这样就不需要每次在pom中,添加镜像仓库的配置,在mirrors节点下面添加子节点: <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.
|
消息中间件 NoSQL Cloud Native
对Confluent一些解读
对Kafka母公司Confluent IPO、产品、技术一些看法
5877 0
对Confluent一些解读
|
机器学习/深度学习 人工智能 运维
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
3976 15
|
数据采集 监控 物联网
IOT/智能设备日志解决方案(1):概述
无论是物联网还是智能设备,规模都越来越大,产业分工也越来越明确,逐渐形成一整套的生态系统。而同时无论是物联网还是智能设备的生态系统中,日志数据永远是不可缺少的一个重要环节。
6274 0
IOT/智能设备日志解决方案(1):概述
|
11月前
|
JSON API 数据安全/隐私保护
1688 商品详情API接口(1688API 系列)
1688 商品详情 API 接口是电商应用开发中的关键工具,尤其适用于整合 1688 平台的商品数据。该接口提供商品的基础属性、价格、库存、图片、描述及商家信息等多维度数据,支持 HTTP GET 和 POST 请求方式。通过必填的商品 ID 及可选的语言参数等,开发者能精准获取并展示商品详情,提升用户体验和决策效率。响应数据包括商品名称、类目、品牌、价格区间、库存、图片列表、详细描述及商家信息等,帮助技术员高效集成接口,实现与 1688 平台的无缝对接。供稿者:Taobaoapi2014。
|
分布式计算 资源调度 Hadoop
Hadoop 2.0 与 Hadoop 1.x 有何不同?
【8月更文挑战第12天】
371 4
|
存储 关系型数据库 MySQL
PolarDB产品使用问题之如何进行私有化部署PolarDB-X
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
消息中间件 Java RocketMQ
教程:Spring Boot整合RocketMQ的配置与优化
教程:Spring Boot整合RocketMQ的配置与优化
|
机器学习/深度学习 人工智能 安全
Azure Databricks实战:在云上轻松进行大数据分析与AI开发
【4月更文挑战第8天】Databricks在大数据分析和AI开发中表现出色,简化流程并提高效率。文中列举了三个应用场景:数据湖分析、实时流处理和AI机器学习,并阐述了Databricks的一体化平台、云原生弹性及企业级安全优势。博主认为,Databricks提升了研发效能,无缝集成Azure生态,并具有持续创新潜力,是应对大数据挑战和加速AI创新的理想工具。
1490 1