基于Kafka(Kraft)+ELK的日志收集分析平台搭建(上)
1. 完整业务链路梳理本项目搭建一套企业标准全链路日志处理平台实现流量接入→日志采集→消息缓冲→多分支消费处理完整闭环整体数据流用户浏览器访问域名 www.sc.com三台 Nginx 反向代理集群做流量分发转发至后端 Flask 业务服务每台 Nginx 本地生成 access/error 访问日志本机 Filebeat 采集日志三节点 KRaft 模式 Kafka 集群作为消息中间件完成流量削峰、解耦Kafka 下游三条并行消费分支日志清洗服务结构化清洗日志存入 ElasticsearchKibana 绘制访问监控看板告警检测服务自定义错误阈值规则触发后推送 QQ / 邮件告警通知运维AI 智能分析服务结合 LangChain 本地大模型自动解析报错日志、输出故障排查方案配套中间件Redis 缓存告警规则、统计数据MySQL 持久化告警记录与报表数据详细流程客户端访问 → Nginx 反向代理集群三台 Flask 业务服务 → 每台机器 Filebeat 采集access.log/error.log→ KRaft 模式 Kafka 集群缓冲削峰 → 下游多消费端并行处理分支 1日志清洗 Agent → Elasticsearch 存储 Kibana 可视化看板分支 2告警分析 Agent → 邮件 / QQ 告警推送分支 3对接 LangChain 本地部署大模型做日志智能解析、故障研判配套中间件Redis 缓存、MySQL 持久化分析结果2. 技术栈完整清单基础运维Linux中间件Kafka 3.6.1KRaft 无 ZooKeeper、MySQL采集层Filebeat存储可视化Elasticsearch、Kibana智能拓展LangChain、本地大模型运维能力日志清洗、日志告警、告警规则自定义部署规划表主机名部署服务192.168.140.131nginx Filebeat Kafka MySQL192.168.140.131nginx Filebeat Kafka192.168.140.131nginx Filebeat Kafka Elasticsearch Kibana部署说明Nginx、Filebeat 三台全部部署搭建反向代理高可用集群每台 Nginx 独立产生日志遵循日志采集「本地读取」原则Kafka 三台混合部署 brokercontroller标准 KRaft 集群架构三副本保证日志数据高可用部署 Elasticsearch 与 MySQL将数据持久化存储Kibana 实现日志分析可视化一、集群基础环境统一初始化三台机器全部执行1.1 基础依赖工具安装dnf install wget vim java-21-openjdk.x86_64 net-tools -y1.2 配置静态 IP编辑网卡配置文件/etc/NetworkManager/system-connections/ens33.nmconnection[ipv4] methodmanual addresses1192.168.140.130/24,192.168.140.2 dns114.114.114.114重载网络配置# 重新加载配置 nmcli c reload 激活 ens33 物理网卡让刚重载的静态 IP 配置正式生效 nmcli d up ens331.3 配置主机名 /etc/hosts 域名映射配置主机名以 Kafka1 为例hostnamectl set-hostname kafka1修改/etc/hosts文件添加主机名和 IP 地址映射# 修改 /etc/hosts vim /etc/hosts 添加主机名和 IP 地址映射 192.168.140.130 kafka1 192.168.140.129 kafka2 192.168.140.134 kafka31.4 关闭防火墙与 SELinux# 清空防火墙规则 iptables -F 关闭防火墙开机自启动 systemctl stop firewalld systemctl disable firewalld 永久关闭 SELinux sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config 重启系统生效 reboot二、KRaft 模式 Kafka 集群部署2.1 Kafka 下载、解压缩三台全部执行cd /opt 官方下载安装包 wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz 解压缩 tar xf kafka_2.13-3.6.1.tgz cd kafka_2.13-3.6.12.2 修改核心配置文件位于 kafka 目录 config/kraft/server.propertiesKRaft 架构取消 Zookeeper单节点同时承担 broker 消息存储 controller 元数据管理角色三台仅修改 node.id、监听 IP其余配置保持统一。以 Kafka1 的修改为例# 修改节点 id每个节点唯一 node.id1 修改控制器投票列表 controller.quorum.voters1192.168.140.130:9093,2192.168.140.134:9093,3192.168.140.129:9093 修改监听器和控制器绑定 ip。其中 kafka1 为主机名可用本机 ip 地址代替 listenersPLAINTEXT://kafka1:9092,CONTROLLER://kafka1:9093 侦听器名称、主机名和代理将向客户端公布的端口broker 对外暴露的地址 如果未设置则使用 listeners 的值 advertised.listenersPLAINTEXT://kafka1:90922.3 集群元数据初始化2.3.1 生成全局唯一集群 UUID在 Kafka1任意一台机器上执行cd /opt/kafka_2.13-3.6.1 bin/kafka-storage.sh random-uuid # 输出示例z3oq9M4IQguOBm2rt1ovmQ2.3.2 格式化存储目录三台机器全部执行格式化命令-t 后面接自己生成的 UUIDbin/kafka-storage.sh format -t z3oq9M4IQguOBm2rt1ovmQ -c /opt/kafka_2.13-3.6.1/config/kraft/server.properties2.3.3 启动 Kafka 服务# 启动 bin/kafka-server-start.sh -daemon /opt/kafka_2.13-3.6.1/config/kraft/server.properties 关闭 bin/kafka-server-stop.sh输出成功示例三台机器都要启动成功2.4 systemd 托管 Kafka 服务后台常驻、开机自启Kafka 可以用脚本直接后台启动但集群环境推荐交给 systemd 托管为系统服务。2.4.1 开机自启脚本后台运行不会持久化服务器重启 Kafka 就停止需要手动逐台启动systemd 配置开机自启机器重启自动拉起服务防止节点漏启动。2.4.2 运维命令标准化统一使用systemctl start/stop/restart/status kafka一条命令查看状态与报错不用记忆冗长的脚本路径便于多台机器批量运维。创建服务文件/usr/lib/systemd/system/kafka.service[Unit] DescriptionApache Kafka server (KRaft mode) Documentationhttp://kafka.apache.org/documentation.html Afternetwork.target [Service] Typeforking Userroot Grouproot EnvironmentPATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/java-21-openjdk/bin/ ExecStart/opt/kafka_2.13-3.6.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.13-3.6.1/config/kraft/server.properties ExecStop/opt/kafka_2.13-3.6.1/bin/kafka-server-stop.sh Restarton-failure [Install] WantedBymulti-user.target加载配置并启动集群# 重新加载 systemd 配置 systemctl daemon-reload 启动 kafka 服务 systemctl start kafka 关闭 kafka 服务 systemctl stop kafka 设置开机自启 systemctl enable kafka2.5 测试集群# 创建 topic bin/kafka-topics.sh --create --bootstrap-server kafka3:9092 --replication-factor 3 --partitions 3 --topic my_topic # --replication-factor 指定副本因子--partitions 指定分区数--topic 指定主题名称 查看 topic bin/kafka-topics.sh --list --bootstrap-server kafka3:9092 创建生产者发送消息测试用 bin/kafka-console-producer.sh --broker-list kafka3:9092 --topic my_topic 创建消费者获取数据测试用 bin/kafka-console-consumer.sh --bootstrap-server kafka1:9092 --topic my_topic --from-beginning三、Nginx 反向代理集群部署3.1 Nginx 集群部署三台机器全部安装dnf install nginx -y3.2 反向代理负载均衡配置三台 Nginx 配置完全统一文件路径/etc/nginx/conf.d/sc.confupstream flask { # 仅部署了 Flask 的两台后端服务 IP server 192.168.140.129:5000; server 192.168.140.134:5000; } server { listen 80; server_name www.sc.com; location / { proxy_pass http://flask; # 传递真实客户端 IP日志中可记录用户真实地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }3.3 Nginx 配置校验与启停# 校验配置语法 nginx -t 启动并开机自启 systemctl start nginx systemctl enable nginx四、Filebeat 安装部署4.1 下载解压wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.19.19-linux-x86_64.tar.gz tar -zxvf filebeat-8.19.19-linux-x86_64.tar.gz -C /usr/local/ mv /usr/local/filebeat-8.19.19-linux-x86_64 /usr/local/filebeat cd /usr/local/filebeat4.2 备份原配置cp filebeat.yml filebeat.yml.bak4.3 修改 filebeat.yml 配置# 采集日志输入 filebeat.inputs: - type: filestream enabled: true paths: - /usr/local/nginx/logs/access.log 关闭 ES 默认输出 output.elasticsearch: enabled: false 输出到 Kafka作为生产者 output.kafka: hosts: [192.168.140.130:9092] topic: nginxlog partition.round_robin: reachable_only: false required_acks: 1 compression: gzip max_message_size: 1048576 关闭 kibana setup.kibana: enabled: false4.4 Kafka 提前创建 topic重要在 Kafka 主机 192.168.140.130 执行# 创建 nginxlog 主题 kafka-topics.sh --bootstrap-server 192.168.140.130:9092 --create --topic nginxlog --partitions 3 --replication-factor 1 查看 topic 是否创建成功 kafka-topics.sh --bootstrap-server 192.168.140.130:9092 --list4.5 Filebeat 启动命令4.5.1 前台调试看报错cd /usr/local/filebeat ./filebeat -e -c filebeat.yml4.5.2 后台生产启动nohup ./filebeat -c filebeat.yml filebeat.log 21 4.5.3 查看进程ps -ef | grep filebeat4.5.4 停止 Filebeatpkill -f filebeat4.6 全套验证命令4.6.1 制造 Nginx 访问产生日志1. 使用 curl 命令访问 Nginx生成访问日志curl http://127.0.0.1/index.html curl http://127.0.0.1/404test2. Kafka 控制台消费者验证 Filebeat 生产者投递kafka-console-consumer.sh --bootstrap-server 192.168.140.130:9092 --topic nginxlog --from-beginning输出示例Filebeat 产出 JSON 格式{timestamp:2026-08-17T12:59:52.914Z,message:127.0.0.1 - - [17/Aug/2026:14:30:22 0800] \GET /index.html HTTP/1.1\ 200 1024 \-\ \Mozilla/5.0\ \-\}3. 查看 Nginx 原始日志tail -f /usr/local/nginx/logs/access.log4. 查看 Filebeat 运行日志tail -f /usr/local/filebeat/filebeat.log4.6.2 输出结果示例Kafka 控制台消费输出示例{ timestamp:2026-08-17T06:30:22.120Z, input:{type:filestream}, host:{name:kafka1}, message:127.0.0.1 - - [17/Aug/2026:14:30:22 0800] \GET /index.html HTTP/1.1\ 200 1024 \-\ \Mozilla/5.0\ \-\ }

相关新闻

嵌入式系统核心MCU、MPU与SoC深度解析:从概念到实战选型指南

嵌入式系统核心MCU、MPU与SoC深度解析:从概念到实战选型指南

1. 从“黑盒子”到无处不在:我们身边的嵌入式世界如果你拆开家里的智能音箱、智能门锁,或者看看汽车的中控屏、工厂里的机械臂,甚至是你手腕上的智能手表,会发现里面都有一块或几块不起眼的电路板。这些电路板的核心,往…

2026/8/23 9:06:46 阅读更多 →
数学建模竞赛半年高效备赛指南:从入门到获奖的完整路径

数学建模竞赛半年高效备赛指南:从入门到获奖的完整路径

1. 项目概述:从“学不会”到“带出奖”,数学建模的真相与路径 “数学建模好学吗?”这大概是每年国赛、美赛报名季,各大高校论坛和新生群里出现频率最高的问题之一。另一边,标题里“半年带出几十位省奖和十几位国奖”的…

2026/8/23 9:05:46 阅读更多 →
读数据可视化11数据可视化基础

读数据可视化11数据可视化基础

1. 基本框架1.1. 数据可视化不仅是一门包含各种算法的技术,还是一个具有方法论的学科1.2. 在实际应用中需要采用系统化的思维设计数据可视化方法与工具1.3. 流程1.3.1. 科学可视化和信息可视化分别设计了可视化流程的参考体系结构模型,并被广泛应用于数据…

2026/8/23 9:05:46 阅读更多 →

最新新闻

打通转化数据闭环:google-ads-python离线转化上传与增强转化完整指南

打通转化数据闭环:google-ads-python离线转化上传与增强转化完整指南

打通转化数据闭环:google-ads-python离线转化上传与增强转化完整指南 【免费下载链接】google-ads-python Google Ads API Client Library for Python 项目地址: https://gitcode.com/gh_mirrors/go/google-ads-python 📌 本文面向新手讲解如何使…

2026/8/23 11:57:46 阅读更多 →
CP-SAT Primer编码模式指南:5个设计模式让优化代码可维护、可测试、可扩展

CP-SAT Primer编码模式指南:5个设计模式让优化代码可维护、可测试、可扩展

CP-SAT Primer编码模式指南:5个设计模式让优化代码可维护、可测试、可扩展 【免费下载链接】cpsat-primer The CP-SAT Primer: Using and Understanding Google OR-Tools CP-SAT Solver 项目地址: https://gitcode.com/gh_mirrors/cp/cpsat-primer CP-SAT Pr…

2026/8/23 11:57:46 阅读更多 →
FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解

FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解

FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解 【免费下载链接】FlexLabs.Upsert FlexLabs.Upsert is a library that brings UPSERT functionality to common database providers for Entity Framework in their…

2026/8/23 11:57:46 阅读更多 →
NvidiaOverclocking电压调优教程:25mV步进微调,教你找到性能与温度的最佳平衡点

NvidiaOverclocking电压调优教程:25mV步进微调,教你找到性能与温度的最佳平衡点

NvidiaOverclocking电压调优教程:25mV步进微调,教你找到性能与温度的最佳平衡点 【免费下载链接】NvidiaOverclocking Nvidia GPU Overclocking Guide 项目地址: https://gitcode.com/gh_mirrors/nv/NvidiaOverclocking NvidiaOverclocking 是一份…

2026/8/23 11:57:46 阅读更多 →
技术面试中的幽默艺术:如何用段子展现专业深度

技术面试中的幽默艺术:如何用段子展现专业深度

1. 面试场景还原:当严肃面试官遇上搞笑候选人 最近在技术社区看到一则真实面试案例:某互联网大厂Java技术面现场,一位以严谨著称的面试官遇到了自称"代码段子手"的候选人张三。这场冰与火的碰撞产生了令人意外的化学反应&#xff0…

2026/8/23 11:57:46 阅读更多 →
从CCPC网络赛重赛看高并发在线判题系统架构与防作弊设计

从CCPC网络赛重赛看高并发在线判题系统架构与防作弊设计

1. 从“网络赛重赛”说起:一次技术竞赛的非常规复盘 2021年CCPC网络赛的重赛,对于当年参赛的选手、教练以及赛事组织方而言,都是一个绕不开的话题。它不仅仅是一次简单的比赛延期或重新举办,其背后折射出的,是大型在线…

2026/8/23 11:56:46 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →