日志分析工具Awstats实战之Apache篇-多站点日志分析

简介:

前面两篇都在讲述如何去部署nginx下的awstats日志分析工具,现在终于轮到apache。作为老牌的网页服务器,awstats对apache的支持非常完美,所以整个配置过程也是十分简单。因此,在这里我就拓展了一下部署,实现了对多站点的日志分析功能。

注意:自本篇博文发表之日,apache-2.4.x还是无法支持部署awstats日志分析结果访问动态化,不过可以用前篇日志分析工具Awstats实战之Nginx篇-分析结果静态化中讲到的方法来实施部署awstats。因此,本篇博文将用apache2.2.25版本来为大家讲解如何部署awstats日志分析结果动态化及多站点。

环境:

1
2
3
4
5
6
7
8
9
CentOS 6.4 x86_64
ip:192.168.1.113
站点1:域名www.sunsky.com(server和client都通过hosts文件解析)
站点2:域名www.skysun.com(server和client都通过hosts文件解析)
apache-2.2.25 编译安装,路径 /usr/local/apache ,服务开启状态
日志记录格式为apache默认的combined格式,切勿更改,否则会造成awstats无法分析日志。
LogFormat  "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""  combined
apr-1.4.8  apr-util-1.5.2
awstats-7.2. tar .gz

一、日志自动切割

由于apache自带的日志轮询工具rotatelogs,据专家说在进行日志切割时容易丢日志,所以这里我们就用cronolog来做日志切割。

1、下载并安装cronolog

1
2
3
4
5
6
cd  /server/tools/
wget http: //cronolog .org /download/cronolog-1 .6.2. tar .gz
tar  zxf cronolog-1.6.2. tar .gz
cd  cronolog-1.6.2
. /configure
make && make  install

2、配置apache使用cronolog

由于实验用的apache开启了虚拟主机功能,所以以下配置都在虚拟主机中进行,这样也是为了方便对多站点的分析操作。

vim /usr/local/apache/httpd/extra/httpd-vhosts.conf

将配置文件中的CustomLog和ErrorLog替换为下面的(由于我们要对多站点,所以这里要替换两个虚拟主机的,并且将日志存放名字做有效的区分才好)

1
2
3
4
5
6
www.sunsky.com
CustomLog  "|/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log"  combined
ErrorLog  "|/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log"
www.skysun.com
CustomLog  "|/usr/local/sbin/cronolog /app/logs/skysun_access_%Y%m%d.log"  combined
ErrorLog  "|/usr/local/sbin/cronolog /app/logs/skysun_error_%Y%m%d.log"

注意:这里一定要注意对两个网站的日志名称配置。


二、Awstats的安装与配置

1、部署awstats

首先我们要下载awstats软件包,并将其放在常规目录(/usr/local)下

1
2
3
wget http: //awstats .sourceforge.net /files/awstats-7 .2. tar .gz
tar  zxf awstats-7.2. tar .gz
mv  awstats-7.2  /usr/local/awstats

由于wget下载下来的包中权限是非root的,所以这里要修改权限,否则稍后*.pl将无法运行

1
2
3
chown  -R root.root  /usr/local/awstats
chmod  +x  /usr/local/awstats/tools/ *.pl
chmod  +x  /usr/local/awstats/wwwroot/cgi-bin/ *.pl

接下来我们要执行awstats/tools下的awstats_configure.pl配置向导,用来生成awstats的配置文件,awstats配置文件的命名规则是awstats.website.conf

1
2
cd  /usr/local/awstats/tools/
. /awstats_configure .pl

此时会出现如下提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
----- AWStats awstats_configure  1.0  (build  1.9 ) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics  for
one web server. You can  try  to  use  it to let it  do  all that  is  possible
in  AWStats setup, however following the step by step manual setup
documentation (docs/index.html)  is  often a better idea. Above all  if :
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to  'understand'  all possible ways to  use  AWStats...
Read the AWStats documentation (docs/index.html).
-----> Running OS detected: Linux, BSD or Unix
-----> Check  for  web server install
Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path ( 'none'  to skip web server setup):
> /usr/local/apache/conf/httpd.conf #有可能是新版本的原因,这里会自动找到apache的配置文件,无需我们再自己填了,不过会问你一次,你回答y即可
Your web server config file(s) could not be found.
You will need to setup your web server manually to declare AWStats
script  as  a CGI,  if  you want to build reports dynamically.
See AWStats setup documentation (file docs/index.html)
-----> Update model config file  '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
   File awstats.model.conf updated.
