使用脚本查看SQUID日志并更改日志里的时间戳为标准时间

使用脚本查看SQUID日志并更改日志里的时间戳为标准时间

以下为SQUID输出的日志,有时为了查看方便SQUID输出的为时间戳格式,很难看懂,以下是具体说明:

1422492566.282 (访问时间) 0(持续时长) 192.168.112.82(访问的原IP) TCP_DENIED/403(访问的结果和访问的状态码 ) 304(传输给客户端的容量) HEAD(请求方式) http://dell.com/(访问地址) -(客户端的IDENY查询一般为关闭) HIER_NONE/- (代码等级) text/html(http请求头部)

新建一个转换时间戳的perl命令如下

[root@Squid squid]# cat /home/app/squidtime.pl
#! /usr/bin/perl -p
#s/^\d+\.\d+/localtime $&/e
sub get_log_time
{
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
  $year += 1900;
  $mon +=1;
  my $logdate=sprintf("d-d-d d:d:d",$year,$mon,$mday,$hour,$min,$sec);
  return ($logdate);
}
s/^\d+\.\d+/get_log_time $&/e

以上命令只是转化时间,但并没有输入相关内容给这个perl处理,接下来是建一个SHELL脚本来输入日志内容

[root@Squid squid]# cat /usr/bin/squidlog.sh
if [ $# -ge 2 ]
then
echo "你输入的参数错误!"
elif [ $# -eq 0 ]
then
tail -f /log/squid/access.log | /home/app/squidtime.pl
else
tail -f /log/squid/access.log | /home/app/squidtime.pl | grep $1
fi```
最好把这个squidlog.sh放到/usr/bin/目录下去,这样无论你在哪个目录下都是可以使用这个squidlog.sh这个脚本的,记得更改权限为可执行,
使用方法为
 squidlog.sh            为查看所有的内容,不进行过滤
 squidlog.sh    192.168.99.18 这样后面带一串字符就表示只过滤再有这串字符的日志内容
以上只是为是方便查看日志时使用,若是全部都用命令打出来 命令会很长。
再介绍个通过一个实用的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。

你可能感兴趣的:(使用脚本查看SQUID日志并更改日志里的时间戳为标准时间)