Filebeat日志采集与ELK+Kafka缓冲架构部署
一、Filebeat采集Elasticsearch集群日志1.1 部署下载安装filebeat[rootserver1 ~]# rpm -ivh filebeat-7.6.1-x86_64.rpm[rootserver1 ~]# cd /etc/filebeat/[rootserver1 filebeat]# cd modules.d/将elasticsearch允许打开启用Elasticsearch内置模块[rootserver1 modules.d]# filebeat modules enable elasticsearchEnabled elasticsearch进入这个文件后可以看到文件上方的链接复制在浏览器访问会有指导文件可以按照指导文件[rootserver1 modules.d]# vim elasticsearch.ymlElasticsearch module | Filebeat Reference [7.6] | Elastic修改elasticsearch.yml模块配置打开var.paths模块并写上指导文件中的内容记得有两个缩进格式很重要[rootserver1 modules.d]# cd ..[rootserver1 filebeat]# lsfields.yml filebeat.reference.yml filebeat.yml modules.d修改文件配置输出目标使集群日志能够输出一般统一节点[rootserver1 filebeat]# vim filebeat.yml[rootserver1 modules.d]# systemctl enable --now filebeat指定采集到的日志发送到ES集群开启安全认证时必须填写elastic账号密码否则无法写入索引。安全认证在上一篇博客记得xpack认证时的密码配置好一台后将文件拷贝给其他两个节点将配置好的模块文件远程拷贝至另外两台 ES 服务器之后在 server2、server3 启动 filebeat实现三台节点日志全部采集。[rootserver1 modules.d]# scp elasticsearch.yml server2:/etc/filebeat/modules.d/[rootserver1 modules.d]# scp elasticsearch.yml server3:/etc/filebeat/modules.d此时访问浏览器http://192.168.159.155:5601可以看到有日志1.2 问题有一台节点老是下线将以下文件中的打开锁定ES进程内存不让操作系统把内存交换到swap磁盘swap会严重拖慢ES性能加剧节点失联。并将内存改为512m然后三台节点都要一样[rootserver3 elasticsearch]# vim /etc/elasticsearch/elasticsearch.yml[rootserver3 elasticsearch]# vim /etc/elasticsearch/jvm.options然后记得一个一个修改重新启动否则很有可能起不来修改好后集群状态稳定二、ELKKafka日志缓冲Kafka是分布式高吞吐消息中间件生产者向主题发送消息消息存储在分区并支持副本保障数据安全消费者以消费组形式订阅拉取数据依靠偏移量记录消费位置。它主要用于系统异步解耦、流量削峰、采集日志与流转实时数据流支持消息持久化与历史数据回溯适合海量流式数据传输常搭配大数据实时计算组件使用。基本架构Filebeat采集→ Kafka缓冲→ Logstash处理→ Elasticsearch存储→ Kibana可视化2.1 部署kafka新加三台虚拟机server6、server7、server8做kafka三台虚拟机都是一样的操作安装JDKKafka运行依赖JVM[rootserver6 ~]# rpm -ivh jdk-17.0.17_linux-x64_bin.rpm[rootserver6 ~]# java -version解压部署 Kafka[rootserver6 ~]# tar zxf kafka_2.12-3.9.1.tgz -C /opt[rootserver6 ~]# mv /opt/kafka_2.12-3.9.1 /opt/kafka[rootserver6 ~]# cd /opt/kafka/config/kraft[rootserver6 kraft]# cp server.properties{,.bak} # 备份原始配置[rootserver6 kraft]# mkdir /opt/kafka/logs # 创建Kafka数据存储目录批量分发安装包到另外两台节点server7、server8 执行相同解压、创建目录操作。[rootserver6 ~]# scp jdk-17.0.17_linux-x64_bin.rpm server7:[rootserver6 ~]# scp jdk-17.0.17_linux-x64_bin.rpm server8:[rootserver6 ~]# scp kafka_2.12-3.9.1.tgz server7:[rootserver6 ~]# scp kafka_2.12-3.9.1.tgz server8:修改kraft模式配置文件server.propertiesrootserver6 ~]# cd /opt/[rootserver6 opt]# cd kafka/[rootserver6 kafka]# cd config/[rootserver6 config]# cd kraft/[rootserver6 kraft]# vim server.propertiesserver7、server8 修改node.id、advertised.listeners内IP其余配置保持一致。process.rolesbroker,controller# 当前节点同时承担数据节点broker集群控制器controllerKRaft模式node.id156# 集群内节点唯一IDserver7改为157server8改为158controller.quorum.voters156192.168.159.156:9093,157192.168.159.157:9093,158192.168.159.158:9093# 集群控制器投票节点列表参与选主listenersPLAINTEXT://:9092,CONTROLLER://:9093# 本机监听端口inter.broker.listener.namePLAINTEXTadvertised.listenersPLAINTEXT://192.168.159.156:9092,CONTROLLER://192.168.159.156:9093# 对外广播访问地址其他机器通过此地址连接每台机器修改为本机IPcontroller.listener.namesCONTROLLERlistener.security.protocol.mapCONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSLnum.network.threads3num.io.threads8socket.send.buffer.bytes102400socket.receive.buffer.bytes102400socket.request.max.bytes104857600log.dirs/opt/kafka/logs # 消息持久化存储目录num.partitions3 # Topic默认分区数num.recovery.threads.per.data.dir1offsets.topic.replication.factor3 # 偏移量主题副本数集群3台设3保证高可用transaction.state.log.replication.factor3transaction.state.log.min.isr1log.retention.hours168 # 消息默认保留7天log.segment.bytes1073741824log.retention.check.interval.ms300000生成集群唯一ID仅在一台节点执行[rootserver6 kraft]# KAFKA_CLUSTER_ID$(/opt/kafka/bin/kafka-storage.sh random-uuid)[rootserver6 kraft]# echo ${KAFKA_CLUSTER_ID}输出一串UUID三台节点格式化数据都使用同一个ClusterID。格式化Kafka数据目录三台全部执行只需要格式化一次重复格式化会清空所有数据。三台节点格式化数据都使用同一个ClusterID[rootserver6 kraft]# /opt/kafka/bin/kafka-storage.sh format -t 1GROlYMiRkWVzED10qJ0tw -c /opt/kafka/config/kraft/server.properties后台启动Kafka集群三台一次启动[rootserver6 kraft]# /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties[rootserver6 kraft]# jps #验证进程创建测试主题testtopics[rootserver6 kraft]# /opt/kafka/bin/kafka-topics.sh --create --topic testtopics --bootstrap-server localhost:9092 --replication-factor 3 --partitions 3[rootserver7 kraft]# /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092功能测试生产者输入内容消费者正常接收Kafka 集群通信正常。[rootserver6 kraft]# /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopics[rootserver8 kraft]# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopics --from-beginning[rootserver7 kraft]# /opt/kafka/bin/kafka-topics.sh --bootstrap-server server7:9092,server8:9092,server9:9092 --topic testtopics --describe2.2 配置Filebeat日志输出到Kafka修改filebeat.yml[rootserver5 filebeat]# vim filebeat.ymlhostskafka集群地址列表topic日志发送到 kafka 的主题apache-logsrequired_acks:1broker写入本地日志即返回兼顾性能与可靠性compression:gzip开启压缩减少网络流量。[rootserver5 filebeat]# filebeat test config -c /etc/filebeat/filebeat.yml[rootserver5 filebeat]# filebeat test output -c /etc/filebeat/filebeat.yml检查配置语法测试连通kafka重启生效启动Kafka消费者消费apache-logs可以收到Filebeat推送的Apache访问日志[rootserver8 kraft]# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic apache-logs --from-beginning2.3 配置Logstash[rootserver5 ~]# cd /etc/logstash/[rootserver5 logstash]# cd conf.d/[rootserver5 conf.d]# vim kafka.conf记得把打印输出打开否则压测完后filebeat就输出不了信息input连接Kafka集群订阅apache-logs主题作为日志来源filter grok使用内置正则HTTPD_COMBINEDLOG自动拆分Apache日志把文本拆分为clientip、status、request、bytes等结构化字段output将清洗完成的数据写入Elasticsearch索引按日期自动生成apachelog-年月日stdout {} 仅调试使用压测时注释避免大量控制台输出占用资源。前台启动Logstash测试[rootserver5 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/kafka.conf然后进行压测有值并且可以看到[rootserver3 ~]# ab -c1 -n 50 http://192.168.159.155/index.html[rootserver1 ~]# ab -c1 -n 100 http://192.168.159.155/index.html能够看到有正常输出访问kibana也能正常看到数据访问http://192.168.159.154:9100可以查看到索引apachelog-2026.08.13三、总结3.1 filebeat采集日志总结1.Filebeat启动失败大概率YAML缩进格式错误2. Kibana无日志检查Filebeat状态、ES端口连通性、账号密码3. ES节点反复掉线优先排查JVM堆内存大小、主机内存、Swap使用情况。3.2 ELKkafka缓冲总结1.KRaft模式必须使用同一个ClusterID格式化所有节点ID不一致集群无法组建2. server.properties内advertised.listeners的IP填写错误外部无法连接Kafka3. Filebeat测试output失败检查9092端口、kafka进程状态4. Logstash收不到数据核对topic名称、consumer-group调试打开stdout观察输出