-----> Need to create a  new  config file ?
Do you want me to build a  new  AWStats config/profile
file (required  if  first install) [y/N] ? y         #询问是否创建一个新的配置文件,这里填y
-----> Define config file name to create
What  is  the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.sunsky.com      #这里让填写你的网站域名,虚拟主机名或者随便一个配置名
-----> Define config file path
In which directory  do  you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter  for  default ):
>              #这里要填写你配置文件存放路径,我们使用它默认的路径/etc/awstats,所以直接回车即可
-----> Create config file  '/etc/awstats/awstats.www.sunsky.com.conf'
  Config file /etc/awstats/awstats.www.sunsky.com.conf created.
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can  do  it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com
Or  if  you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to  continue ...   #提示不能自动加入crontab定时任务,需要稍后自己添加,我们按回车继续即可
A SIMPLE config file has been created: /etc/awstats/awstats.www.sunsky.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics  for  'www.sunsky.com'  with  command:
> perl awstats.pl -update -config=www.sunsky.com
You can also build  static  report pages  for  'www.sunsky.com'  with  command:
> perl awstats.pl -output=pagetype -config=www.sunsky.com
Press ENTER to finish... #提示配置文件创建完成和如何更新配置及建立静态报告页,这里我们回车即可结束这个配置向导

结束这个向导以后,我们对www.sunsky.com站点的awstats配置文件已经配置好了,下面配置www.skysun.com的配置文件,步骤和上面一样,只是在域名的地方做更改即可。

2、修改awstats配置文件

完成配置文件的创建之后,我们还需要对/etc/awstats/awstats.www.sunsky.com.conf里的一些参数进行修改。

1
sed  -i  's#LogFile="/var/log/httpd/mylog.log"#LogFile="/app/logs/sunsky_access_%YYYY-24%MM-24%DD-24.log"#g'  /etc/awstats/awstats .www.sunsky.com.conf

这里更改的目的是指定awstats需要分析的nginx的日志文件路径。这里的路径大家要按自己的日志路径来填。

1
sed  -i  's#DirData="/var/lib/awstats"#DirData="/usr/local/awstats/data"#g'  /etc/awstats/awstats .www.sunsky.com.conf

这里更改的目的是指定awstats的数据库配置文件(即awstats的数据库(纯文本))。

以上的两个替换操作进行完之后一定要用命令查看替换是否成功,以便及早发现纰漏。

1
2
grep  "LogFile="  /etc/awstats/awstats .www.sunsky.com.conf
grep  "DirData="  /etc/awstats/awstats .www.sunsky.com.conf

查询替换结果正确之后,即可进行下面的步骤。

同样,重复以上的2个sed步骤,来对www.skysun.com的awstats配置文件做操作,需要注意的是命令里面的日志路径和对应的awstats的数据库配置文件不要搞错即可。

由于,此处没有/usr/local/awstats/data目录,所以我们要创建出来

1
mkdir  /usr/local/awstats/data

此时我们要对/usr/local/awstats目录进行属主变更,变更为apache的daemon用户,不然一会访问就会报错。这里也是和nginx的一个明显区别所在。

1
chown  -R daemon  /usr/local/awstats

3、生成awstats统计信息数据库

现在我们需要用awstats来生成对日志的统计分析信息出来了。由于我们用的是支持perl的FCGI动态化访问页面,所以此处我们只需要直接更新数据库即可。FCGI程序会自动将数据库以动态页面的形式展现出来,无须再手动生成静态页面了。本处我们用脚本来完成。

1
2
3
4
vim  /server/scripts/awstats_up .sh
#!/bin/sh
/usr/local/awstats/wwwroot/cgi-bin/awstats .pl -update -config=www.sunsky.com > /dev/null  2>&1
/usr/local/awstats/wwwroot/cgi-bin/awstats .pl -update -config=www.skysun.com > /dev/null  2>&1

该脚本里面用下面的命令也是可以的。

1
/usr/local/awstats/tools/awstats_updateall .pl now

运行该脚本生成分析结果

1
/bin/sh  /server/scripts/awstats_up .sh

提示:由于我们这里用的apache使用cronolog日志轮询工具使得文件出来都是带时间格式的。因此你可能会想,为什么不改成对当天的日志进行操作。首先在这里我们可以实时的进行日志分析数据库更新来查看实时的日志,不过这里不建议大家这样去做。


三、配置日志分析页面的来访ip的地址位置显示

这里我们用国内最准确的ip数据库——QQ纯真库(点击下载),大家下载之后通过CRT用lrzsz工具传上去,具体步骤这里不写了。

附件里面有三个文件qqhostinfo.pm,qqwry.pl和QQWry.Dat,我们将这三个文件统统都放到/usr/local/awstats/wwwroot/cgi-bin/plugins中。

接下来,我们修改qqwry.pl文件,将./QQWry.Dat修改为${DIR}/plugins/QQWry

1
2
vim  /usr/local/awstats/wwwroot/cgi-bin/plugins/qqwry .pl
  #my $ipfile="./QQWry.Dat";

修改为

1
my $ipfile= "${DIR}/plugins/QQWry.Dat" ;

然后编辑awstats的配置文件/etc/awstats/awstats.www.sunsky.com.conf(根据你前面配置的站点信息生成的文件),将LoadPlugin="hostinfo"替换为LoadPlugin="qqhostinfo"即可。

1
2
sed -i  's#\#LoadPlugin="hostinfo"#LoadPlugin="qqhostinfo"#g'  /etc/awstats/awstats.www.sunsky.com.conf
sed -i  's#\#LoadPlugin="hostinfo"#LoadPlugin="qqhostinfo"#g'  /etc/awstats/awstats.www.skysun.com.conf

切记,在这些替换完之后一定要查看替换是否成功,以便及早发生纰漏。

