免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3611 | 回复: 8
打印 上一主题 下一主题

[proxy] Slackware下安装SARG - HOW-TO [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-27 18:18 |只看该作者 |倒序浏览

一.前言

sarg是一个非常小巧却很强大的squid日志分析程序。分别在两台机器上部署, slackware 10.2.0和slackware 12.0.0,这版本的差距咋就和做人的差距一样,这么大捏?为了兄弟们以后安装时少走弯路,特编写此文档。

注:在两个版本的slackware上安装sarg时主要发现了以下几个问题

1.slack12和slack10安装时需要不同的依赖包
2.源码安装和二进制包安装效果不同
3.squid log文件的格式对sarg处理有很大的影响
以上内容会在下面提到。

二.安装sarg
1. slackware 10.2.0
Sarg的安装没什么可说的,就是configure, make, make install。但是他的依赖包太烦人了。
sarg的依赖包官方网站居然没有,也有可能是我木有找到。反正我也是偶然在这里找到的http://www.tuxjm.net/downloads/source/slackware-10.2/sarg/requires
sarg依赖两个包squid和gd。 squid我们fw本来就有,废话。需要安装gd。
顺便说一句,如果只装了squid而没装gd的话,编译sarg时,会出现:
checking gd.h usability... no
checking gd.h presence... no
checking for gd.h... no
checking gdfontl.h usability... no
checking gdfontl.h presence... no
checking for gdfontl.h... no
checking gdfontt.h usability... no
checking gdfontt.h presence... no
checking for gdfontt.h... no
checking gdfonts.h usability... no
checking gdfonts.h presence... no
checking for gdfonts.h... no
checking gdfontmb.h usability... no
checking gdfontmb.h presence... no
checking for gdfontmb.h... no
checking gdfontg.h usability... no
checking gdfontg.h presence... no
checking for gdfontg.h... no
尽管如此,还是可以顺利make, make install来安装sarg,只是生成的页面没有graphics罢了。开始我没注意,后来发现slackware12.0上装好sarg后,发现他的页面居然能显示图,而11.2却木有。这点我绝不能容忍。后来经过比较发现是编译时没有装gd。
安装gd可费了劲了,下载了gd-2.0.33-i486-2cf.tgz,安装后,再编译时,又报错了:
checking for gdImagePng in -lgd... no
死活也make不了,更别提make install了。
咋办?赶快请教google老师,可是他老人家数次拒绝了我,搜索了好多网站,都没有此类问题的解决办法,最牛逼的答案是让我重装系统解决,我日。
找到了答案
原来gd依赖libpng,libjpeg和x11,前两个我系统里已经有了,就差x11,装上之后,编译过程如果吃了半斤泻药一样顺畅;Make和make install也一马平川。
2. slackware 12.0.0
编译时报的错简直太多了,没办法,装个现成的sarg-2.0.9-i486-2stb.tgz装上,看看到底缺啥包。
每次运行sarg,都会报一个xxx.hxxx.o木有找到。日,咋办?搜呗。最后发现是缺了如下几个包:
fontconfig-2.4.2-i486-2.tgz
libXau-1.0.3-i486-1.tgz
libXpm-3.5.6-i486-1.tgz
libX11-1.1.1-i486-4.tgz
libXdmcp-1.0.2-i486-1.tgz
libxcb-1.0-i486-2.tgz
之后安装过程还算顺利,编译安装均没报啥错,还算仁义。

三.配置

配置文件是/usr/local/sarg/sarg.conf 大部分默认选项都不用改,简要介绍一下最常用的几个:
language English
#
界面语言,可以自己把language/english的内容翻译成中文,然后就可以显示中文鸟,不会又让我翻译吧?
access_log /var/squid/logs/access.log
#squid log
的位置
graphs yes
#
是否要显示graphics
graph_days_bytes_bar_color orange
#
选择graphics的柱状图颜色
title "Squid User Access Reports"
#
标题
font_face Tahoma,Verdana,Arial
#
字体
header_color darkblue
#
啥叫header? 就是下面这个文字的颜色
header_font_size 12px
#
标题字体大小,就是下面的字体大小


font_size 10px
#
下面字体的大小
title_font_size 20px
#
标题字体的大小,恶俗吧
background_color green
#
背景颜色,恶俗吧
title_color yellow
#
标题字体颜色,更恶俗吧
logo_image http://news.sohu.com/logo.gif
#
太恶俗了,不能说了
image_size 804 75
#
图片大小
temporary_dir /tmp
output_dir /var/www/htdocs/reports
#
生成页面存放位置
topuser_sort_field BYTES reverse
#
top_user表的排列顺序,红框部分
user_sort_field BYTES reverse

exclude_users /usr/local/sarg/sarg.users
#
这个是干啥用的捏?你不想显示哪个用户的访问记录,就把它的名字放到里面
exclude_hosts /usr/local/sarg/sarg.hosts
#
同理,你不想显示哪台机器的访问记录,就把ip放进去
date_format u
per_user_limit none
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
topsites_num 100


topsites_sort_order BYTES D
#
top_sites表的排列顺序,红框部分


index_sort_order D
#
索引页的排列顺序
exclude_codes /usr/local/sarg/sarg.exclude_codes
#
作用不详,有待研究
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
#
生成的图表类型
usertab /usr/local/sarg/sarg.usertab
# ip
username对应表
long_url no
date_time_by elap
charset Latin1
show_successful_message yes
show_read_statistics yes
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
bytes_in_sites_users_report no
topuser_num 0
site_user_time_date_type table
squidguard_conf none
show_sarg_info no
show_sarg_logo no
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

sarg.conf里还包括许多选项,比如支持数据导出,结合squiduard等,大家自己去研究。







source: http://blog.chinaunix.net/u/20003/showart_709458.html

论坛徽章:
0
2 [报告]
发表于 2008-05-27 18:20 |只看该作者
四.美化

从网上下载了一个老外写的脚本,可以放到crontab里定期的生成report,比如daily, weekly, monthly等。我自己做了一些修改,通过dhcpd.reg和message,将username和他们机器的ip一一对应,这样打开网页,我就可以一目了然了。知道是谁在敲打我窗,是谁在撩动琴弦。那一段,被遗忘的时光,渐渐的,回升出我心坎。
该脚本可以从介里下载
http://www.initzero.it/products/ ... wnload/sarg-reports

我编辑过的脚本如下:

# Modified by Kevin - To generate sarg.usertab from dhcp reg file and system log messgae

dhcpreg="/etc/dhcpd/dhcpd.reg"
message="/var/log/messages"
ipmac="/tmp/ipmac.txt"
out="/usr/local/sarg/sarg.usertab"

echo > $out
cat $message |grep "DHCPACK" |grep -v "^$" |grep -v "^#"|awk '{ print $8 " " $10}' |sort -u > $ipmac
for usermac in `cat $dhcpreg |grep -v "^$" |grep -v "^#" |sort -u |tr "[A-Z]" "[a-z]"`; do
user=`echo $usermac|cut -d ',' -f 1`
mac=`echo $usermac|cut -d ',' -f 2`
#echo "mac address for $user is $mac"
sed -n s/$mac/$user/p $ipmac >> $out
done

加到上面下载的脚本里就可以

五. 后记

还有几个问题需要注意:

1. sarg 源码安装vs 二进制包安装

建议使用源码安装,因为二进制包一方面版本比较陈旧,另外安装后貌似不可以显示graphics,啥叫graphics?就是这个:擎天一柱,嘎嘎

2. squid log格式: emulate http or not ?

Squid log的默认格式是酱紫的:
1211780135.987     13 10.0.11238 TCP_IMS_HIT/304 259 GET http://pics.taobao.com/2k7/sys/- NONE/- image/gif

如果在/etc/squid/squid.conf里选择了emulate_httpd_log on,则log格式会变成:
10.0.11.237 - - [27/May/2008:16:09:59 +0800] "OST http://60.28.205.54/HTTP/1.0" 200 185 TCP_MISSIRECT

这两种格式选择哪种好呢?
根据我个人的体会,各有利弊。
如果选择的默认格式,则sarg的各个版本均会顺利读取,但较高版本比如2.2.5分析log时可能会报错segment fault。而且其他的log分析软件,比如awstats,也会使用http类型的log,因此如果为了测试其他的log分析软件,可以考虑不用这种log格式。
如果选用http类型的格式,则在slackware10.2.0上安装sarg 2.2.5版本会报错segment fault;但在slackware 12.0.0上装则不会。不知是我的人品有问题,还是真的有这种bug?我相信后一种解释。

一旦在执行sarg命令是出现错误,可以运行
#sarg –z –x
观察输出结果,看看是哪里的问题,一般都是log格式的问题。

3. 关于slackware包管理的技巧
这次安装sarg的过程也是我偶然了解到,slackware下面也有像debian一样的apt-get包管理模式,叫做slapt-get; 还有一个软件叫swaret
这两个软件也是各有利弊,可以参考下面的链接。
不过该软件确实很好地解决了到处找tgz的麻烦,虽然和其他发行版本比还有一定差距,但确实便利了许多。

slapt-get配置文件/etc/slapt-get/slapt-getrc
参数:
slapt-get [选项(可多选)] [目的]

目的:
--update|-u - 从镜像上检索软件包数据
--upgrade - 升级已安装软件包
--dist-upgrade - 升级至更新的 release 版本
--install|-i [软件包名称(可多选)] - 安装软件包
--install-set [磁盘集合(可多选)] - 安装选定的磁盘集合
--remove [软件包名称(可多选)] - 删除软件包
--show [软件包名称] - 显示软件包描述
--search [表达式] - 查找可用的软件包
--list - 列出软件包
--available - 列出可用软件包
--installed - 列出已安装软件包
--clean - 清空缓存的软件包
--autoclean - 只清除过时和无法获取的软件包
--add-keys - retrieve GPG keys for sources
--version - 显示版本和版权信息

Swaret配置文件/etc/swaret.conf
参数
swaret --ACTION [KEYWORD] [OPTION]

--update - 从镜像上检索软件包数据
--upgrade [KEYWORD] [-a] - 升级已安装软件包[自动]
--install [KEYWORD] [-a|-p|-ap] - 安装软件包[自动|打补丁|自动打补丁]
--reinstall [KEYWORD] [-a|-p|-ap] - 重新安装软件包[自动|打补丁|自动打补丁]
--remove KEYWORD [-a] - 卸载软件包[自动]
--get [KEYWORD] [-a|-p|-ap|-s|-as|-u|-au] - 获取软件包[自动|打补丁|自动打补丁|......]
--compile KEYWORD - 编译软件包
--dep [KEYWORD] [-a] --解决依赖关系[自动]
--resume [-p|-s] --恢复软件包
--list [-p|-s|-i|-u|-n|-np] --软件包列表
--search KEYWORD [-p|-s|-i|-u|-n|-np] - 查找可用的软件包
--show [KEYWORD] [-p|-i] - 显示软件包描述
--changelog -软件包变化信息
--set KEYWORD -设置
--extra -额外软件包
--rollback NUMBER -降级
--gpg [-i] -密钥
--log [-t|-c] -信息
--purge [-s|-d #|-ds #|-w #|-ws #|-v] - 清空缓存的软件包
--config -配置软件包
--faq [KEYWORD] -软件包FAQ
--htus [KEYWORD] -?
--manual [-c] -软件包Manual
--help -帮助,显示此页
--morehelp -更多帮助
--version -版本信息

六. 参考链接

Sarg:
http://sarg.sourceforge.net/sarg.php
http://www.software-mirror.com/l ... -10.2/Console/sarg/
http://www.tuxjm.net/downloads/source/slackware-10.2/
http://212.17.30.65/sarg/

slackware包管理
http://blog.chinaunix.net/u1/55011/showart_441859.html
http://software.jaos.org/#slapt-get
http://swaret.sourceforge.net/index.php
http://slack.linuxsir.org/main/node/37

字数限制,没办法,还是看博客吧
source: http://blog.chinaunix.net/u/20003/showart_709458.html

论坛徽章:
0
3 [报告]
发表于 2008-06-07 18:01 |只看该作者
写得很详细,谢谢。

论坛徽章:
0
4 [报告]
发表于 2008-06-10 16:34 |只看该作者
请问,你说的那个老外的那个脚本放在哪个目录呢?

http://www.initzero.it/products/ ... wnload/sarg-reports

是放在/etc/cron.daily/目录下还是放在什么地方?

另外,他这个脚本对squid日志是否有要求?是否支持压缩的日志呢?
他这个脚本对已经轮转的日志是否能读取,因为我有看到你列出的例子:http://212.17.30.65/sarg/ 对日、周、月都有做出分析;

我目前所做的仅仅是每天有一个日志,每周,及每月的没有用好脚本(都是网上找的,自己没有渗透),我的日志是设置每周轮转一次,事实上,这样已经是很大的日志文件了。。

以上烦请赐教,谢谢。

论坛徽章:
0
5 [报告]
发表于 2008-06-10 18:36 |只看该作者
根据作者备注,使用日志轮转的要创建月报表和周报表有些问题;

## TODO:
# - Smarty weekly recognition...
#   Like "begin of last week to end of last week",
#   doesn't like this script do: "7 days ago to yesterday"
# - Monthly recognition isn't so elegant (is very ugly, i know)
# - Suggestions are welcome
# - If you Rotate the squid logs before sarg-reports will run,
#   it will not create any html reports
#   (TIPS: Rotate the logs after sarg-reports)

论坛徽章:
0
6 [报告]
发表于 2008-06-10 18:38 |只看该作者
REMEMBER: if you use logrotate, configure it to rotate the logs within MONTHLY basis,
#              AFTER sarg-reports created the monthly html report.


尽管这句话很简单,还是不能很好理解

论坛徽章:
0
7 [报告]
发表于 2008-06-12 16:46 |只看该作者

回复 #6 zenglingping 的帖子

这句话是啥意思呢?就是说,一般squid在logrote里设置的是一个月打包一次,因此,如果sarg-reports脚本在log文件打包后才执行的话,那肯定分析不出来,因为旧的log文件已经打包了。因此必须在旧的squid log打包之前执行sarg-reports monthly。比我我每月1号凌晨1点执行logrotate,那我的sarg-reports montyly就会安排在00:30左右执行。不知道我解释的明不明白。

论坛徽章:
0
8 [报告]
发表于 2008-06-12 16:53 |只看该作者
原帖由 zenglingping 于 2008-6-10 16:34 发表
请问,你说的那个老外的那个脚本放在哪个目录呢?

http://www.initzero.it/products/ ... wnload/sarg-reports

是放在/etc/cron.daily/目录下还是放在什么地方?

另外,他这个脚本对squid日志是否有要 ...


是这样的,理论上来说,这个脚本可以放在任何地方,但是放在/etc/cron.daily不太好,因为sarg-reports这个脚本后面可以跟许多参数
比如:
sarg-reports daily
sarg-reports weekly
sarg-reports monthly
等等
所以,我习惯放在/usr/local/sarg/下面,在crontab里分别加上
00 09-18/1 * * * /usr/local/sarg/runsarg.sh today
00 00 * * * /usr/local/sarg/runsarg.sh daily
00 01 * * 1 /usr/local/sarg/runsarg.sh weekly
00 01 1 * * /usr/local/sarg/runsarg.sh monthly
这样就可以分时采集数据。
另外如果有个人的需要,可以改一下sarg-reports脚本的内容。

关于对squid日志格式有何要求,我文章中写到了这点,是我亲身实践的,但不知是不是大家都这样,另外sarg不支持压缩的log

还有啥问题,欢迎讨论。

thanks

论坛徽章:
0
9 [报告]
发表于 2008-06-12 16:54 |只看该作者
原帖由 zenglingping 于 2008-6-10 18:38 发表
REMEMBER: if you use logrotate, configure it to rotate the logs within MONTHLY basis,
#              AFTER sarg-reports created the monthly html report.


尽管这句话很简单,还是不能很好理解



这句话是啥意思呢?就是说,一般squid在logrote里设置的是一个月打包一次,因此,如果sarg-reports脚本在log文件打包后才执行的话,那肯定分析不出来,因为旧的log文件已经打包了。因此必须在旧的squid log打包之前执行sarg-reports monthly。比我我每月1号凌晨1点执行logrotate,那我的sarg-reports montyly就会安排在00:30左右执行。不知道我解释的明不明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP