之前为客户架设了Squid,但客户提出查看Squid日志每回还要ssh上去看log太麻烦,通过webmin看又不太直观,想要能有日志分析一类的功能,想想决定给他们用sarg,不是多好的问题,而是用的次数较多,而且sarg用的也比较方便,它采用html格式,可以详细列出了每一位用户访问internet的站点信息,时间占用信息,排名,连接次数,访问量,访问量等。


网络环境:域环境局域网络,多网络权限有部分终端用户只能发邮件,有的部门只能在工作时间上网,其它的服务器都不能与外网联连,但是所有的终端保括服务器都能update病毒库,不过update时间不同,终端用户不能使用任何即时通信工具。
硬件环境: DELL PowerEdge 1950 E5410
CPU:Quad-Core Xeon Pro E5410
MEM:1GB (2x512MB), 667MHz, ERROR
DISK:73GB, 2.5'', 10Krpm, SAS Hard Drive, Hotplug
系统环境:CentOS6.2_x64(minimal)+Squid

第一步:安装相应的支持
注意安装sarg前一定要确认当前系统是否安装有gcc,不然sarg安装时会报错。
yum install gcc* gd gd-devel kdevelop gcc-c++  -y

第二步:下载并安装sarg
wget http://nchc.dl.sourceforge.net/project/sarg/sarg/sarg-2.3/sarg-2.3.tar.gz
tar zxvf  sarg-2.3.1-1.el6.rft.x86_64.ok.log.gz
cd sarg-2.3
./configure
make
make install

第三步:编辑sarg.conf
cp /usr/local/etc/sarg.conf /usr/local/etc/sarg.conf.bak
vim /usr/local/etc/sarg.conf
我的sarg.conf
access_log /var/log/squid/access.log #指定squid的access.log的路径
title "Squid user Access reports" #网页报告标题头
output_dir /var/www/html/sarg/ #指定网页报告文件输出路径
overwrite_report no #是否覆盖报告,当那个日期的报告已经存在时是否覆盖掉
mail_utility mail
topsites_num 100   #显示多少条报告
exclude_codes /usr/local/etc/exclude_codes
max_elapsed 28800000
charset UTF-8    #使用字符集
topuser_sort_field connect reverse bytes reverse    #在top排序中,指定连接次数(connect),访问字节数(bytes)采用降序排列,(升序用normal)
user_sort_field connect reverse BYTES reverse   #对于每个用户的访问纪录,连接次数按降序排列,(升序用normal)
exclude_users /usr/local/etc/nousers #指定不计入排序的人文件名
exclude_hosts /usr/local/etc/norecords  #指定不计入排序的站点列表文件名
usertab /usr/local/etc/user_ip  #IP和用户的映射表(报表中可以显示用户名)
resolve_ip no
user_ip no  #使用用户名显示
weekdays 0-6  #指定top排序星期周期为星期一到星期五,0表示星期天
hours 9-12,13-23 #指定top排序的时间周期为9:00-12:59,13:00-23:59

添加不计排序站点
vim /usr/local/etc/norecords
microsoft.com

执行/usr/local/bin/sarg生成报表
系统提示:
SARG: 纪录在文件: 5028, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/sarg//2012Jul16-2012Jul17

第五步:配置httpd.conf
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
vim /etc/httpd/conf/httpd.conf
第292行
DocumentRoot "/var/www/html"
改为
DocumentRoot "/var/www/html/sarg/

启动httpd
service httpd start
在浏览器里输入http://ipaddress/这时就可以看到
image

非常详细吧,当然这还没有完,这只是一次图表生成,下面要说定时生成图表和简单的用户验证

第六步:定时生成图表
# crontab -e
*/10 * * * * /usr/local/bin/sarg
注意:每个星号之间要有空格。

第七步:访问控制
除了安全原因,相信做为管理员也不会愿意这个页面让任何人随便查看,那么就设置一个用户认证
1、建立.htaccess
touch /var/www/html/sarg/.htaccess
vim  /var/www/html/sarg/.htaccess
输入:
AuthUserFile /etc/setureuser #这个setureuser是我在后面建立的存放认证用户用户名及密码的文件
AuthName UserLogin  #这个随便起名,这只是弹出对话框的题目
AuthType Basic  #用户认证的方式,用户验证方式AuthType 目前提供了Basic 和Digest 两种
require valid-user  #valid-user参数意味着user文件中的所有用户都是可用的,require valid-user 或者 require user frank 限制是所有合法用户还是指定用户
<Files .htaccess>
order allow,deny
deny from all
</Files>


2、建立用户
htpasswd –c /etc/safeuser itadmin           #初次建立用户就用-c这个参数,以后再建立新用户就不用了,更改用户密码用-m参数
New password:
Re-type new password:
Adding password for user itadmin

3、修改httpd.conf
vim /etc/httpd/conf/httpd.conf
第338行
AllowOverride None
改为
AllowOverride All

将httpd加入启动项
chkconfig --level 35 httpd on

重启httpd
service httpd restart

这时再打开浏览器查看时就会弹出用户登录提示框。