网站日志分析-MaxCompute

2023-10-07 17:30

本文主要是介绍网站日志分析-MaxCompute,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​ 网站访问日志是用户在访问网站服务器时产生的日志,它包含了各种原始信息,一般以.log结尾。通过它就可以清楚的知道用户的IP,访问时间,请求链接,请求状态,请求字节数,来源链接,用户操作系统,浏览器内核,浏览器名称,浏览器版本等等信息。对网站日志的分析统计可以使我们了解网站当前的一些状况,为网站的各种优化升级甚至公司营销策略提供依据。

1. 了解网络日志分析

1.1 基本介绍

  1. 日志:网络设备、系统及服务程序等,在运作时都会产生一个叫 log 的事件记录。它的每一行都记载着日期、时间、使用者及动作等相关操作的描述

  2. 网站日志:网站在运行过程中所产生的日志、包括系统日志和程序日志

    a)系统日志:一般就是网站所基于的服务器容器所自动生成的日志,如访问日志,系统错误日志等等

    b)程序日志:由用户在程序中自定义构建的

1.2 网站日志分析的重要性

网站日志本身并没有太大价值,而当我们对其进行分析并利用的时候就会产生很大的价值

通过对网站日志的分析,可以了解:

  1. 网站的运行状况(如网站PV,UV)
  2. 网站的安全状况(如恶意攻击,暴力密码破解)
  3. 网站的运用状况(如搜索引擎流量来源)
  4. 网站的用户信息(如操作系统,浏览器)

这些信息可以给我们提供一些决策支持,比如大流量下增加服务器,面对攻击提升网站的安全性,以及针对不同的搜索来源,改变网站的营销策略等等

1.3 网站日志分析流程

日志分析流程

1.3.1 网络访问日志搜集——Nginx

​ Nginx是一个高性能的HTTP和反向代理服务器,常常被用作一个用户请求的分发以及简单的负载均衡,但默认不开启访问日志的设置

​ 修改Nginx配置文件: conf/nginx.conf,我只需要增加access_log即可,如果想要配置访问日志的格式,可以使用log_format

access_log logs/access.log
access_log logs/access.log combined;log_format combined '$remote_addr - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
# 请求地址 用户名,本地时间 请求 状态 字节数 请求来源 客户端信息
1.3.2 网络访问日志搜集——Tomcat

​ Tomcat是一个被广泛使用的免费的开放源代码的Web应用服务器

​ 修改Tomcat配置文件:conf /server.xml,最下面Access log配置,默认是被注释了,打开注释后Tomcat将会自动搜集访问日志

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"><Valve className="org.Apache.catalina.valves.AccessLogValve" directory="log"prefix="localhost_access_log." suffix=".txt"pattern="%h%l%u%t&quot;%r&quot;%s%b"></Valve>
</Host>

pattern日志格式详解

日志格式详解

2. 网络日志的搜集

2.1 常见数据

​ 根据上面的对于Nginx和Tomcat的日志配置我们能够看的出来,一个访客在访问网页之后,我们可以获取到许多信息,但是这些信息,并不是所有的都是我们在后续数据处理所需要的,所以我们需要对这些信息进行分析处理,熟悉后端爬虫的朋友们,就大概可以根据上面知道,我们到手的会是一条什么样子的数据,所以对于所获得数据,我们可以直接利用Xpath去处理数据,获取到我们想要的数据并进行保存

  1. 用户的ip:这条数据我们可以根据ip获取到用户对应的城市以及网络运营商,而不是单纯的去保存一个ip

  2. 访问时间:上面两个服务器都是配置到准确的时分秒,我们可以根据这个来提取有效的访问小时数即可

  3. 请求链接:我们只需要提取有效链接即可

    ​ 链接访问Top N:即用户访问最多的链接

    ​ 恶意攻击ip:搜集疑似恶意攻击本网站的ip,用于ip黑名单

  4. 来源链接:即分类(自身,搜索引擎等等)

  5. 客户端信息:提取用户操作系统,浏览器名称等等

下面便是一条我们常见的获取到的数据信息(为了数据安全性,我做了一定的随机修改),当然为了好使用,我们都会对其进行初步的处理,给它的每一行加上ID,以空格隔开

1. 120.26.64.xxx - - [21/Aug/2019:23:59:03 +0800] "HEAD / HTTP/1.1" 301 0 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)"

处理的方法也很简单,如果你熟悉excel,可以直接使用excel对这些数据进行处理,当然你也可以通过编程语言来进行处理,这里我就放一个很简单的处理方法

