Squid服务日志分析html
Apache 和 Squid 是两种著名的代理缓存软件,但Squid 较 Apache 而言是专门的代理缓存服务器软件,其代理缓存的功能强大,支持 HTTP/1.1 协议,其缓存对象也较多;而且 Squid 的缓存管理模块和访问控制模块功能很强大。它们有必定的类似之处,因此在分析完Apache日志后再看Squid日志就容易多了。缓存
Squid的日志系统相对比较完善,经常使用日志分为以下两个:分别是access.log 和cache.log。服务器
做用:网络
access.log;客户端使用代理服务器的记录文件,访问日志位置在squid.conf中修改;并发
cache.log; 缓存在运行时的状态信息和调试信息,通常状况下容量不大。缓存日志位置在squid.conf中修改。ide
当代理服务器运行时,全部客户提出的请求,以及Squid处理的结果都会被记录在/var/log/squid/access.log文件里,使得access.log文件的增加速度很快,一般会mount一个比较大的磁盘做为存储空间。工具
注意:squid下还有一类日志,store.log它记录每一个进入和离开缓存的目标信息,参考价值不大,这里不作介绍。ui
下面给出一条典型的Squid访问日志:google
对这条日志的分析见表1。url
结果/状态码 TCP_MISS 表示没有命中缓存,TCP_HIT 表示命中。
下面经过一个实用的Shell命令获取比较详细的命中状况:
# cat access.log|awk '{print$4}'|sort|uniq -c|sort -nr
33 TCP_MISS/200
2 TCP_MISS/302
2 TCP_MEM_HIT/302
1 TCP_MISS/503
固然状态信息(TCP_MISS、TCP_MEM等)不止这几个。总的来讲,HIT表示命中,而TCP_MISS表示未命中。
下列标签可能出如今access.log文件的第四个域。
TCP_HIT :Squid发现请求资源最新的拷贝,并当即发送到客户端。
TCP_MISS :Squid没有请求资源的cache拷贝。
TCP_REFERSH_HIT :Squid发现请求资源旧拷贝,并发送确认请求到原始服务器。
TCP_IMS_HIT:客户端发送确认请求,Squid发送更新的内容到客户端,而不联系原始服务器。
TCP_NEGATIVE_HIT:在对原始服务器的请求致使HTTP错误时,Squid会缓存这个响应。在短期内对这些资源的重复请求,致使了是否命中。negative_ttl指令控制这些错误被Cache的时间数量。
TCP_MEM_HIT :Squid在内存cache里发现请求资源的有效拷贝,并将其当即发送到客户端。
TCP_DENIED :由于http_access或http_reply_access规则,客户端的请求被拒绝了。
TCP_REDIRECT :重定向程序告诉Squid产生一个HTTP重定向到新的URI,这一功能比较常见,例如能够用来实现访问控制、移除广告、本地镜像等,用个实例来讲,某个用户请求http://www.example.com/a.htm重定向程序将请求改变成另外一个URI,http://www.example.com/b.htm。如下是重定向日志的实例:
TCP_REDIRECT/301 277 GET http://redirector.you.com/videoplayback?3257|0|3|8 HIER_NONE comp3
(1).Squid 时间戳(1356693954.014)看起来有点别扭,下面经过脚本将时间戳换算成咱们认识的时间:
#perl -pe's/^\d+\.\d+/localtime($&)/e;' access.log
通过Perl程序变化后的的时间直观的显示出来,便于查看。
(2).将Squid输出日志格式变形的脚本
有时须要动态显示squid日志的第三、八、7列内容,以便更符合咱们平常浏览习惯,就可使用以下命令:
# tail -f /var/log/squid/access.log |awk'{print$3 "" $8""$7}'
192.168.150.148-http://safebrowsing-cache.google.com/safebrowsing/rd/ChFnb29nLXBoaXNoLXNoYXZhchAAGMPiDyDM4g8yBkPxAwD_Aw
192.168.150.148-http://safebrowsing-cache.google.com/safebrowsing/rd/ChFnb29nLXBoaXNoLXNoYXZhchAAGM3iDyDg4g8qB1DxAwD__wEyBU3xAwAH
192.168.150.148-http://en-us.fxfeeds.mozilla.com/en-US/firefox/headlines.xml
192.168.150.148-http://fxfeeds.mozilla.com/firefox/headlines.xml
192.168.150.148-http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xm
(3).能够将一个squid日志记录行分割成多个字段,使用参数传回须要的字段。
# tail -f/var/log/squid/access.log | awk '{print$3 " " $8 " " $7}'
这里选择的是客户IP及取回内容字段,显示以下:
192.168.150.146-http://jump.qq.com/clienturl_simp_80192.168.150.147- http://mm.china.com/zh_cn/images/tit_liangzhuang.gif192.168.150.148 -http://ly.zzip.com.cn/movie/list.aspx?
(4).还能够根据日志分析缓存命中率:
#cat access.log|awk ‘{print$4}’|sort|uniq -c|sort -nr
9568 TCP_IMS_HIT/304
6313 TCP_HIT/200
2133 TCP_MISS/200
1568 TCP_MISS/206
587 TCP_MEM_HIT/200
Squid的配置文件位于/etc/squid/squid.conf,可在这个文件加入以下一行内容,以定义日志文件的存储位置。
Access_log/var/log/squid/access.log squid
下面以RHEL5为例,/var/log/squid/access.log
除了命令行方式之外,采用Squid报告分析产生器(SARG)也是一种更直观的方法。
1)使用Scalar脚本分析squid日志
scalar脚本使用简单,速度快,报告详细,免去手工分析的麻烦。分析功能包括:每小时流量、文件大小比例、文件扩展名比例、状态码比例、命中率比例等。其格式与流量统计报告分别如图二、图3所示。Scalar的下载地址是http://scalar.risk.az/scalar095/scalar.awk。
SARG是一款Squid日志分析工具,它采用html格式输出,详细列出了每一位用户访问Internet的站点信息、时间占用信息、排名、链接次数及访问量等。其效果如图4所示。
图4 Webmin下调用SARG输出Squid日志
Firewall Analyzer是另外一个分析Squid日志工具,如图5所示。图中显示了Squid Cache的使用状况,TCP_HIT表示发现请求资源的拷贝,而TCP_MISS表示没有请求资源的缓存拷贝,TCP_MISS达到了76.79%,正常状况下TCP_HIT的数值要远大于TCP_MISS的值若是反过来那么说明代理服务器出现故障应当即检查。
图 5用FirewallAnalyzer分析Squid日志
在access.log文件当前路径下输入如下命令也能够输出统计信息:
#cat access.log|gawk ‘{print $4}’|sort|uniq -c|sort-nr
此外,还有几款squid专用日志分析工具也比较易用,例如LightSquid、Calamari、Squid-Graph以及Squid Analyzer。不过它们最近已不升级这里就不作介绍,感兴趣的读者能够去网上查阅资料。最后,统一利用OSSIM分析日志你们能够参阅《UNIX/Linux网络日志分析与流量监控》一书。