作 者: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

一、Sarg 部署过程
安装 GD 库

# 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

配置项含义:

  • -sysconfdir=/etc/sarg:配置文件目录

  • --enable-extraprotection:添加额外的安全保护

配置

# 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/# sargSARG: 纪录在文件: 0, reading: 100.00%SARG: 没有找到纪录SARG: 结束

二、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 域

  • -w:指定临时文件目录,确认该目录所在的分区足够大,1G 以上。

三、计划任务
可将 sarg 做成计划任务,定期执行。

# vim /usr/local/sarg/daily.sh                       // 每日日报#!/bin/bash#Get current dateTODAY=$(date +%d/%m/%Y)#Get one week ago todayYESTERDAY=$(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/nullexit 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 dateTODAY=$(date +%d/%m/%Y)#Get one week ago todayYESTERDAY=$(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-$TODAYexit 0月报告:-------------------------------------#!/bin/bash#Get current dateTODAY=$(date +%d/%m/%Y)#Get one week ago todayYESTERDAY=$(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 rotateexit 0通过邮件发送报告:-------------------------------------#!/bin/bash#Get current dateTODAY=$(date +%d/%m/%Y)#Get one week ago todayYESTERDAY=$(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-$TODAYexit 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 命令时,报错

# sargSARG: 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即可;

# sargSARG: 纪录在文件: 0, reading: 100.00%SARG: 没有找到纪录SARG: 结束
©著作权归作者所有:来自51CTO博客作者mb5fe55acf14b1a的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  2. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  3. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  4. Android如何打印std::cout/printf(重定向stdout)
  5. 获取apk签名信息
  6. 在Android应用中实现Google搜索的例子
  7. Android(安卓)手绘 - 支持保存为图片
  8. Cocos2D-HTML5 Android项目编译
  9. Android(安卓)重读官方文档 4 SharedPreferences

随机推荐

  1. android 去ListView滑动阴影
  2. Android沉浸式状态栏和手机虚拟按钮不兼
  3. Android 布局中 如何使控件居中
  4. Android 沉浸式状态栏实现,以及遇到的问题
  5. android的四大组件及其生命周期
  6. Android(安卓)获取设备和系统信息
  7. Android开发前奏
  8. Android(安卓)百度地图蓝点定位
  9. android ndk环境配置
  10. android 永远锁屏解决方法