日志分析工具Awstats实战之Nginx篇-分析结果静态化

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1316979

前言:

Awstats 是在 SourceForge 上发展很快的一个基原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1316979

前言:

Awstats 是在 SourceForge 上发展很快的一个基于 Perl 的 WEB 日志分析工具,一个充分的日志分析让 Awstats 显示您下列资料:

访问次数、独特访客人数,访问时间和上次访问,使用者认证、最近认证的访问,每周的高峰时间(页数,点击率,每小时和一周的千字节),域名/国家的主机访客(页数,点击率,字节,269域名/国家检测, geoip 检测),主机名单,最近访问和未解析的 IP 地址名单大多数看过的进出页面,档案类型,网站压缩统计表(mod_gzip 或者 mod_deflate),使用的操作系统 (每个操作系统的页数,点击率 ,字节, 35 OS detected),使用的浏览器,机器人访问(检测 319 个机器人),蠕虫攻击 (5 个蠕虫家族),搜索引擎,利用关键词检索找到你的地址,HTTP 协议错误(最近查阅没有找到的页面),其他基于 URL 的个性报导,链接参数, 涉及综合行销领域目的.贵网站被加入"最喜爱的书签".次数.屏幕大小(需要在索引页补充一些 HTML 标签).浏览器的支持比例: Java, Flash, RealG2 reader, Quicktime reader, WMA reader, PDF reader.负载平衡服务器比率集群报告.

Awstats 的运行是需要 PERL 环境的支持,从 awstats 的文档来看,它对 Apache HTTP Server 的支持是非常完美的,而当我们把 Web 服务器换成 Nginx 后,要运行 awstats 变得很麻烦。首先 Nginx 本身对 Perl 的支持是比较弱的,甚至官方也不建议使用;另外在日志格式上有需要修改后才能运行。

使用awstats可以分析apache日志,同样也可以分析nginx日志。本文将详细介绍自动定时切割nginx的访问日志,并使用awstats来定时分析nginx日志及实现统计结果可供安全便捷的查阅。


环境:

CentOS 6.4 x86_64ip:192.168.1.113域名:www.sunsky.com(server和client都通过hosts文件解析)nginx-1.2.9 编译安装,路径/usr/local/nginx,服务开启状态日志记录格式为nginx默认的,切勿更改,否则会造成awstats无法分析日志。log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                  '$status $body_bytes_sent "$http_referer" '                  '"$http_user_agent" "$http_x_forwarded_for"';awstats-7.2.tar.gz

一、日志自动切割

对于nginx的日志切割,由于没有像apache一样去用cronolog工具,这里我们就写一个脚本,让它可以在每天00:01自动执行,切割昨天的日志(交由awstats分析),压缩前天的日志(压缩日志可减小存储空间,为防止awstats没有分析完就被压缩,所以只压缩前天的日志)。

1 vim /server/scripts/cut_nginx_log.sh

输入以下内容:

#!/bin/shyesterday=`date -d "yesterday" +"%Y%m%d"`before_yesterday=`date -d "-2 day" +"%Y%m%d"`Nginx_Dir="/usr/local/nginx"Nginx_logs="/app/logs"Log_Name="www_access"cd /tmp[ -d $Nginx_Logs ] && cd $Nginx_logs || exit 1[ -f $Log_Name.log ] && /bin/mv $Log_Name.log ${Log_Name}_${yesterday}.log || exit 1if [ $? -eq 0 -a -f $Nginx_Dir/logs/nginx.pid ]    then       kill -USR1 `cat $Nginx_Dir/logs/nginx.pid`fi[ -f  ${Log_Name}_${before_yesterday}.log ] && /usr/bin/gzip ${Log_Name}_${before_yesterday}.log|| exit 1

执行crontab -e将该脚本加入定时任务中

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

这样每天凌晨00:01就能自动实现日志的切割,压缩等功能了

因为本次实验下的nginx此时已经有日志了,另外为了后文awstats能对切割过的日志进行分析,所以这里我们要运行一下此脚本,来将现有日志进行切割生成昨天的日志方便后文操作。

/bin/sh
 
/server/scripts/cut_nginx_log
.sh >
/dev/null
 
2>&1

二、Awstats的安装与配置

1.部署awstats

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

wget http://awstats.sourceforge.net/files/awstats-7.2.tar.gztar zxf awstats-7.2.tar.gzmv awstats-7.2 /usr/local/awstats

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

chown -R root.root /usr/local/awstatschmod +x /usr/local/awstats/tools/*.plchmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl

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

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

此时会出现如下提示

----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur -----This tool will help you to configure AWStats to analyze statistics forone web server. You can try to use it to let it do all that is possiblein AWStats setup, however following the step by step manual setupdocumentation (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 installEnter full config file path of your Web server.Example: /etc/httpd/httpd.confExample: /usr/local/apache2/conf/httpd.confExample: c:\Program files\apache group\apache\conf\httpd.confConfig file path ('none' to skip web server setup):> none      #这里让填写网页服务器的配置文件路径,因为我们用的不是apache,所以这里要填noneYour web server config file(s) could not be found.You will need to setup your web server manually to declare AWStatsscript 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/profilefile (required if first install) [y/N] ? y         #询问是否创建一个新的配置文件,这里填y-----> Define config file name to createWhat is the name of your web site or profile analysis ?Example: www.mysite.comExample: demoYour web site, virtual server or profile name:> www.sunsky.com      #这里让填写你的网站域名,虚拟主机名或者随便一个配置名-----> Define config file pathIn which directory do you plan to store your config file(s) ?Default: /etc/awstatsDirectory 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 schedulerSorry, 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.comOr if you have several config files and prefer having only one command:/usr/local/awstats/tools/awstats_updateall.pl nowPress ENTER to continue...   #提示不能自动加入crontab定时任务,需要稍后自己添加,我们按回车继续即可A SIMPLE config file has been created: /etc/awstats/awstats.www.sunsky.com.confYou 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.comYou can also build static report pages for 'www.sunsky.com' with command:> perl awstats.pl -output=pagetype -config=www.sunsky.comPress ENTER to finish... #提示配置文件创建完成和如何更新配置及建立静态报告页,这里我们回车即可结束这个配置向导

2、修改awstats配置文件

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

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

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

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

这里更改的目的是指定awstats的数据库配置文件(即awstats的数据库(纯文本))。由于,此处没有/usr/local/awstats/data目录,所以我们要创建出来

mkdir /usr/local/awstats/data

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

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

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


3、创建awstats统计结果存放目录

现在我们要创建awstats统计结果的数据库存放

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com

目录如果屏幕输出类似下面的提示就说明配置文件都正确无误了

Create/Update database for config "/etc/awstats/awstats.www.sunsky.com.conf" by AWStats version 7.2 (build 1.992)From data in log file "/app/logs/www_access.log"...Phase 1 : First bypass old records, searching new record...Searching new records from beginning of log file...Jumped lines in file: 0Parsed lines in file: 0 Found 0 dropped records, Found 0 comments, Found 0 blank records, Found 0 corrupted records, Found 0 old records, Found 0 new qualified records.

注释:awstats.pl 会到 /etc/awstats目录下搜索,根据读取到的配置文件运行程序,去读取-config中的参数,把www.sunsky.com扩展成 awstats.www.sunsky.com.conf

分析日志:运行后将这样的日志统计结果归档到一个awstats的数据库(纯文本)里;

然后是输出:分两种形式

1、一种是通过cgi程序读取统计结果数据库输出;

2、一种是运行后台脚本将输出导出成静态文件;

统计分析完成后,结果还在 Awstats 的数据库中。在 Apache 上,可以直接打开 Perl 程序的网页查看统计。 

vim /server/scripts/awstats.sh

但Nginx 对 Perl 支持并不好,所以要换个方法,利用 awstats 的工具将统计的结果生成静态文件,这里方便我们还是用脚本来实现输入以下内容

#!/bin/shAwstats_Dir="/usr/local/awstats"[ -d /www/awstats ]||mkdir /www/awstats$Awstats_Dir/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com$Awstats_Dir/tools/awstats_buildstaticpages.pl -update -config=www.sunsky.com -awstatsprog=$Awstats_Dir/wwwroot/cgi-bin/awstats.pl -lang=cn -dir=/www/awstats

脚本内容讲解:

/usr/local/awstats/tools/awstats_buildstaticpages.pl    Awstats 静态页面生成工具-update -config=www.sunsky.com  更新配置项-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl  Awstats 日志更新程序路径-lang=cn     语言为中文-dir= /www/awstats  统计结果输出目录

awstats_buildstaticpages.pl会根据-config的参数去读取里面的DirData路径下的数据库配置文件,然后生成静态的html文件,生成的文件重定向到/www/awstats目录下。

三、配置nginx实现安全访问

接下来我们要配置nginx使其能安全的访问到分析的数据

vim /usr/local/nginx/conf/nginx.conf

在server{}内添加如下内容:

server {        listen       80;        server_name  www.sunsky.com;        location / {            root   /www/sunsky;            index  index.html index.htm;            access_log /app/logs/www_access.log commonlog;}location ~ ^/awstats/ {            root   /www/;            index  awstats.www.sunsky.com.html;          #根据自己的网站域名进行更改首页文件            autoindex on;            access_log off;            charset gb2312;            auth_basic "Restricted";                                          #有些网站不愿意公开网站流量信息,所以加个认证            auth_basic_user_file /usr/local/nginx/htpasswd.pass;   #该文件由apache的加密认证工具htpasswd创建}location ~ ^/icon/ {            root   /usr/local/awststs/wwwroot;            index  index.html;            access_log off;            charset gb2312;}    }

由于nginx没有好的加密认证工具,需要借助apache的htpasswd来实现加密认证功能

htpasswd -c -m /usr/local/nginx/htpasswd.pass sunskyadmin      #用户名为sunskyadmin

配置完毕之后,检查nginx语法,然后优雅重启之后,用游览器访问www.sunsky.com/awstats,输入账号密码之后即可查看统计信息了。

至此,awstats已经可以实现对Nginx的日志统计及静态化的安全访问功能了。

四、配置awstats自动运行

为了让整个日志的统计过程可以实现自动化,将awstats.sh脚本加入crontab定时任务中去,此时结合上面的定时切割任务,我们的crontab里面会有多出来两条定时任务

1 0 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&10 1 * * * /bin/sh /server/scripts/awstats.sh >/dev/null 2>&1

到此,我们整个日志访问工具awstats在nginx上的配置就完成了。当然此篇是基于静态页面的显示的,后面会再写一篇博文日志分析工具Awstats实战之Nginx篇-分析结果动态化出来和大家一起交流学习的。

于 Perl 的 WEB 日志分析工具,一个充分的日志分析让 Awstats 显示您下列资料:

访问次数、独特访客人数,访问时间和上次访问,使用者认证、最近认证的访问,每周的高峰时间(页数,点击率,每小时和一周的千字节),域名/国家的主机访客(页数,点击率,字节,269域名/国家检测, geoip 检测),主机名单,最近访问和未解析的 IP 地址名单大多数看过的进出页面,档案类型,网站压缩统计表(mod_gzip 或者 mod_deflate),使用的操作系统 (每个操作系统的页数,点击率 ,字节, 35 OS detected),使用的浏览器,机器人访问(检测 319 个机器人),蠕虫攻击 (5 个蠕虫家族),搜索引擎,利用关键词检索找到你的地址,HTTP 协议错误(最近查阅没有找到的页面),其他基于 URL 的个性报导,链接参数, 涉及综合行销领域目的.贵网站被加入"最喜爱的书签".次数.屏幕大小(需要在索引页补充一些 HTML 标签).浏览器的支持比例: Java, Flash, RealG2 reader, Quicktime reader, WMA reader, PDF reader.负载平衡服务器比率集群报告.

Awstats 的运行是需要 PERL 环境的支持,从 awstats 的文档来看,它对 Apache HTTP Server 的支持是非常完美的,而当我们把 Web 服务器换成 Nginx 后,要运行 awstats 变得很麻烦。首先 Nginx 本身对 Perl 的支持是比较弱的,甚至官方也不建议使用;另外在日志格式上有需要修改后才能运行。

使用awstats可以分析apache日志,同样也可以分析nginx日志。本文将详细介绍自动定时切割nginx的访问日志,并使用awstats来定时分析nginx日志及实现统计结果可供安全便捷的查阅。


环境:

CentOS 6.4 x86_64ip:192.168.1.113域名:www.sunsky.com(server和client都通过hosts文件解析)nginx-1.2.9 编译安装,路径/usr/local/nginx,服务开启状态日志记录格式为nginx默认的,切勿更改,否则会造成awstats无法分析日志。log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                  '$status $body_bytes_sent "$http_referer" '                  '"$http_user_agent" "$http_x_forwarded_for"';awstats-7.2.tar.gz

一、日志自动切割

对于nginx的日志切割,由于没有像apache一样去用cronolog工具,这里我们就写一个脚本,让它可以在每天00:01自动执行,切割昨天的日志(交由awstats分析),压缩前天的日志(压缩日志可减小存储空间,为防止awstats没有分析完就被压缩,所以只压缩前天的日志)。

vim /server/scripts/cut_nginx_log.sh

输入以下内容:

#!/bin/shyesterday=`date -d "yesterday" +"%Y%m%d"`before_yesterday=`date -d "-2 day" +"%Y%m%d"`Nginx_Dir="/usr/local/nginx"Nginx_logs="/app/logs"Log_Name="www_access"cd /tmp[ -d $Nginx_Logs ] && cd $Nginx_logs || exit 1[ -f $Log_Name.log ] && /bin/mv $Log_Name.log ${Log_Name}_${yesterday}.log || exit 1if [ $? -eq 0 -a -f $Nginx_Dir/logs/nginx.pid ]    then       kill -USR1 `cat $Nginx_Dir/logs/nginx.pid`fi[ -f  ${Log_Name}_${before_yesterday}.log ] && /usr/bin/gzip ${Log_Name}_${before_yesterday}.log|| exit 1

执行crontab -e将该脚本加入定时任务中

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

这样每天凌晨00:01就能自动实现日志的切割,压缩等功能了

因为本次实验下的nginx此时已经有日志了,另外为了后文awstats能对切割过的日志进行分析,所以这里我们要运行一下此脚本,来将现有日志进行切割生成昨天的日志方便后文操作。

/bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1

二、Awstats的安装与配置

1.部署awstats

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

wget http://awstats.sourceforge.net/files/awstats-7.2.tar.gztar zxf awstats-7.2.tar.gzmv awstats-7.2 /usr/local/awstats

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

chown -R root.root /usr/local/awstatschmod +x /usr/local/awstats/tools/*.plchmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl

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

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

此时会出现如下提示

----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur -----This tool will help you to configure AWStats to analyze statistics forone web server. You can try to use it to let it do all that is possiblein AWStats setup, however following the step by step manual setupdocumentation (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 installEnter full config file path of your Web server.Example: /etc/httpd/httpd.confExample: /usr/local/apache2/conf/httpd.confExample: c:\Program files\apache group\apache\conf\httpd.confConfig file path ('none' to skip web server setup):> none      #这里让填写网页服务器的配置文件路径,因为我们用的不是apache,所以这里要填noneYour web server config file(s) could not be found.You will need to setup your web server manually to declare AWStatsscript 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/profilefile (required if first install) [y/N] ? y         #询问是否创建一个新的配置文件,这里填y-----> Define config file name to createWhat is the name of your web site or profile analysis ?Example: www.mysite.comExample: demoYour web site, virtual server or profile name:> www.sunsky.com      #这里让填写你的网站域名,虚拟主机名或者随便一个配置名-----> Define config file pathIn which directory do you plan to store your config file(s) ?Default: /etc/awstatsDirectory 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 schedulerSorry, 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.comOr if you have several config files and prefer having only one command:/usr/local/awstats/tools/awstats_updateall.pl nowPress ENTER to continue...   #提示不能自动加入crontab定时任务,需要稍后自己添加,我们按回车继续即可A SIMPLE config file has been created: /etc/awstats/awstats.www.sunsky.com.confYou 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.comYou can also build static report pages for 'www.sunsky.com' with command:> perl awstats.pl -output=pagetype -config=www.sunsky.comPress ENTER to finish... #提示配置文件创建完成和如何更新配置及建立静态报告页,这里我们回车即可结束这个配置向导

2、修改awstats配置文件

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

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

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

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

这里更改的目的是指定awstats的数据库配置文件(即awstats的数据库(纯文本))。由于,此处没有/usr/local/awstats/data目录,所以我们要创建出来

mkdir /usr/local/awstats/data

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

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

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


3、创建awstats统计结果存放目录

现在我们要创建awstats统计结果的数据库存放目录

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com

如果屏幕输出类似下面的提示就说明配置文件都正确无误了

Create/Update database for config "/etc/awstats/awstats.www.sunsky.com.conf" by AWStats version 7.2 (build 1.992)From data in log file "/app/logs/www_access.log"...Phase 1 : First bypass old records, searching new record...Searching new records from beginning of log file...Jumped lines in file: 0Parsed lines in file: 0 Found 0 dropped records, Found 0 comments, Found 0 blank records, Found 0 corrupted records, Found 0 old records, Found 0 new qualified records.

注释:awstats.pl 会到 /etc/awstats目录下搜索,根据读取到的配置文件运行程序,去读取-config中的参数,把www.sunsky.com扩展成 awstats.www.sunsky.com.conf

分析日志:运行后将这样的日志统计结果归档到一个awstats的数据库(纯文本)里;

然后是输出:分两种形式

1、一种是通过cgi程序读取统计结果数据库输出;

2、一种是运行后台脚本将输出导出成静态文件;

统计分析完成后,结果还在 Awstats 的数据库中。在 Apache 上,可以直接打开 Perl 程序的网页查看统计。 但Nginx 对 Perl 支持并不好,所以要换个方法,利用 awstats 的工具将统计的结果生成静态文件,这里方便我们还是用脚本来实现

vim /server/scripts/awstats.sh

输入以下内容

#!/bin/shAwstats_Dir="/usr/local/awstats"[ -d /www/awstats ]||mkdir /www/awstats$Awstats_Dir/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com$Awstats_Dir/tools/awstats_buildstaticpages.pl -update -config=www.sunsky.com -awstatsprog=$Awstats_Dir/wwwroot/cgi-bin/awstats.pl -lang=cn -dir=/www/awstats

脚本内容讲解:

/usr/local/awstats/tools/awstats_buildstaticpages.pl    Awstats 静态页面生成工具-update -config=www.sunsky.com  更新配置项-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl  Awstats 日志更新程序路径-lang=cn     语言为中文-dir= /www/awstats  统计结果输出目录

awstats_buildstaticpages.pl会根据-config的参数去读取里面的DirData路径下的数据库配置文件,然后生成静态的html文件,生成的文件重定向到/www/awstats目录下。

三、配置nginx实现安全访问

接下来我们要配置nginx使其能安全的访问到分析的数据

vim /usr/local/nginx/conf/nginx.conf

在server{}内添加如下内容:

server {        listen       80;        server_name  www.sunsky.com;        location / {            root   /www/sunsky;            index  index.html index.htm;            access_log /app/logs/www_access.log commonlog;}location ~ ^/awstats/ {            root   /www/;            index  awstats.www.sunsky.com.html;          #根据自己的网站域名进行更改首页文件            autoindex on;            access_log off;            charset gb2312;            auth_basic "Restricted";                                          #有些网站不愿意公开网站流量信息,所以加个认证            auth_basic_user_file /usr/local/nginx/htpasswd.pass;   #该文件由apache的加密认证工具htpasswd创建}location ~ ^/icon/ {            root   /usr/local/awststs/wwwroot;            index  index.html;            access_log off;            charset gb2312;}    }

由于nginx没有好的加密认证工具,需要借助apache的htpasswd来实现加密认证功能

htpasswd -c -m /usr/local/nginx/htpasswd.pass sunskyadmin      #用户名为sunskyadmin

配置完毕之后,检查nginx语法,然后优雅重启之后,用游览器访问www.sunsky.com/awstats,输入账号密码之后即可查看统计信息了。

至此,awstats已经可以实现对Nginx的日志统计及静态化的安全访问功能了。

四、配置awstats自动运行

为了让整个日志的统计过程可以实现自动化,将awstats.sh脚本加入crontab定时任务中去,此时结合上面的定时切割任务,我们的crontab里面会有多出来两条定时任务

1 0 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&10 1 * * * /bin/sh /server/scripts/awstats.sh >/dev/null 2>&1

到此,我们整个日志访问工具awstats在nginx上的配置就完成了。当然此篇是基于静态页面的显示的,后面会再写一篇博文日志分析工具Awstats实战之Nginx篇-分析结果动态化出来和大家一起交流学习的。

转自:http://nolinux.blog.51cto.com/4824967/1316979

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/2022

(0)
s19930811s19930811
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • N25—-第三周作业

    1、 列出当前系统上所有已登录用户的用户名。只显示一次    who | cut -d' ' -f1 | sort -u 2、 取出最后登录到当前系统的用户的相关信息。   last | h…

    Linux干货 2016-12-19
  • 马哥教育网络班25期-第2周作业

    一、Linux文件管理类命令: (1)ls             list 用来显示目录列表             …

    Linux干货 2016-12-12
  • 第十周作业

    第十周作业   1、CentOS系统启动流程: 1.加电自检:由bios去检测各硬件是否存在且是否正常运行,然后进行硬件初始化 2.选择启动顺序,加载mbr:根据bios设置的设备启动顺序,找到第一个安装有bootloader的设备进行启动,bootloader去识别加载操作系统中的核心文件,并提交到内存中运行,进而来启动相对应的操作系统 由于bootloa…

    Linux干货 2017-11-13
  • bash编程初体验(三)

    bash编程初体验之for for while until 概述 本文将介绍以for为代表的循环语句在shell 脚本中的应用,常见的循环语句有for, while,until,作为循环语句,顾名思义,它就是重复地做一件事,直到满足某一条件而退出;另外,还有两个循环控制语句continue与break来配合循环语句,以实现临时中断或跳出循环的功能;以下为fo…

    Linux干货 2016-08-24
  • 第四周博客分享

                    时间匆匆,转眼来马哥已经快一个月了,这一个月对我来说是收获满满,每天都在学到新的东西。       &nbs…

    2017-08-06
  • N26-第八周

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥(birdge):工作于OSI模型中的数据链路层,是连接两个局域网的一种存储/转发设备,能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器,可以分割冲突域。   &nb…

    2017-03-08