AWStats简介:

AWStats是使用Perl语言开发的一款开源日志分析系统。它不仅可以用来分析Apache网站服务器的访问日志,也可以用来分析Samba、Vsftpd、IIS等服务的日志文件。结合crond等计划任务服务,可以对不断增长的日志内容定期进行分析。
AWStats提供一系列的perl脚本实现:服务配置,日志读取,报表生成等功能。而功能实现的过程是:

  • 将apache的访问情况记录到日志中,AWStats每次执行更新时读取这些日志
  • 分析日志数据,将结果存储到数据库中
  • AWStats提供一个cgi程序通过web页面来显示数据库中所统计的数据。

    实验环境

  • 系统:CentOS-7-x86_64
  • Apache服务器:Apache/2.4.6
  • 网站域名:www.benet.com
  • 源码包:awstats-7.6
  • DNS服务器

软件包安装

安装perl环境包

CenTos7中软件的安装多使用yum安装,在没有本地yum源的情况下,我们就需要连接到现网,获取在线更新源。但是在实验中我们只需要在本地虚拟机中操作,访问Web网页查看日志分析情况。所以可以先联网安装好实验所需的软件包,然后再将网卡模式更改为仅主机模式,设定静态IP地址,方便实验。
应为awstats是基于perl语言开发的,所以我们首先需要准备perl环境,再centos7系统中会有安装,如果没有,只需要使用yum安装即可,一般即使已经安装了,但会有更新。

perl -version   //检查perl版本号
yum -y install perl*   //yum安装即可

安装httpd

httpd的安装也是使用yum安装,当然也是可以选择编译安装。

yum -y install httpd

安装dns服务器

yum -y install bind

安装awstats软件包

AWStats软件包安装非常简单,只需将软件包解压到httpd服务器的/usr/local/下即可。软件包可使用挂载windows共享文件夹的方式。

tar zxf awstats-7.6.tar.gz
mv awstats-7.6/ /usr/local/awstats

配置httpd服务器

  • 启动httpd服务
    httpd软件安装完成主配置文件在:/etc/httpd/conf/httpd.conf,对其进行简单配置,包括修改监听地址(Listen 192.168.175.205:80)和服务器名称(ServerName www.benet.com:80)两项。修改完成之后启动服务
    systemctl start httpd.service   //启动服务
    systemctl status httpd.service  //查看服务状态
  • 在站点目录下创建测试首页。
    cd /var/www/html/
    echo "HTTPD TEST" > index.html
  • 关闭防火墙
    systemctl disable firewalld.service
    systemctl stop firewalld.service
    setenforce 0
  • 在windows端使用IE浏览器进行访问,测试服务器是否搭建成功
    在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统

    配置DNS服务器

    关于如何搭建DNS服务器,我在之前的文章中有过详细介绍,那篇文中的系统版本是Redhat 6.5,更换了系统,但是搭建方式却没有改变,可以参考,链接奉上DNS服务部署之一 域名解析服务

配置AWStats日志分析系统

  • 为要统计的站点建立配置文件
    AWStats系统支持统计多个网站的日志文件,通常以网站名称来区别不同的站点。因此,在执行分析前要为每个Web站点建立站点统计配置文件,借助于AWStats系统提供的awstats_configure.pl 脚本可以简化创建过程。
    cd /usr/local/awstats/tools/
    perl awstats_configure.pl     //执行脚本创建配置文件
    1. 指定httpd主配置文件路径
      在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统
    2. 为指定Web站点创建配置文件
      在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统
    3. 指定要统计的目标站点名称
      在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统
    4. 日志分析系统Web页面地址
      在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统
    5. 因为在Apache2.4以上的版本中重新定义了访问权限,所需需将在httpd主配置文件中自动生成的awstats访问权限进行简单修改,在配置文件末尾。
      <Directory "/usr/local/awstats/wwwroot">
      Options None
      AllowOverride None
      Order allow,deny
      Allow from all
      Require all granted    //添加该句
      </Directory>
    6. 重启httpd服务
      systemctl restart httpd.service
  • 修改站点统计配置文件
    修改的主要内容包括指定要分析的web站点的日志文件路径和用来存放统计数据的目录
    cd /etc/awstats
    vim awstats.www.benet.com.conf
    LogFile="/etc/httpd/logs/access_log"  //50行
    DirData="/var/lib/awstats"            //220行,该目录实际上没有,需要手动创建
    mkdir /var/lib/awstats

    执行日志分析

    perl /usr/local/awstats/tools/awstats_updateall.pl now
    Running '"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=www.benet.com -configdir="/etc/awstats"' to update config www.benet.com
    Create/Update database for config "/etc/awstats/awstats.www.benet.com.conf" by AWStats version 7.6 (build 20161204)
    From data in log file "/etc/httpd/logs/access_log"...
    Phase 1 : First bypass old records, searching new record...
    Searching new records from beginning of log file...
    Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
    Jumped lines in file: 0
    Parsed lines in file: 63
    Found 0 dropped records,
    Found 0 comments,
    Found 0 blank records,
    Found 0 corrupted records,
    Found 0 old records,
    Found 63 new qualified records.

    创建计划任务

    crontab -e
    */5 * * * *  /usr/local/awstats/tools/awstats_updateall.pl now  //表示每隔五分钟更新
    systemctl start crond      //启动服务
    systemctl enable crond     //将服务加入系统启动项
    /var/spool/mail/root   //执行计划任务会在该目录下有新邮件提醒

    在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统

    访问AWStats日志分析系统

    访问站点”http://www.benet.com/awstats/awstats.pl?config=www.benet.com “即可看到AWStats日志分析系统的统计页面
    在httpd服务器(httpd-2.4)中搭建AWStats日志分析系统

    优化网页地址

    不做更改的网页地址过长,不方便记忆,为了简化操作,我们可以在web站点的站点目录下建立一个自动调转的HTML网页。当访问http://www.benet.com/aws.html 即可自动跳转到日志分析系统页面。

    vim /var/www/html/aws.html
    <html>
    <head>
    <meta http-equiv=refresh content="0;url=http://www.benet.com/awstats/awstats.pl?config=www.benet.com">
    </head>   //头部标签中添加网页
    <body></body>
    </html>