毕业设计 基于大数据的服务器数据分析与可视化系统 -python 可视化 大数据

news2024/11/25 20:56:18

文章目录

  • 0 前言
  • 1 课题背景
  • 2 实现效果
  • 3 数据收集分析过程
    • **总体框架图**
    • **kafka 创建日志主题**
    • **flume 收集日志写到 kafka**
    • **python 读取 kafka 实时处理**
    • **数据分析可视化**
  • 4 Flask框架
  • 5 最后

0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于大数据的服务器数据分析与可视化系统

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:5分
  • 创新点:3分
  • 界面美化:5分

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

1 课题背景

基于python的nginx大数据日志分析可视化,通过流、批两种方式,分析 nginx 日志,将分析结果通过 flask + echarts 进行可视化展示

2 实现效果

24 小时访问趋势

在这里插入图片描述
每日访问情况
在这里插入图片描述

客户端设备占比
在这里插入图片描述

用户分布

在这里插入图片描述

爬虫词云

在这里插入图片描述

3 数据收集分析过程

总体框架图

在这里插入图片描述

kafka 创建日志主题

# 创建主题
kafka-topics --bootstrap-server gfdatanode01:9092 --create --replication-factor 3 --partitions 1 --topic nginxlog

flume 收集日志写到 kafka

创建 flume 到 kafka 的配置文件 flume_kafka.conf,配置如下

a1.sources = s1
a1.channels = c1
a1.sinks = k1     

a1.sources.s1.type=exec
a1.sources.s1.command=tail -f /var/log/nginx/access.log
a1.sources.s1.channels=c1 

#设置Kafka接收器
a1.sinks.k1.type= org.apache.flume.sink.kafka.KafkaSink
#设置Kafka地址
a1.sinks.k1.brokerList=172.16.122.23:9092
#设置发送到Kafka上的主题
a1.sinks.k1.topic=nginxlog
#设置序列化方式
a1.sinks.k1.serializer.class=kafka.serializer.StringEncoder
a1.sinks.k1.channel=c1     

a1.channels.c1.type=memory
a1.channels.c1.capacity=10000
a1.channels.c1.transactionCapacity=100  

启动 flume

flume-ng agent -n a1 -f flume_kafka.conf

python 读取 kafka 实时处理

通过 python 实时处理 nginx 的每一条日志数据,然后写到 mysql 。

from kafka import KafkaConsumer

servers = ['172.16.122.23:9092', ]
consumer = KafkaConsumer(
    bootstrap_servers=servers,
    auto_offset_reset='latest',  # 重置偏移量 earliest移到最早的可用消息,latest最新的消息,默认为latest
)
consumer.subscribe(topics=['nginxlog'])
for msg in consumer:
    info = re.findall('(.*?) - (.*?) \[(.*?)\] "(.*?)" (\\d+) (\\d+) "(.*?)" "(.*?)" .*', msg.value.decode())
    log = NginxLog(*info[0])
    log.save()

数据分析可视化

-- 用户分布
select province, count(distinct remote_addr) from fact_nginx_log where device <> 'Spider' group by province;

-- 不同时段访问情况
select case when device='Spider' then 'Spider' else 'Normal' end, hour(time_local), count(1) 
from fact_nginx_log 
group by case when device='Spider' then 'Spider' else 'Normal' end, hour(time_local);

-- 最近7天访问情况
select case when device='Spider' then 'Spider' else 'Normal' end, DATE_FORMAT(time_local, '%Y%m%d'), count(1) 
from fact_nginx_log 
where time_local > date_add(CURRENT_DATE, interval - 7 day)
group by case when device='Spider' then 'Spider' else 'Normal' end, DATE_FORMAT(time_local, '%Y%m%d');

-- 用户端前10的设备
select device, count(1)
from fact_nginx_log
where device not in ('Other', 'Spider') -- 过滤掉干扰数据
group by device
order by 2 desc
limit 10

-- 搜索引擎爬虫情况
select browser, count(1) from fact_nginx_log where device = 'Spider' group by browser;

最后,通过 pandas 读取 mysql,经 ironman 进行可视化展示。

4 Flask框架

简介

Flask是一个基于Werkzeug和Jinja2的轻量级Web应用程序框架。与其他同类型框架相比,Flask的灵活性、轻便性和安全性更高,而且容易上手,它可以与MVC模式很好地结合进行开发。Flask也有强大的定制性,开发者可以依据实际需要增加相应的功能,在实现丰富的功能和扩展的同时能够保证核心功能的简单。Flask丰富的插件库能够让用户实现网站定制的个性化,从而开发出功能强大的网站。

