本文主要是介绍网站日志分析-MaxCompute,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网站访问日志是用户在访问网站服务器时产生的日志,它包含了各种原始信息,一般以.log结尾。通过它就可以清楚的知道用户的IP,访问时间,请求链接,请求状态,请求字节数,来源链接,用户操作系统,浏览器内核,浏览器名称,浏览器版本等等信息。对网站日志的分析统计可以使我们了解网站当前的一些状况,为网站的各种优化升级甚至公司营销策略提供依据。
1. 了解网络日志分析
1.1 基本介绍
-
日志:网络设备、系统及服务程序等,在运作时都会产生一个叫 log 的事件记录。它的每一行都记载着日期、时间、使用者及动作等相关操作的描述
-
网站日志:网站在运行过程中所产生的日志、包括系统日志和程序日志
a)系统日志:一般就是网站所基于的服务器容器所自动生成的日志,如访问日志,系统错误日志等等
b)程序日志:由用户在程序中自定义构建的
1.2 网站日志分析的重要性
网站日志本身并没有太大价值,而当我们对其进行分析并利用的时候就会产生很大的价值
通过对网站日志的分析,可以了解:
- 网站的运行状况(如网站PV,UV)
- 网站的安全状况(如恶意攻击,暴力密码破解)
- 网站的运用状况(如搜索引擎流量来源)
- 网站的用户信息(如操作系统,浏览器)
这些信息可以给我们提供一些决策支持,比如大流量下增加服务器,面对攻击提升网站的安全性,以及针对不同的搜索来源,改变网站的营销策略等等
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"%r"%s%b"></Valve>
</Host>
pattern日志格式详解
2. 网络日志的搜集
2.1 常见数据
根据上面的对于Nginx和Tomcat的日志配置我们能够看的出来,一个访客在访问网页之后,我们可以获取到许多信息,但是这些信息,并不是所有的都是我们在后续数据处理所需要的,所以我们需要对这些信息进行分析处理,熟悉后端爬虫的朋友们,就大概可以根据上面知道,我们到手的会是一条什么样子的数据,所以对于所获得数据,我们可以直接利用Xpath去处理数据,获取到我们想要的数据并进行保存
-
用户的ip:这条数据我们可以根据ip获取到用户对应的城市以及网络运营商,而不是单纯的去保存一个ip
-
访问时间:上面两个服务器都是配置到准确的时分秒,我们可以根据这个来提取有效的访问小时数即可
-
请求链接:我们只需要提取有效链接即可
链接访问Top N:即用户访问最多的链接
恶意攻击ip:搜集疑似恶意攻击本网站的ip,用于ip黑名单
-
来源链接:即分类(自身,搜索引擎等等)
-
客户端信息:提取用户操作系统,浏览器名称等等
下面便是一条我们常见的获取到的数据信息(为了数据安全性,我做了一定的随机修改),当然为了好使用,我们都会对其进行初步的处理,给它的每一行加上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 常见分析指标
- IP(独立IP):即独立IP数,00:00 - 24:00内相同IP地址仅被计算一次
- PV(访问量):即Page View,即页面浏览量,用户每次刷新即被计算一次
- UV(独立访客):即Unique Visitor,访问您网站的一个客户端为一个访客(一般在Cookie中分配唯一编号)
- 访问趋势图:即一段时间中用户在各个时间段用户访问情况,也可按照上面的三个指标细分
3. 日志数据的处理
IP 信息的提取
IP 中一般可以提取出两种重要信息,城市和网络服务商;城市可以是我们对网站用户进行地域分析,而网络服务商可以分析用户网络的类型,一般使用以下的方法来提取 IP 的信息
- 免费的API接口,例如淘宝IP地址库(http://ip.taobao.com/instructions.php)
- 收费的API接口,直接搜索IP查询接口
- 本地的数据,例如GeoIP,纯真IP数据库
IP在使用中的时候,为了保证我们对IP数据的识别,因为IP本身就是一个32位的二进制数字,所以通常我们不适用IP本身的形式在数据库中进行比对,而是通过将IP转化为十进制的数字存储,而我们存储在数据库中的IP通常来说一个地址对应的会是一个IP范围,只需要比对转化之后的数字是否在这个区间即可;具体这类的转换过程我就不过多说明,有兴趣的可以自己去查询一下
4. MaxCompute处理数据
4.1 MaxCompute概述
大数据计算服务(MaxCompute,原名ODPS )由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的数据仓库解决方案
- 它本身是一个分布式的架构,且扩展性很好;
- 可以根据数据规模自动调整集群存储和计算能力,最大化发挥数据的价值;
- 开箱即用,仅需要几步操作,就可以上传数据、分析数据并得到结果
- 数据存储安全可靠,三重备份、读写鉴权、应用沙箱、系统沙箱等多层次安全机制
- 支持多用户的写作,在保障数据安全的前提下,最大化工作效率
4.2 MaxCompute基本概念
- 项目空间 Project:可以简要的看作为关系型数据库的一个库;一个用户可以有多个项目空间,通过授权,多个项目空间可以进行相互访问
- 表 Table:所有的数据都会存放在表中,表中的列可以是MaxCompute支持的任意数据类型,MaxCompute中不同类型的操作计算对象,包括输入输出都是以表的形式来处理的
- 分区 Partition:是指创建表时所指定的分区空间,即指定表内的某个字段作为我们的分区列,大多数情况下,分区可以看成是文件系统下的目录,MaxCompute将分区列的每一个值作为一个分区目录
- 任务 Task:是MaxCompute的基本计算单元,SQL和MapReduce功能都是通过Task来完成的
- 资源 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
配置完成后就可以启动客户端工具了。双击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工具来进行处理,这里我不详细介绍这个工具是如何使用的,只是带着大家看一下,中间的一些过程即可;
- 工作空间中,进入数据开发界面去新建一个业务流程
- 进行业务流程节点的开发以及对应节点的业务开发,至于其中每个节点当中对应的处理语句我就不多概述了
- 当所有的数据节点都被处理好之后,点击左上角的提交按钮,填写提交信息,之后便可看到提交是否成功
-
提交结束后,没有问题就可以运行,然后等待每一个节点的运行完成
绿色表示执行完成,蓝色表示正在执行,黄色表示等待,红色表示执行失败
- 刷新页面,查看执行流程,执行过程大概在10分钟以内,如果全是绿色表全部执行完毕且成功,这时候你中间执行的每一步都会生成对应的表,以供后续使用
5. Quick BI图标展示数据
Quick BI提供海量数据实时在线分析服务,支持拖拽式操作、提供了丰富的可视化效果,可以轻松自如地完成数据分析、业务数据探查、报表制作等工作
5.1 Quick BI优势
- 无缝继承云上数据库,支持MaxCompute和RDS
- 具有丰富的图标,可视化效果,满足不同场景需求,可以对数据进行多维的分析
- 可以快速的搭建数据门户,且可以实时对数据进行处理,支持海量数据的在线分析
- 具有安全管控数据权限,内置组织成员管理
5.2 分析结果
- 流量分析:PV,UV,IP,作为趋势图
- 来源分析:访问来源,搜索来源,作为饼状图
- 访问分析:链接Top N,IP黑名单,作为表格
- 访客分析:地域分布,浏览器,操作系统,网络运营商,作为地图
5.3 根据结果提供解决思路
- 对服务器的地域调整,网络运营商的提示,来解决网站内容加载慢的问题
- 修改网站的样式,同时对不同用户多种浏览器进行适配
- 可以针对搜索引擎的推广,增加用户的访问量
- 通过对网站程序安全的加强,以及对黑名单的分析,来尽可能的避免网站的业务受损和崩溃
5.4 Quick BI流程
- 获取数据,点击数据源按钮,选择云数据库来获取数据,这里我们对应上面使用的MaxCompute,输入对应的账号信息之后,便可以得到我们之前所处理完的数据,在进行链接前一定要进行连接测试,避免数据访问出现错误
- 数据建模,对获取到的数据,选择你需要的表,进行对应的数据集的建立,同时对其中一些信息进行维度的类型切换,维度/度量之间的转换,或者本身内部的一个二次处理,得到你最终的一个结果
- 数据分析,对你数据建模之后得到的数据,选择合适的展示模板,然后填入对应的你想展示的信息,最后,填入你所需要的限制信息即可,当然一个仪表板里面可以有多个数据窗格,最后全部处理完记得保存
- 数据分享,就是你做好的数据分析,可以同步给你对应的账号或者做成时间段公开的连接,去进行公开访问
到这里,一个网站的基础分析也就大概做出来了,当然这个相对于后台来说,可以通过特定的接口,去把数据进行接入,然后实时同步进行分析,这就需要后端的开发人员去做一些配置即可
这篇关于网站日志分析-MaxCompute的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!