网站日志分析-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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/159319

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网