本项目在Flask开发后端时,前端请求会遇到跨域的问题,解决该问题有修改数据类型为jsonp,采用GET方法,或者在Flask端加上响应头等方式,在此使用安装Flask-CORS库的方式解决跨域问题。此外需要安装请求库axios。

Flask框架图

在这里插入图片描述
相关代码

import os
import sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')

from flask import Flask, render_template
from ironman.data import SourceData
from ironman.data_db import SourceData

app = Flask(__name__)

source = SourceData()


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/line')
def line():
    data = source.line
    xAxis = data.pop('legend')
    return render_template('line.html', title='24小时访问趋势', data=data, legend=list(data.keys()), xAxis=xAxis)


@app.route('/bar')
def bar():
    data = source.bar
    xAxis = data.pop('legend')
    return render_template('bar.html', title='每日访问情况', data=data, legend=list(data.keys()), xAxis=xAxis)


@app.route('/pie')
def pie():
    data = source.pie
    return render_template('pie.html', title='客户端设备占比', data=data, legend=[i.get('name') for i in data])


@app.route('/china')
def china():
    data = source.china
    return render_template('china.html', title='用户分布', data=data)


@app.route('/wordcloud')
def wordcloud():
    data = source.wordcloud
    return render_template('wordcloud.html', title='爬虫词云', data=data)


if __name__ == "__main__":
    app.run(host='127.0.0.1', debug=True)

5 最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数据流转5个大坑,你最烦哪个?

对于公司来说&#xff0c;注重数据安全已然是一个必须项&#xff0c;如何保护数据安全也是让公司管理者头痛的问题。 云宝贝罗列了公司5个常见的数据安全场景&#xff0c;并给出了应对方法&#xff0c;看看你公司有没有踩雷。 01、文件云端流转&#xff0c;不落地 “员工在公…

【初阶数据结构】——限定性线性表:栈 和 队列详解(C描述)

文章目录前言1. 栈1.1 栈的概念及结构1.2栈的实现1.2.1 动态or静态1.2.2 结构介绍1.2.3 初始化栈1.2.4 销毁栈1.2.5 压栈1.2.6 出栈1.2.7 判空1.2.8 取栈顶元素1.2.9 获取有效元素个数1.3 测试1.4 源码展示1.4.1 stack.h1.4.2 stack.c1.4.3 test.c2. 队列2.1 队列的概念及结构2…

2022年最新全国各省五级行政区划代码及名称数据(省-市-区县-乡镇-村)

1、数据来源&#xff1a;国家统计局 2、官方更新时间&#xff1a;2021年10月31日 3、数据样例&#xff1a; 包括字段&#xff1a;省份名称、城市代码、城市名称、区县代码、区县名称、乡镇街道代码、乡镇街道名称、居委会村代码、城乡分类代码、居委会村名称、完整五级地址 …

Java的JFrame窗体的创建(两种方法)

第一种直接创建 package com.jwz.h综合项目;import javax.swing.*;public class Test {public static void main(String[] args) {//创建宽高jFrame.setSize(488, 580);//创建窗口对象JFrame jFrame new JFrame();jFrame.setTitle("拼图游戏");//设置标题jFrame.se…

肝了47天最终上岸美团,这份最新版千页Java八股到底是有多全面?

上周接到美团HR打来的电话&#xff08;吃惊&#xff01;&#xff09;&#xff0c;居然约我面试。 一面和二面都是电话面试&#xff0c;一面的的时候美团小哥给我一个链接&#xff0c;需要手写代码就在那个页面里面写。一面比较顺利&#xff0c;感觉美团问得挺全面的。二面的时…

数据机构——顺序表的基本操作

一、实验要求 二、实验代码 # include "bits/stdc.h"using namespace std;#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 100 //定义顺序表的最大长度//定义数据结构体 typedef struct book {int number; //编号string name; //名称float p…

二、CSS下拉菜单[颜色布局、子影响父]

一、源码 效果 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

目录 鼠标操作 获取鼠标所在位置坐标 获取鼠标所在位置的RGB值 鼠标点击 鼠标按下和释放 鼠标移动 鼠标拖拽 滚轮滚动 键盘操作 输入英文字符 普通按键操作press 按下与抬起 组合键hotkey 持续按键hold 弹出对话框 alert confirm prompt password 鼠标操作 …

iconfont在vue项目中的使用及如何在一个项目中引入多个iconfont图标库

iconfont的使用 下载方式本文不做详细的展示 重点演示一下同一个项目如何使用两个图标库 有的时候在一个项目的基础上,把当前的项目改为另一个项目,不想影响到当前的字体图标,或者不知道之前的字体图标管理的图标库在哪里了.再引入一个新的字体图标库不失为一个好办法,那么如何…

DASCTF NOV X联合出题人2022年度积分榜争夺赛 RE-部分题解

babytea 一轮8位加密 先对输入的前4位进行异或0x1234567 在对输入的后4位进行异或0x89ABCDEF 对del的条件加密为del>>180时进行异或0x1234567 到了32时 就把先对输入的前4位作为异或的xor1 先对输入的后4位进行异或xor2 逻辑整理下那么就是 void encrypt(uint32_t*…

Linux安装elasticsearch、IK分词器和kibana

简介&#xff1a; 因为内网环境不能上外网&#xff0c;安装最新的版本有问题而且不容易排查&#xff0c;所以安装了比较老的一个版本6.2.2。在安装的时候&#xff0c;为了讲清楚所有文件源头&#xff0c;所以介绍的啰嗦&#xff0c;但是很详细。 这里主要说明elasticsearch、ki…

如何用R语言在机器学习中建立集成模型?

介绍 在本文中&#xff0c;我将向您介绍集成建模的基础知识。 另外&#xff0c;为了向您提供有关集成建模的实践经验&#xff0c;我们将使用R进行集成。最近我们被客户要求撰写关于集成模型的研究报告&#xff0c;包括一些图形和统计输出。 1.什么是集成&#xff1f; 通常&am…

简单描述标准生成树协议STP

简单描述标准生成树协议STP 生成树协议STP 为什么需要生成树 如上图所示网络拓扑&#xff0c;如果没有生成树协议&#xff0c;在网络通信开始时&#xff0c;假设PC0向PC1发送一个数据包&#xff0c;交换机S2的MAC地址表中并没有对应的MAC地址&#xff0c;因此会产生ARP洪泛&a…

常见的项目管理问题有哪些?

在项目执行过程中&#xff0c;相信大家总会遇到一些项目管理常见问题以及各种意想不到的管理问题。如果想让你的项目取得最终成功&#xff0c;项经理便需要有一个计划来快速有效地应对任何出现的问题&#xff0c;否则它们会影响项目的成果。那么常见的项目管理问题有哪些呢&…

PolarDB-X 的 in 常量查询

场景 实际场景中经常需要根据一些常量指标做IN查询&#xff0c;并且IN值往往是分区键。例如在电商场景中&#xff0c;有两张表&#xff0c;买家表与订单表。订单的具体信息会记录到订单表中&#xff0c;该表按照订单ID进行哈希拆分&#xff1b;买家表则会保存买家ID及其关联的…

Flowable 中的网关、流程变量以及历史流程

今天这篇文章&#xff0c;松哥和大家梳理一下 Flowable 中的网关、流程变量以及历史流程的玩法。 1. 三大网关 Flowable 中网关类型其实也不少&#xff0c;常见的主要有三种类型&#xff0c;分别是&#xff1a; 排他网关并行网关包容网关 这三个里边最常用的当然就是排他网关…

苦等官方阿里云盘TV版久矣,终于期待一款TV版。

苦等官方阿里云盘TV版久矣&#xff0c;终于期待一款TV版。 一、获取链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/19Z-2Lb4-lOSU14M83rivVA 提取码&#xff1a;o2z0 二、产品&#xff1a; 1、文件列表&#xff1a;确定键打开文件或文件夹&#xff0c;菜单键进…

华为19级专家10年心血终成百页负载均衡高并发网关设计实战文档

负载均衡&#xff08;LoadBalance&#xff09;的字面意思是将工作负载分担到多个工作单元上进行执行&#xff0c;它建立在现有网络结构之上&#xff0c;是构建分布式服务、大型网络应用的关键组件。 近十几年来&#xff0c;负载均衡技术层出不穷&#xff0c;令人眼花缭乱。如果…

[思考进阶]01 如何克服自己的无知?

除了要提升自己的技术能力&#xff0c;思维的学习和成长也非常非常重要&#xff0c;特推出此[思考进阶]系列&#xff0c;进行刻意练习&#xff0c;从而提升自己的认知。 有段时间我特别喜欢研究一些定律和法则&#xff0c;比如&#xff1a;熵增定律、懒蚂蚁效应、蝴蝶效应、吸引…

Java搭建宝塔部署实战毕设项目物品分类springboot管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的物品分类springboot管理系统源码&#xff0c;适合准备做毕业设计的同学&#xff0c;可以下载搭建起来&#xff0c;在这基础上加一些功能&#xff0c;改改UI&#xff0c;随便写篇答题…