Filebeat技术栈总结
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: logid: filebeat-user-logenabled: 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: truehosts: ["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
相关文章:
Filebeat技术栈总结
filebeat 是一个轻量型日志采集器,本质上是一个 agent 。不依赖于任何应用,可以安装在任何节点上,可单独使用 Filebeat 并根据配置读取对应位置的日志进行上报和搜集。 filebeat 内置了常用的 output 组件,例如 kafka、ElasticSe…...
【App自动化测试】(十六)健壮性测试工具——Android Monkey
目录 1. 介绍2. 安装3. Monkey的使用4. money常用命令5. 常用事件类型参数6. Monkey使用参考 1. 介绍 Monkey是一个在模拟器或设备上运行的程序,用于生成用户事件的伪随机流。 为什么要使用Monkey这个自动化遍历工具? Monkey解决了一个测试痛点ÿ…...
实现第一个内核程序的Hello World
背景 在内核的开发中,总要先入个门。那么就要来编写第一个内核程序 入门 一个 module_init 程序是Linux内核模块的一部分,通过module_init 方法就能将程序载入内核。 module_init 方法需要以下步骤 编写module_init 的代码,并将其保存为…...
python基于协同过滤推荐算法的电影观后感推荐管理系统的设计
本课题所设计的影单管理系统,使用B/S架构,Python语言进行开发,它的优点代码不能从浏览器查看,保密性非常好,比其他的影单管理更具安全性。Python还容易修改和调试,毕竟影视是在不断发展过程中,难…...
Vue——状态管理库Pinia
写在前面:本文参考小满大牛的pinia专栏 一、Vuex与Pinia Vuex 和 Pinia 均是 Vue.js 的状态管理库,它们为 Vue 应用程序提供了一种集中式的、可预测的状态管理解决方案。 Vuex 是 Vue.js 官方推荐的状态管理库之一。它的核心概念包括 state、mutation…...
Linux:忘记root密码解决办法
如果你是虚拟机只要将光盘镜像连接到虚拟机上,以光盘iso镜像启动 如果你是真机或服务器那将实体u盘或实体光盘连接至设备并且以连接的设备启动 开机时候打断开机 使用 (u盘|光盘)引导启动 troubleshooting rescue a centos system 输入 1…...
Dockerfile(4) - RUN 指令详解
RUN 运行命令 shell 形式 命令在 shell 中运行Linux 上默认为 /bin/sh -cWindows 上 cmd /S /C RUN <command> exec 形式 RUN ["executable", "param1", "param2"] 必须双引号,不能是单引号 两种写法的实际栗子 RUN …...
一个完整的APP定制开发流程是怎样的?
随着移动互联网的发展,越来越多的 APP应用软件进入人们的生活,让我们的生活更便捷、更舒适。而随着互联网技术的进步,移动互联网应用软件开发行业也越来越成熟,为了适应市场需求,各种功能强大、性能良好的 APP应用软件…...
【数据结构】24王道考研笔记——线性表
线性表 目录 线性表定义和基本操作顺序表静态顺序表动态顺序表 链表单链表不带头结点:带头结点: 双链表循环链表循环单链表:循环双链表: 静态链表 顺序表链表比较逻辑结构:存储结构:基本操作: 定…...
【Linux C】基于树莓派/香橙派的蓝牙服务端——支持多蓝牙设备接入
一、需求 在树莓派/香橙派上利用开发板自带的蓝牙作为一个蓝牙服务端(主机),允许外来设备(从机)通过蓝牙接入进行通信,通信格式为透传方式;采用的编程语言为Linux C 二、环境准备 bluez安装 …...
鸿蒙App开发选择Java还是JavaScript?
众所周知, Java和 JavaScript是两种编程语言,这两种语言在不同的环境中都有许多用途。在鸿蒙 App开发中, Java和 JavaScript是两种常见的编程语言,它们都具有广泛的应用,并且都有其独特的优势。下面我们将就这两种编程…...
【Android】CountDownTimer的使用
android中怎么实现倒计时 在Android中,可以使用CountDownTimer类来实现倒计时。以下是一个简单的示例: javaCopy new CountDownTimer(30000, 1000) {public void onTick(long millisUntilFinished) {// 每次倒计时间隔1秒,更新UI上的倒计时剩…...
Linux :: 【基础指令篇 :: 文件及目录操作:(1)】:: ls :: 查看指定目录下的内容
前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C 入门到入土!!!学习合集Linux 从命令到网络再到内核!学习合集 目录索引&am…...
【商品详情 +关键词搜索】API 接口系列
首先,大家要到官方主页去申请一个 appkey,这个是做什么用的呢?App Key 是应用的唯一标识,TOP 通过 App Key 来鉴别应用的身份。AppSecret 是 TOP 给应用分配的密钥,开发者需要妥善保存这个密钥,这个密钥用来…...
RabbitMQ学习-发布确认高级
发布确认springboot版本 确认机制方案: 代码架构图: 配置文件: 在application.properties全局配置文件中添加spring.rabbitmq.publish-confirm-type属性,这个属性有以下几种值 none:禁用发布确认模式(默认)0 correlated:发布消…...
重载和内联函数
函数的默认参数 默认参数是指调用函数的时候,如果不写实参,那么将使用一个缺省值。 使用默认参数可以使你的函数更加灵活,同时减少了在不同上下文中为相同的参数重复编写相同的代码的需要。 return_type function_name(data_type paramete…...
从零学算法
198.你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额…...
《Linux0.11源码解读》理解(四) head之重新设置IDT/GDT
上节提到,现在cs:ip指向0地址,此处存储着作为操作系统核心代码的system模块,是由head.s和 main.c以及后面所有源代码文件编译链接而成。head.s(以下简称head)紧挨着main.c,我们先执行head。 重新设置内核栈 _pg_dir: _startup_3…...
<SQL>《SQL命令(含例句)精心整理版(4)》
《SQL命令(含例句)精心整理版(4)》 14 数据库对象14.1 表14.2 视图14.3 存储过程14.3.1 概念14.3.2 创建存储过程14.3.2 调用存储过程14.3.3 DbVisualizer工具中调用方法14.3.3 DB2命令行脚本调用方法14.3.4 DB2中两个存储过程报错…...
C++死锁
死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的状态称为死锁。 死锁通常发生…...
深度评测2026年TOP10降AI率平台:找到导师推荐的“无痕降AIGC”终极方案
AI写作工具的兴起让论文写作和内容创作变得前所未有的高效,许多学生和职场人都开始依赖这类工具来提升效率、节省时间。然而,随着技术发展,高校、平台和期刊对AI生成内容的检测标准也在不断提高,越来越多的用户发现,自…...
投影仪的分辨率不高,仅为1024*768的分辨率,而笔记本电脑2560×1600(2.5K)分辨率。——如果采用扩展屏复制笔记本电脑分辨率,发现那个投影仪投影出的字很小,且看不清。 将笔记本电脑的
投影仪的分辨率不高,仅为1024*768的分辨率,而笔记本电脑25601600(2.5K)分辨率。——如果采用扩展屏复制笔记本电脑分辨率,发现那个投影仪投影出的字很小,且看不清。 将笔记本电脑的分辨率也改为1024*768的分辨率,投影仪字体大小会放大才看的清楚,但是软件无法全部显…...
3分钟快速指南:如何使用Forza Painter将任何图片变成《极限竞速》专业涂装
3分钟快速指南:如何使用Forza Painter将任何图片变成《极限竞速》专业涂装 【免费下载链接】forza-painter Import images into Forza 项目地址: https://gitcode.com/gh_mirrors/fo/forza-painter 还在为《极限竞速:地平线》系列游戏中复杂的车辆…...
告别PyTorch依赖:手把手教你用C++ CUDA实现LeNet推理,从Python模型导出到C++部署全流程
从PyTorch到C CUDA:工业级LeNet模型部署全流程实战 在深度学习模型开发中,Python生态提供了丰富的训练工具,但生产环境往往需要高性能的C实现。本文将完整演示如何将PyTorch训练的LeNet模型部署到C CUDA环境,涵盖模型导出、内存管…...
揭秘FPGA内部世界:PrjXRay开源工具完整指南
揭秘FPGA内部世界:PrjXRay开源工具完整指南 【免费下载链接】prjxray Documenting the Xilinx 7-series bit-stream format. 项目地址: https://gitcode.com/gh_mirrors/pr/prjxray 你是否曾好奇FPGA芯片内部的神秘世界?那些二进制位流背后究竟隐…...
通过Taotoken接入Claude Code解决编程助手Token不足与封号困扰
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken接入Claude Code解决编程助手Token不足与封号困扰 许多开发者将Claude Code作为日常编程的得力助手,用于代…...
AI Agent在体脂管理中的临床级精度突破:基于3276名受试者的双盲对照试验(FDA Class II类器械预审中)
更多请点击: https://kaifayun.com 第一章:AI Agent在体脂管理中的临床级精度突破:基于3276名受试者的双盲对照试验(FDA Class II类器械预审中) 临床验证设计与核心指标达成 本研究采用多中心、随机、双盲、平行对照…...
CAP 与 BASE:分布式系统取舍原则
CAP 和 BASE 不是为了背概念,而是为了指导分布式系统在网络异常、数据同步和服务可用之间怎么取舍。尤其是分布式事务,最终都绕不开强一致和最终一致的选择。 一句话概括:分布式系统里 P 几乎无法避免,所以真正的取舍通常发生在 C…...
KMS_VL_ALL_AIO技术深度解析:企业级Windows与Office智能激活架构设计
KMS_VL_ALL_AIO技术深度解析:企业级Windows与Office智能激活架构设计 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在Windows和Office软件授权管理领域,KMS_VL_ALL_AIO…...
FANUC机器人摆焊+电弧跟踪实战:从参数详解到避坑指南(ROBOGUIDE仿真)
FANUC机器人摆焊与电弧跟踪协同优化实战解析 在厚板焊接与复杂轨迹加工领域,正弦摆焊与电弧跟踪技术的协同应用已成为提升焊接质量的关键手段。资深工程师们常常面临这样的挑战:如何在坡口焊接中精准配置那二十余项电弧传感器参数,使机器人既…...
