实验室一直使用Squid来做代理服务器,今天突发奇想希望统计一下大家的上网情况。故写了一个简单的网络流量分析脚本。拿来和大家分享一下。
首先得打开Squid的access_log功能:
access_log /usr/local/squid/var/logs/access.log squid
默认的日志格式如下:
access.log中的日志规则:time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost type
1 time 表示客户端访问的时间,毫秒,从1970/0101开始
2 elapsed 客户请求所花费的时间,毫秒
3 remotedhost 客户机的IP地址
4 code/status 客户请求类型/HTTP返回码
5 bytes 客户请求的数据大小
6 method 客户请求的方法
7 URL 客户请求的URL
8 rfc931 客户认证信息
9 peerstatus/peerhost 缓冲/目的IP
10 type 客户请求对象类型
查看活跃的客户端
cat access.log | awk '{print$3}' | sort > sortresult.log
cat access.log | awk '{print$3}' | sort -u > iplist.log
sortresult.log中存储就是每次访问来源的IP地址,iplist.log中存储的是sortresult中不重复的IP,也就是客户端IP列表。
查看总的链接请求个数:
cat sortlist.log | wc -l
查看某个IP发出了多少次链接请求:
cat sortlist.log | grep 210.45.***.*** |wc -l
流量统计
统计总的数据流量大小(以M为单位):cat access.log |awk '{print $5}'|awk '{m+=$1}END{print m/1024/1024}'
查看各种请求方式的数量(以POST为例):
cat access.log | awk '{print $6}'|grep "POST"|wc -l
查看有多少链接来自腾讯QQ:cat access.log |grep ".qq.com" |wc -l
最后将希望特别关注的信息写入了一个shell脚本,以日志文件名为参数,产生自己关心的数据。
#!/bin/bash
echo -n "总的网络链接数:"
cat $1 | wc -l
echo -n "访问数据总流量(单位:M)"
cat $1 |awk '{print $5}'|awk '{m+=$1}END{print m/1024/1024}'
echo -n "访问 renren.com的链接数:"
cat $1 | grep ".renren."|wc -l
echo -n "访问 xiaonei.com的链接数:"
cat $1 | grep ".xiaonei."|wc -l
echo -n "访问 qq.com的链接数:"
cat $1 |grep ".qq."|wc -l
echo -n "访问 taobao.com的链接数:"
cat $1 | grep ".taobao."|wc -l
echo -n "访问 youku.com的链接数:"
cat $1 | grep ".youku."|wc -l
echo -n "访问 ykimg.com(youku的镜像站点)的链接数:"
cat $1 | grep ".ykimg."|wc -l
echo -n "访问 ku6.com的链接数:"
cat $1 |grep ".ku6."|wc -l
echo -n "访问 tudou.com的链接数:"
cat $1 |grep ".tudou."|wc -l
echo -n "访问 paipai.com的链接数:"
cat $1 |grep ".paipai."|wc -l
echo -n "访问 sina.com的链接数:"
cat $1 | grep ".sina."|wc -l
echo -n "访问 163.com的链接数:"
cat $1 | grep ".163."|wc -l
echo -n "访问 sohu.com的链接数:"
cat $1 | grep ".sohu."|wc -l
echo -n "访问 xunlei.com的链接数:"
cat $1 |grep ".xunlei."|wc -l
echo -n "访问 baidu.com的链接数:"
cat $1 |grep ".baidu."|wc -l
echo -n "访问 google.com的链接数:"
cat $1 |grep ".google."|wc -l
echo -n "访问 neu6.edu的链接数:"
cat $1 |grep ".neu6."|wc -l
对下午4个小时的网络日志进行分析的结果是:
总的网络链接数:48441
访问数据总流量(单位:M)1587.98
访问 renren.com的链接数:1253
访问 xiaonei.com的链接数:94
访问 qq.com的链接数:6461
访问 taobao.com的链接数:3544
访问 youku.com的链接数:1610
访问 ykimg.com(youku的镜像站点)的链接数:953
访问 ku6.com的链接数:54
访问 tudou.com的链接数:113
访问 paipai.com的链接数:1349
访问 sina.com的链接数:1602
访问 163.com的链接数:1692
访问 sohu.com的链接数:501
访问 xunlei.com的链接数:58
访问 baidu.com的链接数:2375
访问 google.com的链接数:1464
访问 neu6.edu的链接数:388
转