1.SARG介绍
SARG的全称是:Squid Analysis Report Generator
SARG是非常好用的Squid日志分析工具,它输出html格式, 可以详细列出每一位用户访问internet的站点信息,排名,连接次数,访问量,访问量等。
软件的主页: 目前最新的版本是sarg-2.2.7.1.tar.gz
2.配置环境
CentOS-5.4 + squid-2.6.STABLE23 + sarg-2.2.7
3、安装SARG
解压缩安装软件包
#tar zxvf sarg-2.2.7.1.tar.gz
#cd sarg-2.2.7.1.tar.gz
#./configure --prefix=/usr/local/sarg --enable-bindir=/usr/local/sarg/bin
#make
#make install
安装完可执行文件是/usr/local/sarg/bin/sarg,配置文件是/usr/local/sarg/etc/sarg.conf。
4、配置SARG
安装成功后,在/usr/local/sarg/etc目录中,有一个配置文件为sarg.conf,我们通过修改配置文件的参数,来达到对日志进行有规则的分析,也可以通过命令行参数实现。
我的相关配置如下:
language english 指定网页报告文件的语言类型,不支持中文网页。
access_log /var/log/squid/access.log 指定squid日志文件绝对路径。
title "squid user access reports" 指定网页标题
output_dir /var/www/html/sarg 指定网页报告文件输出路径
overwrite_report no 是否覆盖报告,当那个日期的报告已经存在时是否覆盖掉
mail_utility mail
topsites_num 100
max_elapsed 28800000
charset UTF-8
resolve_ip no
user_ip no 使用用户名显示
至此,sarg.conf文件的配置基本可以了.
附:
sarg的命令行解释如下:
# sarg -h
sarg: usage [options...]
-a hostname or ip address 指定不计入排序的主机名称或地址
-b useragent log 用户代理日志文件输出
-c exclude file 指定文件名为/usr/local/sarg/norecords,对于客户端访问的这些站点,将不会被top排序中
-d date from-until dd/mm/yyyy-dd/mm/yyyy 指定日期范围
-e email address to send reports (stdout for console) 指定报告接收者邮件
-f config file (/usr/local/sarg/sarg.conf) 指定配置文件
-g date format [e=europe -> dd/mm/yy, u=usa -> mm/dd/yy] 指定输入的日期格式
-i reports by user and ip address 指定客户端排序采用用户名或者ip地址
-l input log 指定squid日志文件绝对路径。
-o output dir 指定网页报告文件输出路径,推荐使用webmaster或其他非admin用户运行sarg。
-p use ip address instead userid (reports) 使用ip地址作为userid域
-w temporary dir 指定临时文件目录,请确认该目录所在的分区足够大。
5,计划任务执行
一般来说,我们希望系统可以自动生成报告,在sarg的主页上可以找到日/月/年的自动生成脚本,再修改下,以适合自己的生产应用,我自己建立执行脚本分为小时、日、周三个文件:
每小时:
#!/bin/bash
#hour
#----------------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
Date=$(date -d "1 hours ago " +"%y%m%d%H")
/usr/local/squid/sbin/squid -k rotate
sleep 10
Squiddir='/var/log/squid/'
Tempdir='/opt/squid_log/'
Access='access.log.0'
/bin/cp ${Squiddir}${Access} ${Tempdir}access${Date}.log
/usr/local/sarg/bin/sarg -o /var/www/html/sarg/hours -l ${Tempdir}access${Date}.log
每日:
#!/bin/bash
#day
#----------------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
Tempdir='/opt/squid_log/'
Date=$(date -d "1 day ago " +"%y%m%d")
/bin/sort -m -t " " -k 1 -o $Tempdir${Date}log_all.log ${Tempdir}access${Date}*.log
/bin/rm ${Tempdir}access${Date}*.log -rf
/usr/local/sarg/bin/sarg -o /var/www/html/sarg/days -l ${Tempdir}${Date}log_all.log
每周:
#!/bin/bash
#week
#----------------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
Tempdir='/opt/squid_log/'
Date=$(date -d "1 week ago " +"%y%m%d")
#YESTERDAY=$(date -date "1 week ago" +%d/%m/%Y)
/bin/sort -m -t " " -k 1 -o $Tempdir${Date}weeklog_all.log ${Tempdir}*log_all.log
/usr/local/sarg/bin/sarg -o /var/www/html/sarg/week -l ${Tempdir}${Date}weeklog_all.log
加入定时任务:
0 6-23 * * * /usr/local/sarg/bin/sarg_hour.sh > /dev/null 2>&1
30 05 * * * /usr/local/sarg/bin/sarg_day.sh > /dev/null 2>&1
30 09 * * 6 /usr/local/sarg/bin/sarg_week.sh > /dev/null 2>&1
记得在/var/www/html/sarg下建立hours,days,week目录,还有要启动httpd服务。
这时候任务就完成了,我们要设置一下默认的index.html文件,加入hours,days,weeks的目录连接!