使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统
随着时间的积累,日志数据会越来越多,当您需要查看并分析庞杂的日志数据时,可通过Filebeat+Kafka+Logstash+Elasticsearch采集日志数据到Elasticsearch中,并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。
一、背景信息
Kafka是一种分布式、高吞吐、可扩展的消息队列服务,广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。
在实际应用场景中,为了满足大数据实时检索的需求,您可以使用Filebeat采集日志数据,并输出到Kafka中。Kafka实时接收Filebeat采集的数据,并输出到Logstash中。输出到Logstash中的数据在格式或内容上可能不能满足您的需求,此时可以通过Logstash的filter插件过滤数据。最后将满足需求的数据输出到Elasticsearch中进行分布式检索,并通过Kibana进行数据分析与展示。简单流程如下。

二、操作流程
1、准备工作
完成环境准备,包括创建Elasticsearch、Logstash、ECS和消息队列 Kafka 版实例、创建Topic和Consumer Group等。
2、步骤一:安装并配置Filebeat
安装并配置Filebeat,设置input为系统日志,output为Kafka,将日志数据采集到Kafka的指定Topic中。
3、步骤二:配置Logstash管道
配置Logstash管道的input为Kafka,output为阿里云Elasticsearch,使用Logstash消费Topic中的数据并传输到阿里云Elasticsearch中。
4、步骤三:查看日志消费状态
在消息队列Kafka中查看日志数据的消费的状态,验证日志数据是否采集成功。
5、步骤四:通过Kibana过滤日志数据
在Kibana控制台的Discover页面,通过Filter过滤出Kafka相关的日志。
三、步骤一:安装并配置Filebeat
-
连接ECS服务器。
-
安装Filebeat。
本文以6.8.5版本为例,安装命令如下,详细信息请参见Install Filebeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.5-linux-x86_64.tar.gz tar xzvf filebeat-6.8.5-linux-x86_64.tar.gz -
执行以下命令,进入Filebeat安装目录,创建并配置filebeat.kafka.yml文件。
cd filebeat-6.8.5-linux-x86_64 vi filebeat.kafka.ymlfilebeat.kafka.yml配置如下。
filebeat.prospectors:- type: logenabled: truepaths:- /var/log/*.logoutput.kafka:hosts: ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092"]topic: estestversion: 0.10.2重要
当Filebeat为7.0及以上版本时,filebeat.prospectors需要替换为filebeat.inputs。
参数
说明
type
输入类型。设置为log,表示输入源为日志。
enabled
设置配置是否生效:
-
true:生效
-
false:不生效
paths
需要监控的日志文件的路径。多个日志可在当前路径下另起一行写入日志文件路径。
hosts
消息队列Kafka实例的单个接入点,可在实例详情页面获取,详情请参见查看接入点。由于本文使用的是VPC实例,因此使用默认接入点中的任意一个接入点。
topic
日志输出到消息队列Kafka的Topic,请指定为您已创建的Topic。
version
Kafka的版本,可在消息队列Kafka的实例详情页面获取。
重要
-
不配置此参数会报错。
-
由于不同版本的Filebeat支持的Kafka版本不同,例如8.2及以上版本的Filebeat支持的Kafka版本为2.2.0,因此version需要设置为Filebeat支持的Kafka版本,否则会出现类似报错:
Exiting: error initializing publisher: unknown/unsupported kafka vesion '2.2.0' accessing 'output.kafka.version' (source:'filebeat.kafka.yml'),详细信息请参见version。
-
-
启动Filebeat。
./filebeat -e -c filebeat.kafka.yml
四、步骤二:配置Logstash管道
- 进入阿里云Elasticsearch控制台的Logstash页面。
- 进入目标实例。
- 在顶部菜单栏处,选择地域。
- 在Logstash实例中单击目标实例ID。
-
在左侧导航栏,单击管道管理。
-
单击创建管道。
-
在创建管道任务页面,输入管道ID并配置管道。
本文使用的管道配置如下。
input {kafka {bootstrap_servers => ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-3-vpc.alikafka.aliyuncs.com:9092"]group_id => "es-test"topics => ["estest"]codec => json} } filter {} output {elasticsearch {hosts => "http://es-cn-n6w1o1x0w001c****.elasticsearch.aliyuncs.com:9200"user =>"elastic"password =>"<your_password>"index => "kafka‐%{+YYYY.MM.dd}"} }表 1. input参数说明 参数
说明
bootstrap_servers
消息队列Kafka实例的接入点,可在实例详情页面获取,详情请参见查看接入点。由于本文使用的是VPC实例,因此使用默认接入点。
group_id
指定为您已创建的Consumer Group的名称。
topics
指定为您已创建的Topic的名称,需要与Filebeat中配置的Topic名称保持一致。
codec
设置为json,表示解析JSON格式的字段,便于在Kibana中分析。
表 2. output参数说明 参数
说明
hosts
阿里云Elasticsearch的访问地址,取值为
http://<阿里云Elasticsearch实例的私网地址>:9200。说明
您可在阿里云Elasticsearch实例的基本信息页面获取其私网地址,详情请参见查看实例的基本信息。
user
访问阿里云Elasticsearch的用户名,默认为elastic。您也可以使用自建用户,详情请参见通过Elasticsearch X-Pack角色管理实现用户权限管控。
password
访问阿里云Elasticsearch的密码,在创建实例时设置。如果忘记密码,可进行重置,重置密码的注意事项及操作步骤请参见重置实例访问密码。
index
索引名称。设置为
kafka‐%{+YYYY.MM.dd}表示索引名称以kafka为前缀,以日期为后缀,例如kafka-2020.05.27。更多Config配置详情请参见Logstash配置文件说明。
如果您有多topic的数据同步需求,需要在kafka中添加新的topic,然后在Logstash的管道配置中添加input。示例如下:
input {kafka {bootstrap_servers => ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-3-vpc.alikafka.aliyuncs.com:9092"]group_id => "es-test"topics => ["estest"]codec => json }kafka {bootstrap_servers => ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-3-vpc.alikafka.aliyuncs.com:9092"]group_id => "es-test-2"topics => ["estest_2"]codec => json } } -
单击下一步,配置管道参数。

参数
说明
管道工作线程
并行执行管道的Filter和Output的工作线程数量。当事件出现积压或CPU未饱和时,请考虑增大线程数,更好地使用CPU处理能力。默认值:实例的CPU核数。
管道批大小
单个工作线程在尝试执行Filter和Output前,可以从Input收集的最大事件数目。较大的管道批大小可能会带来较大的内存开销。您可以设置LS_HEAP_SIZE变量,来增大JVM堆大小,从而有效使用该值。默认值:125。
管道批延迟
创建管道事件批时,将过小的批分派给管道工作线程之前,要等候每个事件的时长,单位为毫秒。默认值:50ms。
队列类型
用于事件缓冲的内部排队模型。可选值:
-
MEMORY:默认值。基于内存的传统队列。
-
PERSISTED:基于磁盘的ACKed队列(持久队列)。
队列最大字节数
请确保该值小于您的磁盘总容量。默认值:1024 MB。
队列检查点写入数
启用持久性队列时,在强制执行检查点之前已写入事件的最大数目。设置为0,表示无限制。默认值:1024。
警告
配置完成后,需要保存并部署才能生效。保存并部署操作会触发实例重启,请在不影响业务的前提下,继续执行以下步骤。
-
-
单击保存或者保存并部署。
-
保存:将管道信息保存在Logstash里并触发实例变更,配置不会生效。保存后,系统会返回管道管理页面。可在管道列表区域,单击操作列下的立即部署,触发实例重启,使配置生效。
-
保存并部署:保存并且部署后,会触发实例重启,使配置生效。
-
五、步骤三:查看日志消费状态
-
进入消息队列Kafka控制台。
-
参见查看消费状态,查看详细消费状态。
预期结果如下:

六、步骤四:通过Kibana过滤日志数据
- 登录目标阿里云Elasticsearch实例的Kibana控制台,根据页面提示进入Kibana主页。
-
创建一个索引模式。
-
在左侧导航栏,单击Management。
-
在Kibana区域,单击Index Patterns。
-
单击Create index pattern。
-
输入Index pattern(本文使用kafka-*),单击Next step。

-
选择Time Filter field name(本文选择@timestamp),单击Create index pattern。

-
-
在左侧导航栏,单击Discover。
-
从页面左侧的下拉列表中,选择您已创建的索引模式(kafka-*)。
-
在页面右上角,选择一段时间,查看对应时间段内的Filebeat采集的日志数据。

-
单击Add a filter,在Add filter页面中设置过滤条件,查看符合对应过滤条件的日志数据。

七、常见问题
Q:同步日志数据出现问题,管道一直在生效中,无法将数据导入Elasticsearch,如何解决?
A:查看Logstash实例的主日志是否有报错,根据报错判断原因,具体操作请参见查询日志。常见的原因及解决方法如下。
| 原因 | 解决方法 |
| Kafka的接入点不正确。 | 参见查看接入点获取正确的接入点。完成后,修改管道配置替换错误接入点。 |
| Logstash与Kafka不在同一VPC下。 | 重新购买同一VPC下的实例。购买后,修改现有管道配置。 说明 VPC实例只能通过专有网络VPC访问 云消息队列 Kafka 版。 |
| Kafka或Logstash集群的配置太低,例如使用了测试版集群。 | 升级集群规格,完成后,刷新实例,观察变更进度。升级Logstash实例规格的具体操作,请参见升配集群;升级Kafka实例规格的具体操作,请参见升级实例配置。 |
| 管道配置中包含了file_extend,但没有安裝logstash-output-file_extend插件。 | 选择以下任意一种方式处理:
|
相关文章:
使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统
随着时间的积累,日志数据会越来越多,当您需要查看并分析庞杂的日志数据时,可通过FilebeatKafkaLogstashElasticsearch采集日志数据到Elasticsearch中,并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。 一、背景信息 …...
后端接口错误总结
今天后端错误总结: 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean,因此这个位置必须打开,如果这个标签不打开就会报错 问题解决:这里的配置在application.yml文件中 kaf…...
将scut-seg标签转化成通用coco标签
行人实例分割 import json import osdef calculate_bounding_rectangle(coordinates):# 提取x和y坐标的列表x_coords [coord[0] for coord in coordinates]y_coords [coord[1] for coord in coordinates]# 计算矩形的左上角坐标min_x min(x_coords)min_y min(y_coords)# 计…...
阿里云添加端口
目录 阿里云添加端口的方法与步骤详解 一、登录阿里云控制台 二、创建安全组 三、添加入站规则 四、添加出站规则 五、完成添加端口操作 也可 1:搜索轻量级服务器 2:点击服务器 3:点击添加规则 4:保存即可 总结 阿里云…...
Linux组调度
为什么引入组调度可以参考这篇文章的讨论。核心原因是基础的调度算法都是基于任务的,如果用户A有10个任务,用户B只有1个任务,假设这些任务的优先级都相同,那么用户A得到的CPU时间将是用户B的10倍,这样从任务的角度看虽…...
深入解析JavaScript中的变量作用域与声明提升
JS中的变量作用域 背景: 之前做js逆向的时候,有一个网站很有意思,就是先出现对其赋值,但是后来的变量赋值没有对其发生修改,决定说一下js中的作用域问题. 全局作用域: 全局作用域的变量可以在任何…...
【Python】jupyter notebook(学习笔记)
Jupyter Notebook初见 1、Jupyter Notebook介绍 web版的ipython 编程、写文档、记笔记、展示 格式.ipynb 2、为什么使用Jupyter Notebook? 画图方面的优势:图像的生成不会堵塞后面代码的执行数据展示方面的优势:生成的数据可以保存在文件中 3、J…...
红色旅游AR互动体验将景区推向更广泛的市场
AR技术的出现使得各展厅观众可以在虚拟和现实的层面进行互动,利用AR和VR技术,将展览地点扩展到特定的虚拟领域,实现了"无触觉"交互体验,增强现实技术和展馆的对接更加激发人们了解新事物的兴趣。 一、AR景区:…...
VR全景:打造虚拟政务服务,打通服务群众“最后一公里”
大家对政务大厅的工作效率可能已经司空见惯,办事窗口少,而需要办理的群众和业务却很多,很多去政务大厅办理业务的,排队几个小时也是常有的。并且在传统政务服务中,办事流程一般都较为复杂、耗时长,往往需要…...
PyCharm 安装库时显示连接超时
在setting->python Interpreter 中用“” 安装库时,出现一个弹窗,提示信息如下: Error updating package list: Connect timed out 通过查阅资料,发现是镜像源的问题,具体的解决方案如下: 1. 更新一下…...
那些让我苦笑不得的 Bug:编码之路的坎坷经历
文章目录 1. CSS 中的样式“消失”问题2. JavaScript 的变量命名引发的混乱3. 时间格式的困扰4. 数据库查询条件引发的错误结语 🎉欢迎来到Java学习路线专栏~那些让我苦笑不得的 Bug:编码之路的坎坷经历 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨…...
http接口测试—自动化测试框架设计
一、测试需求描述 对服务后台一系列的http接口功能测试。 输入:根据接口描述构造不同的参数输入值(Json格式) 输出:字符串(传入的方式传入的字符串) http://localhost:8090/lctest/TestServer 二、程序设计…...
HTML 之常用标签的介绍
文章目录 h标签p标签a标签img 标签table、tr、td标签ul、ol、li 标签div 标签 h标签 <h> 标签用于定义 HTML 文档中的标题,其中 h 后面跟着一个数字,表示标题的级别。HTML 提供了 <h1> 到 <h6> 六个不同级别的标题,其中 &…...
数据恢复入门分享-启动扇区
启动扇区位于存储区的前端,一般显示如下 如果扇区数据丢失或者错误 存储器也就不能识别和数据存储了 关注我们,不定期分享互联网数字化的干货 #数据恢复##储存卡##启动扇区#...
解决Chrome无法自动同步书签
前提:(要求能正常访问google) 准备一个谷歌账号 安装Chrome浏览器 开启集装箱插件(或者其他能访问谷歌的工具) 步骤:(使用集装箱插件/能正常访问谷歌的其他工具) 下载安装使用“集…...
Java绘图-第19章
Java绘图-第19章 1.Java绘图类 1.1Graphics类 Graphics类是用于绘制图形的抽象类,它是java.awt包中的一部分。Graphics类提供了各种方法,可以在图形上绘制各种形状、文本和图像。这些方法包括画线、画矩形、画椭圆、画弧、绘制图像等。 1.2Graphics2…...
SpringBoot文件在线预览实现
kkFileView - 在线文件预览,一款成熟且开源的文件文档在线预览项目解决方案。 详细wiki文档:https://gitee.com/kekingcn/file-online-preview/wikis/pages 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md…...
cudnn安装
安装地址 cudnn安装地址:https://developer.nvidia.com/rdp/cudnn-download 安装 选择windows版本的下载,我这里选择的这个: 下载之后解压即可。 后续 后续:第一步 把cudnn的bin,include,lib三个文件…...
uni-app发布后iOS端页面背景图片上下滑动问题
问题分析 uni-app发布后iOS端页面背景图片会跟着上下滑动。 解决方案 在pages.json文件中添加配置"bounce": "none" {"pages": [{"path": "pages/login/login","style": {"navigationStyle": "…...
ctfshow 文件上传 151-161
文件上传也好久没做了。。 手很生了 151 前端绕过 只能上传png文件 使用bp抓包,修改文件名后缀为php 上传成功,发现文件上传路径 使用蚁剑连接 找到flag 152 152 后端校验 跟上一关一样 表示后面即使执行错误,也不报错 抓包修改文件…...
OpenClaw+Qwen2.5-VL-7B省钱方案:自建多模态接口替代GPT-4V
OpenClawQwen2.5-VL-7B省钱方案:自建多模态接口替代GPT-4V 1. 为什么选择本地多模态方案 去年我在开发一个智能内容管理工具时,频繁调用GPT-4V处理截图和文档解析,每月账单轻松突破2000元。最痛心的是,80%的简单图片识别任务其实…...
自动驾驶开发必备:Vscode+Git双神器组合的隐藏技巧(含分支管理秘籍)
自动驾驶开发必备:VscodeGit双神器组合的隐藏技巧(含分支管理秘籍) 在自动驾驶开发领域,高效的代码管理和协作流程是项目成功的关键因素。随着代码库规模不断扩大,团队规模持续增长,传统的版本控制方式往往…...
拆解Meta Ray-Ban同款主控:高通AR1芯片如何让AI眼镜‘听懂’你的手势和眼神?
高通AR1芯片如何赋能Meta Ray-Ban:从异构计算到交互革命 当你的眼镜能读懂眼神、响应手势,甚至预判你的需求时,科技与日常的边界便被重新定义。Meta Ray-Ban智能眼镜之所以成为现象级产品,核心秘密藏在仅指甲盖大小的高通AR1芯片中…...
2025届学术党必备的五大AI写作网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek DeepSeek身为新一代人工智能辅助写作工具,于学术论文撰写的整个流程里࿰…...
一键捕获完整网页:Full Page Screen Capture 高效解决方案
一键捕获完整网页:Full Page Screen Capture 高效解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-e…...
PyTorch 2.8镜像实战落地:教育机构AI教学平台(图文+视频+LLM)集成方案
PyTorch 2.8镜像实战落地:教育机构AI教学平台(图文视频LLM)集成方案 1. 教育AI平台的技术挑战与解决方案 现代教育机构在构建AI教学平台时面临三大技术难题:多模态内容生成、算力资源管理和教学场景适配。PyTorch 2.8深度学习镜…...
基于S7-300与组态王的智能药片装瓶机控制系统优化设计
1. 智能药片装瓶机控制系统的核心价值 在制药生产线上,药片装瓶环节看似简单却暗藏玄机。传统的人工装瓶方式不仅效率低下,还容易出现计数错误、交叉污染等问题。我曾在某药企亲眼见过工人因疲劳导致装瓶数量出错,最终整批药品不得不报废的案…...
实战指南:运用快马平台与mcp协议构建企业级智能数据分析系统
今天想和大家分享一个最近用InsCode(快马)平台实现的实战项目——基于MCP协议的企业级智能数据分析系统。这个项目特别适合需要整合多源数据的企业场景,整个过程让我深刻体会到MCP协议在复杂系统中的桥梁作用,以及快马平台如何让这类应用的开发部署变得异…...
游戏服务器检测扣除消耗防算数溢出的安全判断及解决方法
游戏服务器检测扣除消耗防算数溢出的安全判断及解决方法 数量 > (类型最大值 / 价格) 负数存在风险 价格 > (类型最大值 / 数量) || 价格 < (最小值 / 数量) 游戏服务器在处理道具消耗时需防止数值溢出问题。当检测扣除消耗时,应进行双重安全判…...
3步实现GitHub资源精准获取:DownGit带来的开发者效率革命
3步实现GitHub资源精准获取:DownGit带来的开发者效率革命 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 在日常开发工作中,每个开发者平均每周需要从GitHub获取3-5次代码资源…...