相关新闻

网络工程师必备:Ping与Traceroute实战诊断指南

网络工程师必备:Ping与Traceroute实战诊断指南

1. 项目概述:为什么网络连通性测试是每个工程师的必修课刚接触网络设备配置的朋友,常常会遇到一个头疼的问题:明明按照教程配好了IP地址、路由,为什么设备之间就是不通?或者,网络时好时坏,问题到…

2026/10/26 10:11:53 阅读更多 →
Linux服务器三权分立实战:基于sudo实现等保三级权限管控

Linux服务器三权分立实战:基于sudo实现等保三级权限管控

1. 项目概述:为什么要在Linux服务器上搞“三权分立”? 最近在给一个金融客户的系统做等保三级测评的加固,对方审计老师提了个硬性要求:所有生产服务器的操作系统账号权限必须实现“三权分立”。这词儿听起来挺唬人,其实…

2026/10/26 11:14:22 阅读更多 →
Node.js入门教程(二十五):文件系统(fs 模块)

Node.js入门教程(二十五):文件系统(fs 模块)

一、fs 模块概述Node.js 的文件系统模块(fs 模块)提供了丰富的 API,用于读取、写入、删除文件以及执行其他文件系统操作。fs 模块既支持同步方法也支持异步方法,使得开发者可以根据具体需求选择合适的方式来处理文件操作。二、导入…

2026/10/26 11:17:11 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →