文章总结: LogVision是一套基于Flume+Kafka+SparkStreaming的分布式实时日志聚合与入侵检测系统,作者以本科毕设完成,获省级双奖。系统通过SparkMLlib训练模型,在250条异常日志上实现96%识别率,提供从日志生成、模型训练、实时分析到Flask-Echarts可视化的完整流程与脚本,支持单机伪分布式快速验证,代码、配置、数据集全部开源并附详细操作步骤,可直接用于教学、比赛或小型生产环境。 综合评分: 82 文章分类: 安全工具,安全开发,WEB安全,安全建设,实战经验
分布式实时日志分析与入侵检测系统
原创
xander-wang
W小哥
2026年1月14日 11:40 浙江
LogVision / 使用大数据的分布式实时日志分析与入侵检测系统
�开发文档
版本记录(当前2.0)
·2018.12.8 v1.0:原型版本,有bug。
·2020.5.9 v2.0:初步完善版本,可以实现预期效果。
问题交流
·Telegram群组:https://t.me/logv123
简介
LogVision是一个整合了web日志聚合、分发、实时分析、入侵检测、数据存储与可视化的日志分析解决方案。聚合采用Apache Flume,分发采用Apache Kafka,实时处理采用Spark Streaming,入侵检测采用Spark MLlib,数据存储使用HDFS与Redis,可视化采用Flask、SocketIO、Echarts、Bootstrap。
本文下述的使用方法均面向单机伪分布式环境,你可以根据需求进行配置上的调整以适应分布式部署。
本系统各模块由个人独立开发,期间参考了一些有价值的文献与资料。本系统还是个人的本科毕业设计。
获得的奖项:2019年全国大学生计算机设计大赛安徽省二等奖、2019年安徽省信息安全作品赛二等奖。
原型版本的介绍视频
系统架构
数据流向
(数字代表处理步骤)
入侵检测流程
项目结构
·flask:Flask Web后端
·spark:日志分析与入侵检测的实现
·flume:Flume配置文件
·log_gen:模拟日志生成器
·datasets:测试日志数据集
·images:README的图片
依赖与版本
·编译与Web端需要用到的:
oJava 8, Scala 2.11.12, Python 3.8 (包依赖见requirements), sbt 1.3.8
·计算环境中需要用到的:
oJava 8, Apache Flume 1.9.0, Kafka 2.4, Spark 2.4.5, ZooKeeper 3.5.7, Hadoop 2.9.2, Redis 5.0.8
使用说明
在开始之前,你需要修改源码或配置文件中的IP为你自己的地址。具体涉及到flume配置文件、Spark主程序、Flask Web后端。
编译Spark应用
在安装好Java8与Scala11的前提下,在spark目录下,初始化sbt:
sbt
退出sbt shell并使用sbt-assembly对Spark项目进行编译打包:
sbt assembly
然后将生成的jar包重命名为logvision.jar。
环境准备
你需要一个伪分布式环境(测试环境为CentOS 7),并完成了所有对应版本组件依赖的配置与运行。
使用flume目录下的standalone.conf启动一个Flume Agent。
将datasets文件夹中的learning-datasets提交如下路径:
/home/logv/learning-datasets
将datasets文件夹中的access_log提交如下路径:
/home/logv/access_log
入侵检测模型训练与测试
提交jar包至Spark集群并执行入侵检测模型的生成与测试:
spark-submit --class learning logvision.jar
你将可以看到如下结果:
两个表格分别代表正常与异常数据集的入侵检测结果,下面四个表格可用于判断识别准确率。如图中所示250条正常测试数据被检测为250条正常,识别率100%;250条异常测试数据被检测为240条异常,10条正常,准确率96%。
启动可视化后端
在flask目录下执行如下命令,下载依赖包:
pip3 install -r requirements.txt
启动Flask Web:
python3 app.py
启动实时日志生成器
log_gen中的实时日志生成器可根据传入参数(每次写入行数、写入间隔时间)将样本日志中的特定行块追加至目标日志中,以模拟实时日志的生成过程,供后续实时处理。
java log_gen [日志源] [目标文件] [每次追加的行数] [时间间隔(秒)]
提交至环境,编译并运行,每2秒将/home/logv/access_log文件中的5行追加至/home/logSrc中:
javac log_gen.java
java log_gen /home/logv/access_log /home/logSrc 5 2
启动分析任务
提交jar包至Spark集群并执行实时分析任务:
spark-submit --class streaming logvision.jar
查看可视化结果
至此你已经完成了后端组件的配置,通过浏览器访问Web端主机的5000端口可以查看到实时日志分析的可视化结果:
欢迎界面:
实时日志分析界面:
实时入侵检测界面:
关注公众号回复“20260114”获取工具地址。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:W小哥 xander-wang《分布式实时日志分析与入侵检测系统》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论