Filebeat技术栈总结

news2024/9/23 5:35:08

filebeat 是一个轻量型日志采集器,本质上是一个 agent 。不依赖于任何应用,可以安装在任何节点上,可单独使用 Filebeat 并根据配置读取对应位置的日志进行上报和搜集。

filebeat 内置了常用的 output 组件,例如 kafka、ElasticSearch、redis 等,也可以输出到 console 和 file 。可以利用现有的 output 组件,将日志进行上报。也可以自定义 output 组件,让 Filebeat 将日志转发到我们想要的地方。

原理

filebeat 由两个主要组件组成:harvester 和 prospector。

harvester:采集器,负责读取一个文件的内容。它会逐行读取文件内容,并将内容发送到 output 指定的目的地。

prospector:查找器,负责管理 harvester 并找到所有需要读取的文件源。比如类型是日志,prospector 就会遍历制定路径下的所有匹配要求的文件。

Filebeat 如何记录文件状态

filebeat 将文件状态记录在文件中(默认在/var/lib/filebeat/registry)。此状态可以记住 harvester 收集文件的偏移量。若连接不上输出设备,如 ES、Kafka 等,filebeat 会记录发送前的最后一行,并再可以连接的时候继续发送。

filebeat 在运行的时候 prospector 状态会被记录在内存中。

当 filebeat 重启的时候,利用 registry 记录的状态来进行重建,用来还原到重启之前的状态。每个 prospector 会为每个找到的文件记录一个状态,对于每个文件,filebeat 存储唯一标识符以检测文件是否先前被收集,以此确保数据不丢失。

Filebeat 如何保证事件至少被输出一次

filebeat 之所以能保证事件至少被传递到配置的输出一次,没有数据丢失,是因为 filebeat 将每个事件的传递状态保存在文件中。

在未得到输出方确认时,filebeat 会尝试一直发送,直到得到回应。若 filebeat 在传输过程中被关闭,则不会再关闭之前确认所有时事件。

任何在 filebeat 关闭之前为确认的时间,都会在 filebeat 重启之后重新发送。这可确保至少发送一次,但有可能会重复。可通过设置 shutdown_timeout 参数来设置关闭之前的等待事件回应的时间(默认禁用)。

Filebeat 工作流程

当开启 filebeat 程序的时候,它会启动一个或多个查找器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件。filebeat 启动采集器(harvester),每一个采集器进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后 filebeat 会发送集合的数据到你指定的地点。


配置

由于安装简单,在此直接略过。

filebeat.yml 是 filebeat 的配置文件,配置文件的路径会因为你安装方式的不同而变化。

关于详细配置请参考官网:

filebeat.yml 文件格式配置 
filebeat 配置说明

重要配置说明

filebeat.prospectors

文件监视器,用于指定需要关注的文件。

filebeat.inputs:
  # type为 log 类型,表示收集日志文件数据。
