Squid服务日志分析

Apache 和 Squid 是两种著名的代理缓存软件,但Squid 较 Apache 而言是专门的代理缓存服务器软件,其代理缓存的功能强大,支持 HTTP/1.1 协议,其缓存对象也较多;并且 Squid 的缓存管理模块和访问控制模块功能很强大。它们有一定的相似之处,所以在分析完Apache日志后再看Squid日志就容易多了。

1 Squid日志分类

Squid的日志系统相对比较完善,常用日志分为如下两个:分别是access.log 和cache.log。

作用:

access.log;客户端使用代理服务器的记录文件,访问日志位置在squid.conf中修改;

cache.log; 缓存在运行时的状态信息和调试信息,一般情况下容量不大。缓存日志位置在squid.conf中修改。

当代理服务器运行时,所有客户提出的请求,以及Squid处理的结果都会被记录在/var/log/squid/access.log文件里,使得access.log文件的增长速度很快,通常会mount一个比较大的磁盘作为存储空间。

注意:squid下还有一类日志,store.log它记录每个进入和离开缓存的目标信息,参考价值不大,这里不做介绍。

2典型Squid访问日志分析

下面给出一条典型的Squid访问日志:

对这条日志的分析见表1。

结果/状态码 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

3 Squid时间戳转换

(1).Squid 时间戳(1356693954.014)看起来有点别扭,下面通过脚本将时间戳换算成我们认识的时间:

#perl -pe's/^\d+\.\d+/localtime($&)/e;' access.log

经过Perl程序变化后的的时间直观的显示出来,便于查看。

(2).将Squid输出日志格式变形的脚本

有时需要动态显示squid日志的第3、8、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

4 Squid日志位置:

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脚本使用简单,速度快,报告详细,免去手工分析的麻烦。分析功能包括:每小时流量、文件大小比例、文件扩展名比例、状态码比例、命中率比例等。其格式与流量统计报告分别如图2、图3所示。Scalar的下载地址是http://scalar.risk.az/scalar095/scalar.awk

5 图形化日志分析工具

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网络日志分析与流量监控》一书。

Squid服务日志分析的更多相关文章

  1. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

  2. ELK日志分析方案

    针对公司项目微服务化,随着项目及服务器的不断增多,决定采用ELK(Elasticsearch+Logstash+Kibana)日志分析平台进行微服务日志分析. 1.ELK整体方案 1.1 ELK架构图 ...

  3. squid日志分析

    sarg对squid的日志流量分析报表(按小时,天,周生成) 1.SARG介绍 SARG的全称是:Squid Analysis Report GeneratorSARG非常好用的Squid日志分析工具 ...

  4. zipkin+elk微服务日志收集分析系统

    docker安装elk日志分析系统 在win10上安装docker环境 tip:win7/8 win7.win8 系统 win7.win8 等需要利用 docker toolbox 来安装,国内可以使 ...

  5. 【ElasticSearch】 使用AWS云ES服务来分析程序日志

    最近公司系统升级,有些API的调用接口达到了每天10几万的请求量.目前公司里的日志,都是写文本文件中的.为了能够更好的分析这些日志数据,公司采用了AWS 的 ElasticSearch服务来分析日志. ...

  6. Samba日志分析

    Samba日志分析 随着我们文件共享安全级别的提高,越来越多的情况下需要对日志进行记录并审计.Linux平台下的Samba服务的配置文件是smb.conf,有不少图形化配置工具例如Webmin.smb ...

  7. Linux 日志分析工具之awstats

    一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...

  8. 【Linux】日志分析及管理

    日志的作用   用于记录系统.程序运行中发生的各种事件   eg: [root@localhost ~]# yum install -y httpd [root@localhost ~]# tail ...

  9. Squid 代理服务器日志管理

    简介: Squid 服务器日志增长是很快的,如果不做处理的话,可以会由于系统限制单文件大小,而导致 Squid 服务停止,太大的日志文件也不适合分析. 一.日志配置 shell > grep ' ...

随机推荐

  1. 《Java中的不可变类》

    //不可变类举例: /* 下面程序试图定义一个不可变类Person类,但=因为Person类包含一个引用类型的成员变量, 且这个引用类是可变类,所以导致Person类也变成了可变类. */ class ...

  2. QUICK START GUIDE

    QUICK START GUIDE This page is a guide aimed at helping anyone set up a cheap radio scanner based on ...

  3. java EE实现动态SQL的

    结果图 情况一:

  4. js限制文本框只能输入整数或者带小数点[转]

    这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...

  5. GCD线程间通信

    从子线程回到主线程 dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{     // 执 ...

  6. M3: 发送邮件附件(2)

    本小节介绍如何通过邮件将生成的贺卡发送给朋友.使用到了EmailMessageAPI, 需要引入的命名空间为Windows.ApplicationModel.Email. 请确保完成了以前的章节. 在 ...

  7. CE 文件读写操作

    写入字符到文件中: // TODO: 写字符到文件 // 参数: CString类型的文件名FileName;char *类型的数据内容;unsigned int类型内容长度 // 返回: 成功返回T ...

  8. Android学习七:new Date使用

    1.例子 学习时间函数,并实现了简单的多个按钮监听同一个事件的方法 2.代码 代码很简单,也很清晰 package com.example.datetime; import java.text.Sim ...

  9. C#中的async和await

    其实这两个关键字的功效比之前的异步方法调用有一个好处,那就是异步阻塞的方法可以有返回值.之前都是通过回调函数实现,执行上下文会切换,不过和这个执行过程类似.可以对这两个关键字这么理解:遇到async的 ...

  10. MyEclipse Spring 学习总结二 Bean的生命周期

    文件结构可以参考上一节 Bean的生命周期有方法有:init-method,destroy-method ApplicationContext.xml 文件配置如下: <?xml version ...