1
grep  "LoadPlugin=\"qqhostinfo\""  /etc/awstats/awstats .www.sunsky.com.conf

如果检查无误,那么我们的ip地址位置显示就配置好了,在后面的日志分析中,我们就可以清楚的看到来访ip的地理位置信息了。


四、配置apache

首先我们打开apache的主配置文件/usr/local/apache/conf/httpd.conf可以看到里面多出了以下几行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
# Directives to allow use of AWStats as a CGI
#
Alias  /awstatsclasses  "/usr/local/awstats/wwwroot/classes/"
Alias  /awstatscss  "/usr/local/awstats/wwwroot/css/"
Alias  /awstatsicons  "/usr/local/awstats/wwwroot/icon/"
ScriptAlias  /awstats/  "/usr/local/awstats/wwwroot/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory  "/usr/local/awstats/wwwroot" >
     Options None
     AllowOverride None
     Order allow,deny
     Allow from all
< /Directory >

我们可以看到awstats已经在apache的主配置文件配置好了需要的参数,是不是很方便啊。此时我们还需要在配置虚拟目录配置文件里面配置几个参数来实现站点的统计信息安全。

1
vim  /usr/local/apache/httpd/extra/httpd-vhosts .conf

添加以下两行参数进去

1
2
auth_basic  "Restricted" ;
     auth_basic_user_file  /usr/local/nginx/htpasswd .pass;

添加之后的文件信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<VirtualHost *:80>
     ServerAdmin webmaster@dummy-host.example.com
     DocumentRoot  "/www/sunsky"
     ServerName dummy-host.example.com
     ServerAlias www.sunsky.com
     CustomLog  "|/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log"  combined
     ErrorLog  "|/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log"
     auth_basic  "Restricted" ;
     auth_basic_user_file  /usr/local/apache/htpasswd .pass;
< /VirtualHost >
<VirtualHost *:80>
     ServerAdmin webmaster@dummy-host2.example.com
     DocumentRoot  "/www/skysun"
     ServerName www.skysun.com
     CustomLog  "|/usr/local/sbin/cronolog /app/logs/skysun_access_%Y%m%d.log"  combined
     ErrorLog  "|/usr/local/sbin/cronolog /app/logs/skysun_error_%Y%m%d.log"
     auth_basic  "Restricted" ;
     auth_basic_user_file  /usr/local/apache/htpasswd .pass;
< /VirtualHost >

接下来我们用下面的命令来生成加密文件和加密的账号及密码

1
htpasswd -c -m  /usr/local/nginx/htpasswd .pass admin       #用户名为admin,回车之后输入两次密码即完成创建

如果,你顺利的执行了上面的所有操作,那么OK!现在你已经可以通过访问

1
2
http: //www .sunsky.com /awstats/awstats .pl?config=www.sunsky.com
http: //www .skysun.com /awstats/awstats .pl?config=www.skysun.com

来查看你多个站点的日志分析信息了。

005302886.png

005304341.png




五、配置awstats自动运行

为了让整个日志的统计过程可以实现自动化,我们将awstats.sh脚本加入crontab定时任务中去

1
0 1 * * *  /bin/sh  /server/scripts/awstats_up .sh > /dev/null  2>&1

也许你会问为什么不把cronolog也加入开机启动呢,因为cronolog已经默认被apache用来调用记录日志,所以无需加入到crontab定时任务中。


至此,我们已经通过在nginx和apache上部署awstats日志访问分析工具来实现了对站点来访信息的分析。整个系列的博文不多,只有三篇,不过还算是详尽,把改涉及到的都涉及到了。中间有很多技术是连同的,比如在apche上进行的多站点,在nginx上的静态化访问等,尽管我没有再出,不过我们都可以将他们来回应用实现部署需求。我也相信,只有融会贯通了,我们大家才能更好的部署好这一利器!










本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1318052,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1406 55
|
运维 安全 数据可视化
日志审查安排工具实战攻略:中小团队如何通过日志审查安排工具建立可控、安全的审查机制?
在审计敏感时代,日志审查安排工具成为安全运维与合规管理的关键利器。它实现审查任务的流程化、周期化与可视化,支持多系统协作、责任到人,确保“可控、可查、可追”的日志治理。工具如板栗看板、Asana、Monday 等提供任务调度、问题闭环与合规对接能力,助力企业构建高效、透明的日志审查体系,提升安全与合规水平。
|
JavaScript API 开发工具
HarmonyOS NEXT实战:日志工具
本文介绍了在HarmonyOS Next应用开发中,如何封装一个简单易用的日志工具LoggerKit。通过使用系统提供的HiLog API,开发者可以灵活输出不同级别的日志信息(DEBUG、INFO、WARN、ERROR、FATAL),用于分析应用运行状态和调试逻辑问题。文章详细说明了日志级别、参数配置及使用注意事项,并提供了完整的TypeScript封装示例代码,便于实际项目集成与应用调试。
291 0
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
364 0
优化 Apache 日志记录的 5 个最佳实践
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
5127 32
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
641 9
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
975 5
图解MySQL【日志】——Redo Log

热门文章

最新文章