- type: log
  id: filebeat-user-log
  enabled: true
  # paths:是一个文件路径数组,这里扫描/data/logs/目录下所有 .log 文件。
  paths:
    - /data/logs/*.log
  # 定义日志标签,注意:不同的服务使用不同的标签
  tags: ["user-log"]

output.elasticsearch

如果你希望使用 filebeat 直接向 elasticsearch 输出数据,需要配置 output.elasticsearch 。

output.elasticsearch:
  hosts: ["192.168.200.11:9200"]
  #username: "elastic"
  #password: "elastic"

如果你希望使用 filebeat 直接向 kafka 输出数据,需要配置 output.kafka 。

output.kafka:
  enable: true
  hosts: ["192.168.200.11:9092"]
  topic: "elk_topic"

output.logstash

如果你希望使用 filebeat 向 logstash 输出数据,然后由 logstash 再向 elasticsearch 输出数据,需要配置 output.logstash。

output.logstash:
  hosts: ["192.168.200.11:5044"]

此外,还需要在 logstash 的配置文件(logstash.conf)中指定 beats input 插件:

input {
# 配置接收 filebeat 数据源,监听端口为5044,Filebeat 中的 output.logstash 地址保持跟这里一致
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://192.168.200.11:9200"]
    index => "elk-%{+YYYY.MM}"
    # user => "elastic"
    # password => "changeme" 
  }
}

相比于向 elasticsearch 输出数据,更推荐向 logstash 输出数据。因为 logstash 和 filebeat 一起工作时,如果 logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。

一旦拥塞得到解决,fileBeat 将恢复到原来的速度并继续传播。这样,可以减少管道超负荷的情况。


setup.kibana

如果打算使用 Filebeat 提供的 Kibana 仪表板,需要配置 setup.kibana 。

setup.kibana:
  host: "192.168.200.11:5601"


setup.dashboards

filebeat 附带了示例 kibana 仪表板。在使用仪表板之前,您需要创建索引模式 filebeat- *,并将仪表板加载到 kibana 中。为此,您可以运行 setup 命令或在 filebeat.yml 配置文件中配置仪表板加载。

为了在 Kibana 中加载 Filebeat 的仪表盘,需要在 filebeat.yml 配置中启动开关:

setup.dashboards.enabled: true

更多详情请见:Configure Kibana dashboard loading

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑硬盘空间大量被占用怎么办?

通常情况下,电脑硬盘空间会被系统文件、已安装的应用程序或个人文件、备份、病毒或其他恶意软件或其他未知文件占用。那我们应该怎样解决硬盘空间大量被占用的问题呢? 方法1:通过存储功能查看内容并释放空间 您可以通过Windows 11/10中的存储…

华为外包待了一年,我离职了...

这次来聊一个大家可能也比较关心的问题,那就是就业城市选择的问题。而谈到这个问题,就不可避免地会谈到一些关于:机会?技术氛围?跳槽?薪资水平?等等一系列问题。 正好,这也是大家所…

滑动窗口思想(数组)-python

文章目录 前言一、思想二、相关题目讲解1.长度最小的子数组(leetcode 209.)2.水果成篮(leetcode 904.)3.最小覆盖子串(leetcode 76.) 三、 模拟行为螺旋矩阵II(leetcode.59)leetcode 54.螺旋矩阵剑指Offer 29. 顺时针打印矩阵 总结 前言 滑动窗口的精妙之处在于根据当前子序列…

物业管理系统对小区物业的作用太重要了,零代码平台改变原有认知

小区物业处作为业主与小区的沟通场所,经常会遇到缺乏专业人才,导致管理不善、服务不到位,难以为业主提供良好的服务体验,那么拥有一款成熟稳定的物业管理系统就成了物业管理处的重要选择,不仅能为业主带来更好的服务体…

悦灵犀-全新的智能AI工具

最近一段时间,人工智能再次成为人类创新的焦点,不得不说,人工智能正在以一种全新的方式改变人们的生活,这是一个以大模型为核心的人工智能新时代,大模型的出现让千行百业将迎来新的机遇。 悦享星光作为国内高新技术企…

Zinx框架学习 - 构建最基础的Server

Zinx - V0.1 构建最基础的Server Zinx的框架结构: 整体思路: 客户端发送请求到服务器端,服务端会有一个Goroutine专门处理listenner和监听这个过程,然后有客户端连接过来之后会启动一个客户端处理Goroutine,这个Goro…

深度学习 - 52.推荐场景的多样性与 MMR [Maximal Marginal Relevance] 简介与 Python 实现

目录 一.引言 二.多样性 三.MMR 流程 1.标准 MMR 2.窗口 MMR 四.基于向量内积相似度的 MMR Python 实现 1.模拟用户 rank 结果 2.向量内积计算 MRi 2.1 获取向量计算 max sim 2.2 argmax 获取最优 MRi item 3.MMR 测试 4.MMR 完整代码 五.总结 一.引言 MMR - Ma…

记一次k8s节点上出现node.kubernetes.io/disk-pressure污点的问题

目录 问题描述 原因分析: 解决方案: 其他问题 问题描述 k8s部署时pod一直属于Pending状态,也就是说pod未调度到k8s节点上 原因分析: 通过以下命令查看下pod kubectl get pod 以上命令可以看到各个pod的状态&#xff0c…

【商城后台管理系统】项目初始化(UmiJS)

目录 一、运行时配置 1.1 配置方式 1.2 常用配置项 1.3 关于运行时配置说明 二、使用Umi UI 2.1 Umi UI的特性 2.2 项目中安装Umi UI 2.3 使用Umi UI 三、Umi JS总结 3.1 路由状态管理 3.2 配置代理 3.3 封装requset 一、运行时配置 运行时配置和配置的区别是他跑…

Geohash算法原理及实现

最近需要实现一个功能,查找车辆附近的加油站,如果车和加油站距离在200米以内,则查找成功。 加油站数量肯定不小,能否缩小查找范围,否则以遍历形式,效率肯定高不了。 Geohash算法就是将经纬度编码&#xf…

又名管道和无名管道

一、进程间通信(IPC,InterProcess Communication) 概念:就是进程和进程之间交换信息。 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共…

数字化时代,低代码+进销存管理系统让你省时省力

进销存系统是一种用于管理企业物资流动和库存的软件系统,可以帮助企业优化物资管理过程,提高效率,减少成本,从而提升企业的盈利能力。本文将详细介绍进销存系统的定义、功能、好处以及如何选择适合自己企业的进销存系统&#xff0…

【嵌入式烧录/刷写文件】-2.6-剪切/保留Intel Hex文件中指定地址范围内的数据

案例背景: 有如下一段HEX文件,保留地址范围0x9140-0x91BF内的数据,删除地址范围0x9140-0x91BF外的数据。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485868788898A…

「ACL 2023」发榜!火山语音推出业内首个借助视频信息的端到端语音翻译模型

日前 ACL 2023的论文录用结果公布,火山语音团队多篇论文成功入选,内容涵盖音频合成、歌声合成以及语音翻译等多个前沿技术领域的创新突破。ACL(Annual Meeting of the Association for Computational Linguistics)每年由国际计算语…

Nginx服务器及其配置与应用

目录 一、Nginx的特点 1.高并发 2.低消耗 3.低消耗 4.高可用 5.高扩展 6.Nginx与Apache的差异 7.Nginx与Apache的区别 二、Linux中的I/O 1.I/O介绍 2.同步/异步 3.阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态 三、编译安装Nginx服务 1.关闭防火墙&#…

SOLIDWORKS安装使用说明网络版

安装准备 系统要求:参考https://www.solidworks.com/sw/support/SystemRequirements.htmlSolidWorks 2017 是最蕞后一个支持win server 2008 R2 sp1的软件。 SolidWorks 2018支持win server 2012及以上的系统,但不支持win server 2019 SolidWorks 2019…

HNU-计算机系统-CSAPP作业答案

计算机系统CSAPP课后作业答案 计科210X wolf 202108010XXX 第2章 2.61 解: (!~x) || (!x) || (!~(x|0x00ffffff)) || (!(x&0x000000ff)) 或者: (!~x) || (!x) || (!~(x>>24)) || (!(x<<24)) 2.71 A. 实现的是逻辑位移,扩展后前面全是0,不符合符号扩…

Linux常见命令学习

目录 1.ls2.pwd3.cd (change directory)4.touch&&cat&&echo5.mkdir&&rm6.cp&&mv7.man8.less&&vim 1.ls 列出当前目录中包含的文件和目录~ 类似于在windows上双击某个目录&#xff0c;把他打开&#xff0c;看看目录里有啥~ ls -> l…

企业内容管理丨如何解决企业客户签收回执慢,缩短回款周期?

方案应用领域及行业 本方案适用于快消品行业的供应链管理和财务管理 方案应用背景 由于动产物权的政策变化&#xff0c;物权转移从交付时才开始发生效力。也就是说&#xff0c;新政之前&#xff0c;企业发出商品&#xff0c;开出销售发票&#xff0c;即可申请货物回款&#…

C# webapi接口传输byte[]数据,报错:415 Unsupported Media Type

最近需要做上传文件操作。 由于历史原因&#xff0c;以前的接口使用了这样的入参&#xff1a; 代码如下&#xff1a; /// <summary> /// 上传文件 /// </summary> [HttpPost] public Result<UploadImageResult> UploadFile(byte[] bytes, string extName, s…