Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2114806
  • 博文数量: 227
  • 博客积分: 10521
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-20 14:59
个人简介

低调做人,高调做事!

文章分类

全部博文(227)

文章存档

2013年(4)

2012年(8)

2011年(16)

2010年(24)

2009年(92)

2008年(83)

分类: LINUX

2010-05-31 21:19:35

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的目录连接!
阅读(2486) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~