摘要

在日常使用 Apache 中,我们常常需要对 Apache 进行配置,以达到方便管理的目的,而为了能清楚看到运行中的错误,我们通常会对运行中的日志文件进行分割分析,才能具体“对症下药”。

今天,我们将具体的来对日志文件进行分割,并使用 AWStats 工具进行日志分析。

实验环境:

CentOS 7.4.1708:搭建 httpd 服务

一、 Apache 日志分割

随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,如果不对日志进行分割,那么整个日志文件占用磁盘空间会很大。而这些日志可以进行访问分析、网络安全督察、网络运行状况监控等。另外在服务器遇到故障时,运维人员要打开日志进行分析,打开的过程会消耗很长时间,也会增加处理故障的时间。因此管理好这些海量的日志对网站的意义重大,我们会将 Apache 的日志按每天的日期进行自动分割。

  • Apache 自带 rotatelogs 分割工具

在 Apache 中有日志分割工具 rotatelogs ,我们只要添加配置文件来开启即可。

  1. 搭建 httpd 服务:
[root@CentOS7-1 ~]# yum install httpd
  1. 编辑httpd.conf配置文件:

vim /etc/httpd/conf/httpd.conf

Listen 192.168.100.200:80 #Listen 80

ServerName www.wzn.com:80

  1. 关闭防火墙,开启服务并尝试访问:
systemctl stop firewalld
setenforce 0
systemctl start httpd
  1. 在 /httpd/conf.d 目录下添加新的配置文件,来对主机进行访问日志和错误日志的分割

[root@CentOS7-1 ~]# cd /etc/httpd/conf.d/ [root@CentOS7-1 ~]# vim vrotatelogs.conf //新建conf文件,添加下面的行

<VirtualHost *:80> //虚拟主机 ServerAdmin admin@wzn.cn //管理员邮箱 DocumentRoot "/var/www/html/wzn" //网站根目录 ServerName www.wzn.com //服务器名 ErrorLog "|/usr/sbin/rotatelogs -l /var/www/html/logs/www.wzn.com-error_%Y%m%d.log 86400" //错误日志存放 CustomLog "|/usr/sbin/rotatelogs -l /var/www/html/logs/www.wzn.com-access_%Y%m%d.log 86400" combined //访问日志存放 </VirtualHost>

  • 创建虚拟站点及虚拟站点的日志文件位置:

[root@CentOS7-1 ~]# mkdir -p /var/www/html/logs //创建日志文件位置 [root@CentOS7-1 ~]# mkdir -p /var/www/html/wzn //创建站点 [root@CentOS7-1 ~]# echo "This is Rotatelogs" > /var/www/html/wzn/index.html //创建主页 [root@CentOS7-1 ~]# systemctl restart httpd

测试:

此时我们通过其他 IP 地址段访问网站,并到访问日志存放地查看日志信息,同样的,访问错误日志也会存放到目录下以便于分析。

[root@CentOS7-1 ~]# cd /var/www/html/logs/
[root@CentOS7-1 logs]# ls
www.wzn.com-access_20180612.log
[root@CentOS7-1 logs]# cat www.wzn.com-access_20180612.log 
192.168.100.2 - - [12/Jun/2018:14:33:17 +0800] "GET / HTTP/1.1" 200 29 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"

二、日志分析

上面我们做了 Apache 网站的日志分割,基于上述,我们来进一步对分割的日志进行日志分析,以便我们日常管理。

  1. 安装 AWStats 软件包: 从 AWStats 官网下载安装包,解压到 httpd 服务器中的 /usr/local 目录下
[root@CentOS7-1 ~]# wget http://www.awstats.org/files/awstats-7.7.tar.gz
[root@CentOS7-1 ~]# tar zxvf awstats-7.7.tar.gz
[root@CentOS7-1 ~]# mv awstats-7.7/ /usr/local/awstas
  1. 为要统计的站点建立配置文件: AWStats 系统支持统计多个网站的日志文件,通常我们会以网站名称来区别不同的站点。因此我们要对需要统计的 Web 站点分别建立站点统计配置文件。 首先切换到 /awstats/tools/ 目录中,执行其中的 awstats_configure.pl 脚本。
[root@CentOS7-1 ~]# cd /usr/local/awstas/tools/
[root@CentOS7-1 tools]# ./awstats_configure.pl

之后会进入到一个交互式的配置过程,检查awstats的安装目录、httpd 服务的主配置文件路径、日志记录格式等系统环境,并指示用户指定站点名称、设置配置文件路径。

Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf        //输出 httpd.conf 配置文件的路径

-----> 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      //确认创建新的站点配置文件

-----> 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.wzn.com       //网站的域名
  1. 编辑需要日志分析的网站配置,默认在交互完成后已创建

[root@CentOS7-1 tools]# vim /etc/awstats/awstats.www.wzn.com.conf //省略部分信息 LogFile="/var/log/httpd/access_log" //修改访问日志文件位置

[root@CentOS7-1 httpd]# mkdir /var/lib/awstats //创建目录数据 [root@CentOS7-1 httpd]# systemctl restart httpd

  1. 此时可以通过 http://www.wzn.com/awstats/awstats.pl?config=www.wzn.com 访问统计网站查看数据,但是统计的数据并不会自己去更新,需要我们进行计划性任务添加,并设置优化页面方便访问。

[root@server1 tools]# crontab -e //计划性任务添加

*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now //设置每五分钟自动更新一次 [root@server1 tools]# cd /var/www/html/ [root@server1 html]# vim awb.html //设置一个网站目录,方便访问统计网站

<html> <head> <meta http-equiv=refresh content="0;url=http://www.wzn.com/awstats/awstats.pl?config=www.wzn.com"> </head> <body></body> </html>

测试

此时通过 http://www.wzn.com/awb.html 即可访问统计网站。