作 者:JackTian
微信公众号:杰哥的IT之旅(ID:Jake_Internet)
在上一篇文章中,我们介绍了Squid
代理服务器的基本概念,代理工作机制,代理基本类型,安装 Squid 服务,构建传统代理,透明代理以及 ACL 访问控制,文章链接可参考:《万字长文带你了解最常用的开源 Squid 代理服务器》,那么今天,给大家介绍一款常用的 Squid 日志分析软件,希望对有所帮助的同学在今后的日常工作中能够运用的上。
Sarg
:全名:Squid Analysis Report Generator
,是一款Squid
日志分析工具,采用HTML
的格式将用户所访问的 Internet 网站信息、时间占用信息、排名、连接次数、访问量等相关信息进行罗列;
Squid 日志分析软件:http://www.squid-cache.org/Misc/log-analysis.html
# yum -y install gd gd-devel
# 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
配置项含义:
# 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,会有输出信息显示。
# touch /usr/local/sarg/noreport
# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
# sarg
SARG: 纪录在文件: 0, reading: 100.00%
SARG: 没有找到纪录
SARG: 结束
可将 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
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: 结束
扫描下方二维码,添加杰哥微信,备注:地区/城市-职业方向/学校-昵称
,即可加入杰哥的IT之旅读者群
,群内仅供学习交流、日常互动、资源分享、经验分享等,一定要记得备注,我会尽快通过好友验证的。
1、GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
2、GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
3、没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中文趋势榜第一!
4、RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
5、Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
6、为什么要学习 Markdown?究竟有什么用?
7、万字长文带你了解最常用的开源 Squid 代理服务器
今天的推荐不知道大家喜欢吗?如果你喜欢,请在文章底部留言和点赞,以表示对我的支持,你们的留言
和点赞
是我持续更新的动力哦,感谢大家!
1、点个赞,让更多的人看到这篇文章,顺便激励下我,嘻嘻。
2、关注我的原创微信公众号「杰哥的IT之旅」
,专注于IT技术干货文章,以及不定期的分享学习资料,实用工具,面试经验
等,当然了还有内推机会
哦,期待你的关注!