import java.io.*;/*** Created by IntelliJ IDEA.* MaxCompute对日志文件处理* @author xiren* @date 2021/03/20 16:35*/
public class LogParser {/*** 日志文件预处理** @param inPath  日志文件输入地址* @param outPath 输出地址* @throws IOException*/public void accessLogId(String inPath, String outPath) throws IOException {String line = "";long index = 0;BufferedReader bufferReader = null;FileWriter fileWriter = null;try {bufferReader = new BufferedReader(new FileReader(inPath));File outFile = new File(outPath);if (outFile.exists()) {outFile.delete();}outFile.createNewFile();fileWriter = new FileWriter(outFile);while ((line = bufferReader.readLine()) != null) {index++;String newLine = String.valueOf(index) + " " + line + "\r\n";fileWriter.write(newLine);}} finally {if (bufferReader != null) {bufferReader.close();}if (fileWriter != null) {fileWriter.close();}}}public static void main(String[] args) {try {LogParser logParser = new LogParser();//日志文件预处理 传入输入和输出地址logParser.accessLogId("[日志文件路径]", "[转换后输出路径]");} catch (IOException e) {e.printStackTrace();}}
}

2.2 常见分析指标

  1. IP(独立IP):即独立IP数,00:00 - 24:00内相同IP地址仅被计算一次
  2. PV(访问量):即Page View,即页面浏览量,用户每次刷新即被计算一次
  3. UV(独立访客):即Unique Visitor,访问您网站的一个客户端为一个访客(一般在Cookie中分配唯一编号)
  4. 访问趋势图:即一段时间中用户在各个时间段用户访问情况,也可按照上面的三个指标细分

3. 日志数据的处理

IP 信息的提取

​ IP 中一般可以提取出两种重要信息,城市和网络服务商;城市可以是我们对网站用户进行地域分析,而网络服务商可以分析用户网络的类型,一般使用以下的方法来提取 IP 的信息

