write by Kevinzoukissingwolf@gmail.com版权声明:
本文遵循“署名非商业性使用相同方式共享 2.5 中国”协议
您可以自由复制、发行、展览、表演、放映、广播或通过信息网络传播本作品您可以根据本作品演义自己的作品
您必须按照作者或者许可人指定的方式对作品进行署名。您不得将本作品用于商业目的。
如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。
对任何再使用或者发行,您都必须向他人清楚地展示本作品使用的许可协议条款。如果得到著作权人的许可,您可以不受任何这些条件的。
Kevinzou(kissingwolf@gmail.com)
本文目录
第1节 日志在系统中的应用.........................................................................................................1第2节 Linux系统日志..................................................................................................................3第3节 日志更新和备份.................................................................................................................8第4节 远程集中日志...................................................................................................................14第5节 WEB程序日志分析工具.................................................................................................16第6节 安装AWStats....................................................................................................................21
I
日志管理和统计第1节 日志在系统中的应用1.日志系统就是记账系统2.日志系统分类
●●●
操作系统日志应用程序日志安全系统日志
3.存放日志的方式
●●
ACSII码文本日志二进制日志
4.日志的自动化分析
在一个完整的系统管理体系里,日志系统是一个非常重要的功能组成部分。它负责记录下系统或程序所产生的行为,并按照某种规范表达出来。系统管理员可以使用日志系统所记录的信息为系统或程序进行排错、优化系统的性能和根据这些信息调整系统或程序运行的行为。在安全领域,日志系统的重要地位尤甚,可以说是安全审计方面最主要的工具之一。
按照系统类型进行区分的话,日志系统可以分为操作系统日志、应用程序日志、安全系统日志等等。每种操作系统的日志都有其自身特有的设计和规范,例如 Windows系统的日志通常按照其惯有的应用程序、安全和系统这样的分类方式进行存储,而Linux和其他类UNIX系统通常都使用兼容Syslog规范的日志系统。
而很多硬件设备的操作系统也具有的日志功能,以Cisco路由器为代表的网络设备通常都具有输出Syslog兼容日志的能力。应用系统日志主要包括各种应用程序服务器(例如Web服务器、FTP服务器)的日志系统和应用程序自身的日志系统,不同的应用系统都具有根据其自身要求设计的日志系统。安全系统日志从狭义上讲指信息安全方面设备或软件如防火墙系统的日志,从更广泛的意义上来说,所有为了安全目的所产生的日志都可归入此类。
值得注意的是,对于文本格式的日志文件,我们通过基本的grep命令就可以执行这样
1
日志管理和统计的搜索。而对于使用二进制格式存储的日志文件,执行这种检查会复杂一些,通常需要利用日志系统本身的阅读程序进行读取或解码。这需要管理员非常熟悉所维护系统相关的安全漏洞,以及相应系统下的脚本编写技术,但是在这些方面付出汗水是绝对值得的,至少像你在维护相当多的系统时还可以挤出时间阅读技术类杂志是很让人羡慕的。
编写脚本定期分析日志,脚本报警后采取相应的补救行动,能阻挡不少恶意访问行为和系统漏洞。但这并不是一个系统管理员生活的全部,还是有很多问题会安然通过这些检测,对系统形成破坏。从本质上来讲,自动化的日志处理是相对粗旷的,主要起到过滤没有意义的干扰信息,有效降低系统管理员工作负荷的作用。在日常监测之外,也应该每隔一段时间对这些日志进行更细致的审查。在新漏洞出现时,系统管理员针对漏洞的特征进行日志检查,并及时的将攻击指纹更新到自动化检查脚本中。
在日志系统的设置方面,系统管理员应该根据实际情况仔细的斟酌报警信息的详细程度,例如日志条目中我们除了记录网络访问的IP地址是否还需要记录主机名,但如果你在公网上的服务器这么设置了,此操作会相当损耗你的系统资源,其原因主要是IP到域名的反向解析耗时且不一定有结果。
在很多情况下,日志系统默认的设置并没有将对系统管理有用的字段记录下来,这需要系统管理员对系统的情况始终保持警觉,并根据经验不断的做出完善。另外,日志记录的保存期限也应与日志的管理计划相适应,各种系统的日志保存期限通常应保持同步,否则会发生管理员在上个月的操作系统日志中发现疑点,而logrotate却是每周清空这样的窘况。 这种情况的发生乍看之下不太可能,实际工作中确是经常出现的,因为Apache日志通常膨胀速度很快,每小时有几十兆、几百兆、甚至几千兆的增长是极为常见的。这种日志容量的增长也是和日志详细程度和保存期限密切相关的,很多文件系统对文件最大容量是有的,同时过于庞大的日志也不利于我们对日志的分析。所以我们在制订日志管理计划之前,应在综合所有因素的情况下,从全局的角度做出判断。
良好的日志管理对于安全预警、系统维护乃至起诉攻击者都是必不可少的,所有的系统管理员都应该学习如何善用日志系统,它不但能使大家的工作更加轻松,也能有效的保护企业中计算机设施不受侵害。
2
日志管理和统计第2节 Linux系统日志1.syslogd 日志系统2.系统日志子系统
●●●●
连接时间日志进程统计日志错误日志程序日志
3.syslogd 日志系统配置规则
syslogd可以简单地被称为记录系统活动的一个daemons。比如可以记录谁,在什么
时间,在哪里,做了什么事情(像是在写记叙文啊);也可以记录您的系统曾经发生过什么事情,比如什么时候重新引导过、软硬件的错误信息等;当然也记录着您系统上运行着的服务的信息。类UNIX系统中,syslog 一般会记录大量的数据,其中包括由不同硬件和系统报告的登录、性能信息和故障。除 syslog 外,类UNIX系统还有用来记录关于计算机及其操作信息的各种服务、环境和应用程序日志。
尽管分析和提取syslogd日志文件内容的信息可能非常耗时和复杂,但是不能忽略这些日志中信息的价值。syslogd日志文件可以提供关于潜在问题、错误和安全漏洞等方面的提示,如果使用正确,甚至可以提供关于服务器负载和容量方面的警告。
Linux系统日志系统一般有4个主要的日志子系统:连接时间日志、进程统计日志、错误日志和程序日志。
连接时间日志由多个程序执行,把纪录写入到/var/log/wtmp 和 /var/run/utmp ,
login等 程序更新wtmp和utmp文 件,使系统管理员能够跟踪谁在何时登录到系统。
utmp、wtmp和lastlog日志文件是多数UNIX日志子系统的关键日志文件--保持用户
登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp 中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大
3
日志管理和统计量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。为了保证系统登录日志的安全防止被篡改,这些日志是二进制的。每次有一个用户登录时, login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用 到用户登录退出时删除。
utmp文件被各种命令文件使用,包括 who、w、users和finger。下一步,login程序打
开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一 utmp纪录附加到文件中。Wtmp文件被程序last和ac使用。
进程统计日志由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或 acct)中写一个纪录。 进程统计的目的是为系统中的基本服务提供命令使用统计。
类UNIX 可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计日志子系统可以告诉你。它还对跟踪侵入者行为有一定的帮助。与连接时间日志不同,进程统计子系统缺省状态未被激活,我们必须手工启动它。在Linux系统中启动进程统计使用accton命令,必须用root身份运行。Accton命令的形式accton file,file必须先存在。先使用 touch命令来创建 pacct文件:touch /var/log/pacct,然后运行
accton: accton /var/log/pacct。一旦 accton被激活,就可以 使用lastcomm命令监
测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。
lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生
命周期内纪录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。进程统计的一个问题是 pacct文件可能增长的十分迅速。这时需要交互式的或经过计划任务机制(crond)运行sa命令来保持日志数据在系统控制的范围内。sa命令报告、清理并维护进程统计文件。它能把/var/log/
pacct中的信息压缩到摘要文件/var/ log/savacct和/var/log/usracct中,或者生成sar自己需要的文件结构。这些摘要包含按命令名和用户名分类的系统统计数据。 sa缺省
情况下先读它们,然后读pacct 文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项: avio--每次执行的平均I/O操作次数,cp--用户和系统时间总和(以分钟计),
cpu--和cp一样, k--内核使用的平均CPU时间(以1k为单位), k*sec--CPU存储完整
性(以1k-core秒), re--实时时间(以分钟计), s--系统时间(以分钟计), tio--I/O
4
日志管理和统计操作的总数, u—用户时间(以分钟计)。
错误日志由syslogd(8)执行。各种系统守护进程、用户程序和内核通过
syslog(3)向 文件/var/log/messages 报告值得注意的事件。另外有许多程序也创建
错误日志,像HTTP和 FTP这样提供网络服务程序也需要保持详细的错误日志。
Syslog已被许多日志函数采纳,它用在许多保护措施中--任何程序都可以通过syslog
纪录其事件。Syslog可以纪录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主机上的事件。Syslog依据两个重要的文件:syslogd(守护进程)和/etc/syslog.conf配置文件,多数syslog信息被写到 /var/
adm或 /var/log目录下的信息文件中(messages)。一个典型的syslog纪录包括生成
程序的名字和一个文本信息。它还包括 一个设备和一个优先级范围。
每个syslog消息被赋予下面的主要设备之一:
LOG_AUTH--认证系统:login、su、getty等
LOG_AUTHPRIV:同LOG_AUTH,但只登录到所选择的单个用户可读的文件中 LOG_CRON:cron守护进程
LOG_DAEMON:其他系统守护进程,如routed LOG_FTP-:文件传输协议,ftpd、tftpd LOG_KERN:内核产生的消息
LOG_LPR:系统打印机缓冲池:lpr、lpd LOG_MAIL:电子邮件系统 LOG_NEWS:网络新闻系统
LOG_SYSLOG:由syslogd(8)产生的内部消息 LOG_USER:随机用户进程产生的消息
5
日志管理和统计 LOG_UUCP:UUCP子系统 LOG_LOCAL0~LOG_LOCAL7:为本地使用保留 Syslog为每个事件赋予几个不同的优先级: LOG_EMERG:紧急情况
LOG_ALERT:应该被立即改正的问题,如系统数据库破坏 LOG_CRIT:重要情况,如硬盘错误 LOG_ERR:错误
LOG_WARNING:警告信息
LOG_NOTICE:不是错误情况,但是可能需要处理 LOG_INFO:情报信息
LOG_DEBUG:包含情报的信息,通常旨在调试一个程序时使用
syslog.conf文件指明syslogd程序纪录日志的行为,该程序在启动时查询配置文件。
该文件由不同程序或消息分类的单个条目组成,每个配置占一行。对每类消息提供一个选择域和一个动作域。这些域由tab或空格隔开:选择域指明消息的类型和优先级;动作域指明
syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级
组成。当指明一个优先级时,syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指明\"crit\",那所有标为crit、alert和emerg的消息将被纪录。每行的行动域指明当选择域 选择了一个给定消息后应该把他发送到哪儿。
程序日志主要是由第三方程序自己控制的日志。
许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限, 所以它的安全很重要,它的文件为sulog。同样的还有sudolog。像Apache有两个日志:access_log和error_log。
知道系统中正在发生什么事,是我们观察系统状态和处理系统问题的关键。Linux 中提6
日志管理和统计供了日志系统,并且日志的细节是可配置的。Linux 日志系统中多数日志以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。同时我们也可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 这些日志默认配置存储在 /var/log 目录中。为了维护系统安全,大多数日志或日志目录设置了仅root用户读取和进入。
常用的日志文件如下(在不同的发行版中会有所不同,具体请查看相关配置文件中的定义):
access-log 纪录HTTP/web的传输 acct/pacct 纪录用户命令 aculog 纪录MODEM的活动 btmp 纪录失败的纪录
lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录 messages 从syslog中记录信息(有的链接到syslog文件) sudolog 纪录使用sudo发出的命令 sulog 纪录使用su命令的使用
syslog 从syslog中记录信息(通常链接到messages文件) utmp 纪录当前登录的每个用户
wtmp 一个用户每次登录进入和退出时间的永久纪录 xferlog 纪录FTP会话
7
日志管理和统计第3节 日志更新和备份1.logrotate 日志更新和备份工具2.缺省的logrotate配置
3.使用include关键字读取外部配置文件4.使用include关键字覆盖缺省配置5.配置其他logrotate参数
logrotate
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除或改名,并创建新
的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过计划任务cron 程序来执行。
logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。 logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:
参数
功能
通过gzip 压缩转储以后的日志 不需要压缩时,用这个参数
用于还在打开中的日志文件,把当前日志备份并截断 备份日志文件但是不截断
compress nocompress copytruncate nocopytruncate
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件 nocreate
不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才
压缩 8
日志管理和统计nodelaycompress errors address ifempty notifempty mail address nomail 转储时olddir directory
件在同一个文件系统
覆盖 delaycompress 选项,转储同时压缩。 专储时的错误信息发送到指定的Email 地址
即使是空文件也转储,这个是 logrotate 的缺省选项。 如果是空文件的话,不转储
把转储的日志文件发送到指定的E-mail 地址 不发送日志文件
转储后的日志文件放入指定的目录,必须和当前日志文
noolddir
转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字
必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字
必须单独成行
daily weekly monthly rotate count
指保留5 个备份
指定转储周期为每天 指定转储周期为每周 指定转储周期为每月
指定日志文件删除之前转储的次数,0 指没有备份,5
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名
是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定
bytes (缺省)以及KB (sizek)或者MB (sizem).
9
日志管理和统计 缺省配置 logrotate
logrotate 缺省的配置文件是/etc/logrotate.conf。 Red Hat Enterprise Linux 缺省安装的文件内容是: # see \"man logrotate\" for details # rotate log files weekly weekly
# keep 4 weeks worth of backlogs rotate 4
# create new (empty) log files after rotating old ones create
# uncomment this if you want your log files compressed #compress
# RPM packages drop log rotation information into this directory include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here /var/log/wtmp {
monthly
create 06 root utmp rotate 1
}
10
日志管理和统计 # system-specific logs may be also be configured here. 缺省的配置一般放在logrotate.conf 文件的最开始处,影响整个系统。
weekly 指定所有的日志文件每周转储一次。 rotate 4 指定转储文件的保留 4份。
create 指定 logrotate 自动建立新的日志文件,新的日志文件具有和 原来的文件一样
的权限。
#compress 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。
include 选项可以读取其他配置文件 ,include 选项允许系统管理员把分散到几个文件
的转储信息,集中到一个主要的配置文件。当 logrotate 从logrotate.conf 读到include 选项时,会从指定文件读入配置信息,就好像他们已经在/etc/logrotate.conf 中一样。
include /etc/logrotate.d 告诉 logrotate 读入存放在/etc/logrotate.d 目录中的日
志转储参数,当系统中安装了RPM 软件包时,使用include 选项十分有用。RPM 软件包的日志转储参数一般存放在/etc/logrotate.d 目录。 include 选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d 。典型的应用有:apache, linuxconf, samba,
cron 以及syslog。这样,系统管理员只要管理一个 /etc/logrotate.conf 文件就可以了。
使用include 选项覆盖缺省配置
当 /etc/logrotate.conf 读入文件时,include 指定的文件中的转储参数将覆盖缺省的参数,例如/etc/logrotate.d/psacct文件:
/var/account/pacct { #prerotate loses accounting records, let's no # prerotate # /usr/sbin/accton # endscript 11
日志管理和统计 compress delaycompress notifempty daily rotate 31
create 0600 root root postrotate
/usr/sbin/accton /var/account/pacct
endscript
}
在这个例子中,当 /etc/logrotate.d/psacct文件被读入时,compress和rotate等参数将覆盖/etc/logrotate.conf中缺省的参数。
为指定的文件配置转储参数
经常需要为指定文件配置参数,一个常见的例子就是每月转储/var/log/wtmp。设置单独文件参数格式如下:
#注释部分/full/path/of/file{ option(s) 12
日志管理和统计} 需要注意的是尽管花括号的开头可以和其他文本放在同一行上,但是结尾的花括号必须单独成行。
请跟随老师完成logrotate的试验。
13
日志管理和统计第4节 远程集中日志1.分散的服务器日志难于统计和分析2.syslogd的远程日志汇总方法
当系统管理员需要处理多台服务器或着上万台网络设备的时候,为了避免对多个日志进行排序、合并,系统管理员一般采取的方法是,在设备本地写入日志的同时将日志内容流向一个统一的中心位置,并按照事件到达中心日志服务器的顺序将其记录下来。
syslogd对这种集中远程日志的支持很简单,配置也比较方便。
中心日志服务器需要配置可以接受外部syslogd服务器发送日志。 修改中心日志服务器的/etc/sysconfig/syslog 文件:
# vi /etc/sysconfig/syslog 将
SYSLOGD_OPTIONS=\"-m 0\" 修改成
SYSLOGD_OPTIONS=\"-r -m 0\" -r 表示启用记录远程主机的日志。
发送日志的服务器配置发送到中心服务器的IP地址或主机名。 修改每个发送日志的服务器的/etc/syslog.conf文件:
# vi /etc/syslog.conf 加入一行
*.* @192.168.0.x14
日志管理和统计每台发送日志服务器都将本机的登录日志记录到192.168.0.x这台中心日志服务器上。完成中心日志服务器和每台日志发送服务器的配置修改后,需要重启它们的syslog服务。
#service syslog restart 然后你就可以在中心日志服务器上测试是否正确的集中日志了。
15
日志管理和统计第5节 WEB程序日志分析工具用户访问日志统计系统在WEB站点的用户行为分析中扮演了重要的角色,尤其是对于来自搜索引擎的关键词访问统计:是很有效的用户行为分析数据来源。随着互联网多年的发展,WEB日志统计工具已经越来越成熟,功能也越来越丰富。其中有很多是开放源代码的, AWStats就是其中非常优秀的一款。 接下来我们将以AWStats为例讲解Apache日志统计工具的安装和使用。
AWStats(Advanced Web Statistics)是发展很快的一个基于Perl的WEB日志分
析工具。相对于另外一个非常优秀的开放源代码的日志分析工具Webalizer,AWStats的优势在于:
界面友好:可以根据浏览器直接调用相应语言界面(有简体中文版) 参考输出样例:
http://awstats.sourceforge.net/cgi-bin/awstats.pl 。
基于Perl:并且很好的解决了跨平台问题,系统本身可以运行在大多数类UNIX系统上或Windows系统上(安装了ActivePerl后);分析的日志直接支持Apache和Squid格式 (combined)和IIS格式(需要修改)。Webalizer虽然也有Windows平台版,但目前已经缺乏维护; AWStats完全可以实现用一套系统完成对自身站点不同服务器:GNU/Linux/
Apache和Windows/IIS服务器的统一统计。
效率比较高:AWStats输出统计项目比Webalizer丰富了很多,速度仍可以达到
Webalizer的1/3左右,对于一个日访问量百万级的站点,这个速度都是足够的。
配置/定制方便:系统提供了足够灵活但缺省也很合理的配置规则,需要修改的缺省配置不超过3,4项就可以开始运行,而且修改和扩展的插件还是比较多的;
AWStats的设计者是面向精确的\"Human visits\"设计的,因此很多搜索引擎的机器人
访问都被过滤掉了,因此有可能比其他日志统计工具统计的数字要低,来自公司内部的访问也可以通过IP过滤设置过滤掉。
提供了很多扩展的参数统计功能:使用ExtraXXXX系列配置生成针对具体应用的参数分析会对产品分析非常有用。
AWStats运行后将日志统计结果归档到一个AWStats的数据库(纯文本)里,然后以
两种形式输出:一种是通过cgi程序读取统计结果数据库输出;另 一种是运行后台脚本将输16
日志管理和统计出导出成静态文件 。
数据源日志格式和按天的截断规则
对于Apache:日志格式好设置:设置成combined格式即可,日志截断麻烦一点:需要安装cronolog工具,将日志设置成按天截断:
CustomLog \"|/usr/local/sbin/cronolog /path/to/apache/logs/access_%y%m%d.log\" combined 比如:logs/access_080808.log 配置文件的命名规则是
logs/access_080809.log
awstats.SITENAME.conf 比如你的服务器站点名为Zhangsan,配置文件就是awstats.Zhangsan.conf。
AWStats的主程序awstats.pl会自动根据站点名调用相应站点的配置文件:
awstats.sitename.conf 比如:运行./awstats.pl -config=uplooking 调用的就是同目录
下的 awstats.uplooking.conf 配置文件;如果没有指定-config,还会找当前目录下的
awstats.conf或者/etc/awstats.conf作为缺省配置文件。所以最好把缺省的awstats.model.conf 重命名成 awstats.yoursite.conf;比如:
awstats.uplooking.conf ,对于多个站点的统计,AWStats的配置文件包含功能还是非
常有用的,我们可以把通用的配置放在一个文档中,然后用awstats 5.4开始支持的
Include配置将通用配置包含在各个具体配置文件的头部,然后用其他配置覆盖通用配置中
的相应属性,比如:
Include=\"uplooking.common.conf\" LogFile=\"/path/to/bbs/access_log\" SiteName=\"stuxx.uplooking.com\" 最少的配置文件修改:LogFile SiteDomain LogFormat ,对于在GNU/Linux上统
17
日志管理和统计计Apache日志只需修改:LogFile SiteDomain这2个选项:
.LogFile=\"/path/to/apache/logs/access_%YY-24%MM-24%DD-24.log\" 这个配置的意思是用24小时前的年份,月份,日期拼出的日志文件名; SiteDomain=\"stuxx.uplooking.com\" 站点的名称,缺省是空的,如果为空,AWStats将拒绝运行
其他需要注意的事项:AWStats缺省不过滤swf文件,会把.swf算成PageView,所以如果站点上swf文件主要是广告的话最好还是要过滤掉。
日志分析命令
#./awstats.pl -update -config=sitename 比如,进入awstats安装目录下的cgi-bin目录后执行
#./awstats.pl -update -config=uplooking 查看统计输出,可以使用浏览器访问如下URL
http://localhost/cgi-bin/awstats.pl?config=uplooking 配置AWStats日志统计自动运行,一般使用计划任务cron:
#crontab -e
设置每天的4点45分执行日志统计:
45 4 * * * (cd /full/path/to/awstats/cgi-bin/; ./awstats.pl -update -config=uplooking) 多站点日志统计
18
日志管理和统计AWStats自带了一个批处理工具:tools/awstats_updateall.pl,可以批量地遍历一
个目录下所有地配置文件并运行统计。因此剩下的工作就主要是日志的同步问题了。针对多个站点,很多配置选项是重复的,如果每个配置文件都修改维护起来会很麻烦,AWStats从5.4开始提供了配置文件包含的功能,所以我们可以配置一个通用配置,比如:
uplooking.common.conf ,然后其他站点的配置设置为:
#cat awstats.bbs.uplooking.conf Include \"uplooking.common.conf\" LogFile \"/path/to/bbs_log\" SiteName \"bbs.uplooking.com\"
#cat awstats.www.uplooking.conf Include \"uplooking.common.conf\" LogFile \"/path/to/www_log\" SiteName \"www.uplooking.com\" HostAliases=\"uplooking.com\"
统计指标说明
●●
参观者:按来访者不重复的IP统计,一个IP代表一个参观者;
参观次数:一个参观者可能1天之内参观多次(比如:上午一次,下午一次),
所以按一定时间内(比如:1个小时),不重复的IP数统计,参观者的访问次数;
●
网页数:不包括图片,CSS, JavaScript文件等的纯页面访问总数,但如果一个
页面使用了多个帧,每个帧都算一个页面请求;
●
文件数:来自浏览器客户端的文件请求总数,包括图片,CSS,JavaScript等,
用户请求一个页面是,如果页面中包含图片等,所以对服务器会发出多次文件请求,
19
日志管理和统计文件数一般远远大于文件数;
●●
字节:传给客户端的数据总流量;
来自REFERER中的数据:日志中的参考(REFERER)字段,记录了访问相应
网页之前地址,因此如果用户是通过搜索引擎的搜索结果点击进入网站的,日志中就会有用户在相应搜索引擎的查询地址,这个地址中就可以通过解析将用户查询使用的关键词提取出来。
AWStats在搜索引擎的关键短语和关键词统计方面的功能还是比较完整的:可以对全
世界3百多种机器爬虫进行识别,并且可以识别大部分主流国际化搜索引擎和很多地区的本地语言搜索引擎。
20
日志管理和统计第6节 安装AWStats首先下载awstats软件包。
你可以到AWSTATS的官方站点下载它的tar.gz包,也可以下载rpm包,此试验中使用tar包! 选择tar包的主要原因是:awstats rpm包需要依赖很多系统不自带的perl
rpm。
官方站点下载位置http://prdownloads.sourceforge.net/awstats安装awstats tar包。
# tar -zxvf awstats-*.tar.gz -C /var/www/html/#cd /var/www/html#mv awstats* awstats现在已经把AWStats安装到 /var/www/html/awstats/中了,awstats 有提供给
Apache 的辅助设置文件/var/www/html/awstats/tools/httpd_conf,将这个辅助设置
文件 copy 到 /etc/httpd/conf.d/ 目录下,并且顺便改名改成 awstats.conf。
#cp /var/www/html/awstats/tools/httpd_conf /etc/httpd/conf.d/awstats.conf#cat /etc/httpd/conf.d/awstats.confAWStats默认是需要安装在/usr/local目录下的,所以awstats.conf的配置我们需
要作少许改动。
#sed -i 's#/usr/local#/var/www/html#g' /etc/httpd/conf.d/awstats.conf现在重启httpd服务设置就生效了。
# service httpd reload21
日志管理和统计接下来配置awstats
在/var/www/html/awstats/wwwroot/cgi-bin底下有一个例子配置文件
awstats.model.conf ,我们需要将其拷贝到/etc/awstats目录下,并改名为我们需要的
配置文件名。
#mkdir /etc/awstats# cd /etc/awstats/# cp /var/www/html/awstats/wwwroot/cgi-bin/awstats.modul.conf awstats.stuxx.conf请将stuxx改为你的主机名,并编辑这个文件。
# vi awstats.smallken.conf需要修改的配置项:
// Apache log 档位置
LogFile=\"/var/log/httpd/access_log\"
// 主机名称,没有 Domain Name 时设 IP 也没问题SiteDomain=\"stuxx.uplooking.com\"// 执行 perl 的目录DirCgi=\"/awstats\"// 小图示的目录
DirIcons=\"/awstatsicons\"// 语修改系
22
日志管理和统计Lang=\"cn\"存盘退出,现在我们手动来执行分析脚本
# cd /var/www/html/awstats/wwwroot/cgi-bin/# perl awstats.pl -config=stuxx -update打开浏览器查看生成页面
firefox 访问 http://localhost/awstats/awstats.pl?config=stuxx接著我们想让它每5分钟自己更新一次编辑一个脚本 awstats.sh
# vi /root/awstats.sh
输入
#!/bin/bashcd /var/www/html/awstats/wwwroot/cgi-bin/perl awstats.pl -config=stuxx -update赋予它可执行权限
# chmod +x /root/awstats.sh加入 cron,让它每5分钟执行 aswstats.sh 一次
# cronteb -e输入
*/5 * * * * /root/awstats.sh23
日志管理和统计然后你就狂刷你的页面,等5分钟后再查看页面
http://localhost/awstats/awstats.pl?config=stuxx24
因篇幅问题不能全部显示,请点此查看更多更全内容