时间序列分析Nginx日志

服务器上,Nginx的日志很常见

网络服务日志分析,是常见的一种分析。可以根据之前的访问量,预估之后的访问量,然后根据访问量决定服务器是增加配置和带宽,还是减少。并且结合用户注册以及支付还可以分析用户转化率和支付率。

我们现在就用时间序列分析一下Nginx日志

数据采集

现在是2021年,以免纠纷,我找了一个以前的2013年现在已经废弃的网站来做示例

压缩包

服务器基本都有备份功能,会按时或者按照尺寸保存一个zip(gz、tar)作为备份

Python自带 zipfile 组件,我们可以直接加载,并且可以得到压缩包里面的内容

from zipfile import ZipFile
z = ZipFile('./access.zip')
z.namelist()

这个压缩包里面只有一个access文件

['access.log']

读文件

我们使用 pandasread_table 函数读取压缩包里的access数据

import pandas as pd
df = pd.read_table('acces.log', sep=' ')

sep 代表分隔符,日志是用的 空格 ,根据情况有也可能是“,”或者“;”

设置头文件

打开Nginx配置,可以找到记录日志的部分

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

总共我们统计了这些内容——

key value
remote_addr 远程地址
remote_user 用户
time_local 服务器时间
request 请求地址
status 状态
body_bytes_sent 页面尺寸
http_referer 来源
http_user_agent 设备
http_x_forwarded_for 真实地址

其实我们可以做很多统计,比如按照用户设备分类,按照推广地址分类,按照ip地区分类……
这次我们只做总的访问统计。

我们根据配置设置一下头文件

注意 $remote_addr - $remote_user之间有个“-”
注意 time_local 中 datetime和zone之间有空格,读取数据时候变成了两列

import pandas as pd
from zipfile import ZipFile

names = ['remote_addr', '-', 'remote_user', 'time_local', 'time_zone', 'request', 'status', 'body_bytes_sent', 'http_referer', 'http_user_agent', 'http_x_forwarded_for' ] # 设置表头

z = ZipFile('./access.zip') # 加载压缩包
f = z.open(z.namelist()[0], 'r') # 读取压缩包中第一个文件
df = pd.read_table(f, sep=' ', header=None, names=names, encoding='unicode_escape') # 按照表头读取压缩包内文件
z.close() # 关闭压缩包
df = df.drop(columns=['-']) # 去掉多余的列

读取了log数据

remote_addr	remote_user	time_local	time_zone	request	status	body_bytes_sent	http_referer	http_user_agent	http_x_forwarded_for
0	60.165.14.57	-	[17/Jun/2013:14:50:18	+0800]	GET /forum.php?mod=forumdisplay&fid=2 HTTP/1.1	200	12941	http://www.moli2.com/forum.php	Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ...	-
1	60.165.14.57	-	[17/Jun/2013:14:50:18	+0800]	GET /uc_server/avatar.php?uid=1&size=small HTT...	301	5	http://www.moli2.com/forum.php?mod=forumdispla...	Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ...	-
2	60.165.14.57	-	[17/Jun/2013:14:50:18	+0800]	GET /home.php?mod=misc&ac=sendmail&rand=137145...	200	5	http://www.moli2.com/forum.php?mod=forumdispla...	Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ...	-
3	60.165.14.57	-	[17/Jun/2013:14:50:20	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值