当前位置: 首页 > backend >正文

filebeat原理架构

        Filebeat 是基于 Golang 开发的轻量级日志采集 Agent,其核心架构设计围绕高效、可靠地采集与转发日志数据,主要组件和工作流程如下:

‌一、核心架构组件‌
‌输入 (Inputs)‌

负责监控指定的日志源(如文件路径、日志文件)。
每个日志源由独立的 ‌Harvester(采集器)‌ 处理。
‌Harvester(采集器)

‌职责‌:逐行读取单个日志文件内容,将数据发送至处理引擎(Libbeat)。
‌特性‌:
每个文件分配一个独立 Harvester,确保并发采集。
跟踪文件偏移量(offset),记录在注册表(registry)文件中。
支持文件旋转(Log Rotation),新文件会被重新识别并采集。
通过 close_inactive 参数控制文件句柄释放(默认 5 分钟未更新则关闭)。
‌注册表 (Registry)

‌作用‌:持久化存储文件状态(如路径、inode 号、偏移量)。
‌位置‌:默认存储在 .filebeat/registry 目录。
‌可靠性‌:重启时恢复采集位置,避免重复或遗漏数据。
‌处理引擎 (Libbeat)

‌功能‌:
聚合多个 Harvester 的事件。
实现数据批量处理、压缩、加密。
管理输出队列和重试机制。
‌输出 (Outputs)‌

支持 Elasticsearch、Logstash、Kafka 等目标。
采用 ‌背压敏感协议(Backpressure-sensitive):下游拥堵时自动降速,避免资源耗尽。
‌二、工作流程
‌启动阶段‌:

        加载配置的输入(Inputs),扫描指定路径匹配日志文件。
根据注册表恢复历史采集状态。
‌采集阶段‌:
        为每个新文件启动独立的 Harvester,逐行读取增量内容。
读取数据发送至 Libbeat 引擎。
‌处理与转发‌:
        Libbeat 批量聚合事件,压缩后发送至配置的输出端(如 Elasticsearch)。
成功发送后更新注册表的文件偏移量。
异常处理‌:
        输出失败时自动重试,确保 ‌“至少一次投递” (At Least Once)。
网络恢复后继续传输缓存数据。
‌三、关键特性
‌轻量化‌:资源占用低(CPU/内存可忽略),适合大规模部署。
‌多行日志处理‌:自动合并跨行事件(如 Java 异常栈)。
‌结构化日志支持‌:解析 JSON 格式日志字段。
‌模块化‌:内置 Nginx、MySQL 等日志解析模块,简化配置。
‌无缝集成 ELK Stack‌:与 Elasticsearch、Logstash、Kibana 协同工作。
‌四、典型应用架构
text
Copy Code
日志源 → Filebeat(采集) → Kafka(缓冲) → Logstash(过滤) → Elasticsearch(存储) → Kibana(可视化)  
        此架构通过 Kafka 解耦采集与处理,应对高吞吐场景,保障系统稳定性。

‌总结‌:Filebeat 通过 Harvester 实时跟踪文件变化、Registry 确保状态持久化、Libbeat 实现高效聚合与背压控制,提供低资源占用的可靠日志采集方案,是 ELK/EFK 体系中核心的轻量级日志收集器。

http://www.xdnf.cn/news/13318.html

相关文章:

  • css~word-break属性
  • 核方法、核技巧、核函数、核矩阵
  • 模型训练-关于token【低概率token, 高熵token】
  • 【Python】 -- 趣味代码 - 飞船大战游戏
  • DiffBP: generative diffusion of 3D molecules for target protein binding
  • 智慧园区综合运营管理平台(SmartPark)和安全EHS平台的分工与协作
  • 电动汽车VCU扭矩控制模式分类方法
  • 【javascript】泡泡龙游戏中反弹和查找匹配算法
  • Jaeger开源分布式追踪平台深度剖析(三)Jaeger默认存储Badger原理剖析
  • 网格布局示例代码解析
  • (三)总结(缓存/ETag请求头)
  • CentOS7下的Redis部署
  • XS2105M IEEE 802.3af 兼容、受电设备接口控制器
  • Day27 函数专题2:装饰器
  • 从中科大镜像获取linux内核5.10.168的git方法
  • Python 字符串、字节串与编解码:数据转换的奥秘
  • 【Redis/1-前置知识】分布式系统概论:架构、数据库与微服务
  • 【力扣数据库知识手册笔记】索引
  • java--怎么定义枚举类
  • 状态模式:对象行为的优雅状态管理之道
  • 图像直方图分析:全面掌握OpenCV与Matplotlib绘制技巧
  • 《通信之道——从微积分到 5G》读书总结
  • 最短回文串解题思路分享
  • 基于大模型预测的输尿管上段积水诊疗方案研究报告
  • 【TinyWebServer】HTTP连接处理
  • 【位运算】消失的两个数字(hard)
  • websocket实践
  • 通过Netplan为Ubuntu服务器新增DNS以解析内部域名
  • 设计模式-适配器模式
  • 微信小程序 - 手机震动