  1. 免费的API接口,例如淘宝IP地址库(http://ip.taobao.com/instructions.php)
  2. 收费的API接口,直接搜索IP查询接口
  3. 本地的数据,例如GeoIP,纯真IP数据库

​ IP在使用中的时候,为了保证我们对IP数据的识别,因为IP本身就是一个32位的二进制数字,所以通常我们不适用IP本身的形式在数据库中进行比对,而是通过将IP转化为十进制的数字存储,而我们存储在数据库中的IP通常来说一个地址对应的会是一个IP范围,只需要比对转化之后的数字是否在这个区间即可;具体这类的转换过程我就不过多说明,有兴趣的可以自己去查询一下

4. MaxCompute处理数据

4.1 MaxCompute概述

大数据计算服务(MaxCompute,原名ODPS )由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的数据仓库解决方案

  1. 它本身是一个分布式的架构,且扩展性很好;
  2. 可以根据数据规模自动调整集群存储和计算能力,最大化发挥数据的价值;
  3. 开箱即用,仅需要几步操作,就可以上传数据、分析数据并得到结果
  4. 数据存储安全可靠,三重备份、读写鉴权、应用沙箱、系统沙箱等多层次安全机制
  5. 支持多用户的写作,在保障数据安全的前提下,最大化工作效率

4.2 MaxCompute基本概念

  1. 项目空间 Project:可以简要的看作为关系型数据库的一个库;一个用户可以有多个项目空间,通过授权,多个项目空间可以进行相互访问
  2. 表 Table:所有的数据都会存放在表中,表中的列可以是MaxCompute支持的任意数据类型,MaxCompute中不同类型的操作计算对象,包括输入输出都是以表的形式来处理的
  3. 分区 Partition:是指创建表时所指定的分区空间,即指定表内的某个字段作为我们的分区列,大多数情况下,分区可以看成是文件系统下的目录,MaxCompute将分区列的每一个值作为一个分区目录
  4. 任务 Task:是MaxCompute的基本计算单元,SQL和MapReduce功能都是通过Task来完成的
  5. 资源 Resource:通过依赖资源来完成一些自定义功能UDF或者MapReduce功能

4.3 MaxCompute架构图

架构图

4.4 MaxCompute下载与配置

参考下载地址:https://help.aliyun.com/product/27797.html

本地配置,解压下载好的文件,在conf目录下面找到odps_config.ini文件,配置前三个属性,后面剩余的属性就按照默认配置即可

end_point=https://service.odps.aliyun.com/api
log_view_host=http://logview.odps.aliyun.com 
https_check=true	
data_size_confirm=100.0
update_url=http://repo.aliyun.com/odpscmd
use_instance_tunnel=true
instance_tunnel_max_record=10000

MaxCompute配置

配置完成后就可以启动客户端工具了。双击bin目录下的odpscmd.bat文件即可,命令行模式变成如下,表示启动成功

运行

4.5 数据上传

在客户端命令行依次执行以下命令,建立表并上传相对应的数据

# 建立表
CREATE TABLE t_web_access_log_content (content STRING);
CREATE TABLE t_cz_ip_content (content STRING);# 上传数据
tunnel upload -fd "NoDelimiter" [log.txt的路径] t_web_access_log_content;
tunnel upload -fd "NoDelimiter " [ip.txt的路径] t_cz_ip_content;# 检查表及数据
show tables;
select * from t_cz_ip_content limit 10;# 对于乱码问题,只是显示问题,可以不做处理

数据上传并展示

4.6 后续数据处理

数据的处理部分使用的是阿里云的MaxCompute工具来进行处理,这里我不详细介绍这个工具是如何使用的,只是带着大家看一下,中间的一些过程即可;

  1. 工作空间中,进入数据开发界面去新建一个业务流程

新建业务流程

  1. 进行业务流程节点的开发以及对应节点的业务开发,至于其中每个节点当中对应的处理语句我就不多概述了

流程节点

  1. 当所有的数据节点都被处理好之后,点击左上角的提交按钮,填写提交信息,之后便可看到提交是否成功

提交

  1. 提交结束后,没有问题就可以运行,然后等待每一个节点的运行完成

    绿色表示执行完成,蓝色表示正在执行,黄色表示等待,红色表示执行失败

运行

  1. 刷新页面,查看执行流程,执行过程大概在10分钟以内,如果全是绿色表全部执行完毕且成功,这时候你中间执行的每一步都会生成对应的表,以供后续使用

运行完成

5. Quick BI图标展示数据

Quick BI提供海量数据实时在线分析服务,支持拖拽式操作、提供了丰富的可视化效果,可以轻松自如地完成数据分析、业务数据探查、报表制作等工作

5.1 Quick BI优势

  1. 无缝继承云上数据库,支持MaxCompute和RDS
  2. 具有丰富的图标,可视化效果,满足不同场景需求,可以对数据进行多维的分析
  3. 可以快速的搭建数据门户,且可以实时对数据进行处理,支持海量数据的在线分析
  4. 具有安全管控数据权限,内置组织成员管理

5.2 分析结果

  1. 流量分析:PV,UV,IP,作为趋势图
  2. 来源分析:访问来源,搜索来源,作为饼状图
  3. 访问分析:链接Top N,IP黑名单,作为表格
  4. 访客分析:地域分布,浏览器,操作系统,网络运营商,作为地图

5.3 根据结果提供解决思路

  1. 对服务器的地域调整,网络运营商的提示,来解决网站内容加载慢的问题
  2. 修改网站的样式,同时对不同用户多种浏览器进行适配
  3. 可以针对搜索引擎的推广,增加用户的访问量
  4. 通过对网站程序安全的加强,以及对黑名单的分析,来尽可能的避免网站的业务受损和崩溃

5.4 Quick BI流程

流程

  1. 获取数据,点击数据源按钮,选择云数据库来获取数据,这里我们对应上面使用的MaxCompute,输入对应的账号信息之后,便可以得到我们之前所处理完的数据,在进行链接前一定要进行连接测试,避免数据访问出现错误
  2. 数据建模,对获取到的数据,选择你需要的表,进行对应的数据集的建立,同时对其中一些信息进行维度的类型切换,维度/度量之间的转换,或者本身内部的一个二次处理,得到你最终的一个结果
  3. 数据分析,对你数据建模之后得到的数据,选择合适的展示模板,然后填入对应的你想展示的信息,最后,填入你所需要的限制信息即可,当然一个仪表板里面可以有多个数据窗格,最后全部处理完记得保存

数据分析

  1. 数据分享,就是你做好的数据分析,可以同步给你对应的账号或者做成时间段公开的连接,去进行公开访问

到这里,一个网站的基础分析也就大概做出来了,当然这个相对于后台来说,可以通过特定的接口,去把数据进行接入,然后实时同步进行分析,这就需要后端的开发人员去做一些配置即可

这篇关于网站日志分析-MaxCompute的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/czyying123/article/details/115033883
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/159319

相关文章

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File