Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Maicius/WebLogsAnalysisSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

8 Commits

Repository files navigation

基于HBase的网站日志数据分析系统

系统说明

1. 数据库设计

LogData

  • 该表用于存储经数据清洗、转化后的数据
  • 数据库类型: HBase
  • 表结构
Rowkey prop
rowkey IP / BYTES / URL / DATES / METHOD / FYDM / BYTES
  • RowKey 结构设计说明

RowKey 分为 日期 + 网站代码后三位 + 六位数ID
各部分说明如下:

字段 解释 例子
日期 日志文件的产生日期(纯数字,不含空格和-) 20170808
公司代码 公司代码后三位 200
ID 从100000开始的六位数字,用于唯一的标明数据并对齐 100001

完整例子
201708082001000000 表示代号为200点公司在2017年08月08日产生的一次请求

  • 建表语句

create "LogData", "prop"

LogAna

  • 该表用于存储分析之后的数据

  • 数据库类型: HBase

  • 表结构

    RowKey IP URL BYTES MTHOD_STATE REQ
    rowkey IPSumVal IPTotalNum IPList URLList MaxURL BytesSecList BytesHourList / TotalBytes MethodList StateList ReqHourList ReqSecList ReqSum
  • 字段说明

    字段 解释 例子
    IPTotalNum IP总数,不包含重复的 100 表示当天有100个IP访问网站
    IPSumVal IP总数,包含重复 100表示有100个IP访问网站,IP可重复
    IPList IP和对应访问量的排行,结构为 由mutable.Map[String, Int]转变来的JSON文件 {"190.1.1.1": 1000} 表示190.1.1.1的IP共在网站产生1000次请求)
    URLList 被请求次数最多的10个URL,结构为Json {"test.aj":100, "test2.aj":90, ...}
    MaxURL 请求次数最多的URL(现在前端已经放弃使用这字段) {"test.aj": 100}
    BytesSecList 统计每秒内产生的流量,单位为Byte,但是前端展示时转化为MB {"2017-08-08 01:00:00":9000, "2017-08-08 01:00:00": 500, ...}
    BytesHourList 统计一天内每小时内产生的流量,单位为Byte,但是前端展示时转化为MB {"08":9000, "09": 500, ...}, 08 表示 8点到9点内产生的流量
    TotalBytes 一天内产生的总流量大小,单位为Byte,但是前端展示时转化为MB 3000, 表示当天产生 3000b bytes的流量
    MethodList 出现过的请求方法统计 {"POST":3446,"OPTIONS":5,"HEAD":4}
    StateList 出现过的请求状态中级 {"501":8,"302":801,"404":1,"200":14738,"400":2,"405":4}
    ReqHourList 按小时统计请求次数 {"15":2350,"09":3503,"00":690,"11":1903}
    ReqSecList 按秒统计请求次数 {"2017-08-08 10:44:08":1,"2017-08-08 09:45:05":4,"2017-08-08 10:06:58":4}
    ReqSum 一天内总请求次数 1000,表示当天内共有1000次请求
  • RowKey 结构设计说明

RowKey 分为 日期 + 公司代码后三位 各部分说明如下:

	字段 | 解释 | 例子
	 ----| ----- |----
 	日期 |日志文件的产生日期(纯数字,不含空格和-) | 20170808
 	公司代码| 公司代码后三位 |200, 需要注意的是000表示当天所有网站数据
 
> example:
20170808200 表示天津高院在2017年08月08日的所有数据
20170808000 表示所有法院在2017年08月08日点所有数据
  • 建表语句

create "LogAna", "IP", "URL", "BYTES", "METHOD_STATE", "REQ"

2. 项目代码描述

  • 本项目分为三个子项目, 包括数据采集、数据存储和展示、数据离线分析

数据采集

  • 工程名:CollectTomcatLogs

  • 功能说明:

    收集指定路径下的tomcat日志
    重命名文件之后上传到HDFS或FTP服务器
    保存日志,记录是否上传成功

  • 部署说明: 部署在各个需要采集日志的服务器上,在 my.properties 里指定公司代码和日志路径

  • 配置管理: maven

  • 主要技术: Java FTPClient, HDFS

  • 测试用例说明: 主要用于测试重命名后的文件是否正常

  • 文件重命名: 在localhost_XXXXX.txt文件前加上法院代码,以此来区分各公司数据

数据存储和展示

  • 工程名: RestoreData

  • 功能说明:

    数据预处理: 包括数据解析、清洗和转化
    数据存储: 将转化后的数据保存在一个List中,批量插入HBase数据库
    前端展示:展示分析得到的数据
    数据查询: 根据各种输入条件查询对应的数据

  • 开发环境:

    JDK 8
    Hadoop 2.7
    Hbase 1.2 tomcat 8

  • 部署说明:在 my.properties 里配置好各项数据,注意JDK、Hadoop的版本兼容

  • 配置管理: maven

  • 主要技术:Spring MVC / Hadoop / JSP

  • 测试用例说明:

    HbaseBatchInsertTest.java: 用于测试批量插入
    HbaseConnectionTest.java: 用于测试Hbase连接是否正常
    ParseLogTest.java: 用于测试日志解析
    ListBean.java: 打印所有的bean,用于应付@Autowried失败的情况

  • 前端部分:

    ####代码部分 index.jsp: 默认加载页面,加载完成后会请求数据,展示前一天所有网站数据
    index.js: 用于处理index.jsp中的各种请求和数据解析


    queryData.jsp: 用于查询各家网站数据,输入为日期 + 网站,支持多选
    queryData.js: 用于处理queryData.jsp中的各种请求和数据解析(待完成)


    dataGrid.jsp: 以表格的形式展示数据(待完成)


    myCharts.js: 使用echarts绘制各种图表(注意dom的初始化在外部完成)
    inputCheck.js: 检查输入是否合法


    mystyle.css: 定制各类样式 ####第三方库 Bootstrap: 主要是用其格栅系统
    Bootstrap-select: 多选框的实现
    BootstrapDatepickr: 日期输入
    echarts: 绘制各类图表
    jQuery: 框架
    font-awesome: 各类小图标

数据离线分析

  • 工程名: ScalaReadAndWrite

  • 功能说明:

    离线分析各类数据,共13个指标,详情见数据库表 LogAna 设计

  • 开发环境:

    Scala 2.11
    Spark 1.52
    Hadoop 2.7

  • 特别说明:

    spark 中全局变量只有两种实现方式,广播变量或累加器,本项目使用累加器
    自定义的累加器的时候非常一定要注意输入输出类型一定要正确 一定要实现全部六个重载函数
    一个累加器只能传递一种变量,这个变量可以是复杂的对象
    不这样做的话累加器会失效!

  • 部署说明:暂无

  • 配置管理:maven

  • 主要技术:Spark

  • 项目结构说明:

    Accumulator:累加器,包含各种自定义的累加器
    analysis: 主要分析代码 DAO: 解析实体类,并存入到HBase
    Entity: 两个实体类
    util: 各种工具类

    3. 项目截图:

    • Hbase数据库截图
      image

    • 数据展示界面
      image

    • 数据展示界面
      image

About

A big data platform for analyzing web access logs

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /