做 者:JackTian
微信公众号:杰哥的IT之旅(ID:Jake_Internet)html
在上一篇文章中,咱们介绍了Squid代理服务器的基本概念,代理工做机制,代理基本类型,安装 Squid 服务,构建传统代理,透明代理以及 ACL 访问控制,文章连接可参考:《万字长文带你了解最经常使用的开源 Squid 代理服务器》,那么今天,给你们介绍一款经常使用的 Squid 日志分析软件,但愿对有所帮助的同窗在从此的平常工做中可以运用的上。node
Sarg:全名:Squid Analysis Report Generator,是一款Squid日志分析工具,采用HTML的格式将用户所访问的 Internet 网站信息、时间占用信息、排名、链接次数、访问量等相关信息进行罗列;web
Squid 日志分析软件:http://www.squid-cache.org/Misc/log-analysis.htmlapache
1、Sarg 部署过程
安装 GD 库vim
# yum -y install gd gd-devel
安装 sarg安全
# mkdir /usr/local/sarg # cd /usr/local/sarg/ # tar zxf sarg-2.3.7.tar.gz # cd sarg-2.3.7 # ./configure --prefix=/usr/local/sarg/ -sysconfdir=/etc/sarg --enable-extraprotection && make && make install
配置项含义:bash
-sysconfdir=/etc/sarg:配置文件目录服务器
配置微信
# vi /etc/sarg/sarg.conf 7 access_log /usr/local/squid/var/logs/access.log // 指定 squid 的访问日志文件 25 title "Squid User Access Reports" // 网页 title 标题 120 output_dir /var/www/html/sarg // sarg 报告的输出目录 178 user_ip no // 使用用户名显示 184 topuser_sort_field connect reverse // 在 top 排序中,指定链接次数,访问字节数,采用降序排列 190 user_sort_field connect reverse // 对于用户访问记录,链接次数按降序排列 206 exclude_hosts /usr/local/sarg/noreport // 指定不计入排序的站点列表文件 257 overwrite_report no // 当那个日期报告已经存在,是否覆盖报告 289 mail_utility mailq.postfix // 发送邮件报告的命令 434 charset UTF-8 // 使用字符集 518 weekdays 0-6 // 指定 top 排序时的星期周期,0 为周日 525 hours 9-12,14-16,18-20 // 指定 top 排序时的时间周期 633 www_document_root /var/www/html // 网页根目录
运行
在上述的配置中,添加了不计入排序的站点,须要存在/usr/local/sarg/noreport文件中,添加的域名将不被显示在排序中。直接执行 sarg 便可启动一次记录,建议设置符号连接,而后执行 sarg,会有输出信息显示。ide
# touch /usr/local/sarg/noreport # ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ # sarg SARG: 纪录在文件: 0, reading: 100.00% SARG: 没有找到纪录 SARG: 结束
2、Sarg 相关命令帮助
-a:指定不计入排序的主机名称或地址
-b:用户代理日志文件输出
-c:指定不计入排序的站点列表文件名为 /usr/local/sarg/norecords,对于客户端访问的这些站点,将不会被 top 排序中;
-d:指定日期范围
-e:指定报告接收者邮件
-f:指定配置文件
-g:指定输入的日期格式
-h:帮助信息
-i :指定客户端排序采用用户名或者 IP 地址
-l :指定 squid 日志文件绝对路径。
-o:指定网页报告文件输出路径,推荐使用 webmaster 或其余非 admin 用户运行 sarg。
-p:使用 IP 地址做为 userid 域
3、计划任务
可将 sarg 作成计划任务,按期执行。
# vim /usr/local/sarg/daily.sh // 每日日报 #!/bin/bash #Get current date TODAY=$(date +%d/%m/%Y) #Get one week ago today YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y) /usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null exit 0 # chmod +x /usr/local/sarg/daily.sh # crontab -e // 添加定时任务,天天 0 点执行 00 00 * * * /usr/local/sarg/daily.sh # chkconfig crond on
除了日报之外,还可写周报、月报、邮件的方式发送报告,可参考以下脚本:
周报告:
------------------------------------- #!/bin/bash #Get current date TODAY=$(date +%d/%m/%Y) #Get one week ago today YESTERDAY=$(date --date "1 week ago" +%d/%m/%Y) /usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -o /usr/local/apache/htdocs/reports/weekly -z -d $YESTERDAY-$TODAY exit 0 月报告: ------------------------------------- #!/bin/bash #Get current date TODAY=$(date +%d/%m/%Y) #Get one week ago today YESTERDAY=$(date --date "1 month ago" +%d/%m/%Y) /usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -o /usr/local/apache/htdocs/reports/monthly -z -d $YESTERDAY-$TODAY /usr/local/squid/bin/squid -k rotate exit 0 经过邮件发送报告: ------------------------------------- #!/bin/bash #Get current date TODAY=$(date +%d/%m/%Y) #Get one week ago today YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y) /usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -e user@site.com -z -d $YESTERDAY-$TODAY exit 0
4、常见问题
rpm 包安装时,没法安装,报错
warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de:
解决方法:
在 rpm 语句结尾加上 --force --nodeps,将rpm -ivh .rpm改为rpm -ivh .rpm --force --nodeps就能够了。
nodeps 的意思是忽视依赖关系,在 Linux 环境下各软件间或多或少都会存在相关依赖关系,有了这两个设置选项便可忽略这些依赖关系,强制安装或者卸载。
例如:
rpm -ivh gd-devel-2.0.35-11.el6.x86_64.rpm --force --nodeps
或者尝试卸载:
经过man rpm,发现--allmatches能够解决这个问题。
例如:
# rpm -e --allmatches --nodeps gd*
执行 sarg 命令时,报错
# sarg SARG: Unknown sort order "BYTES" for parameter "topuser_sort_field"
解决方法:
编辑sarg.conf配置文件,将文件中第 184 行的内容为:topuser_sort_field connect BYTES reverse中的BYTES去掉;
# vi /etc/sarg/sarg.conf 184 topuser_sort_field connect BYTES reverse
而后执行命令sarg便可;
# sarg SARG: 纪录在文件: 0, reading: 100.00% SARG: 没有找到纪录 SARG: 结束