AWStats分析Nginx访问日志

AWStats是在Sourceforge上发展很快的一个基于Perl的WEB日志分析工具。

它可以统计您站点的如下信息:

  • 访问量(UV),访问次数,页面浏览量(PV),点击数,数据流量等
  • 精确到每月、每日、每小时的数据
  • 访问者国家
  • 访问者IP
  • Robots/Spiders的统计
  • 访客持续时间
  • 对不同Files type的统计信息
  • Pages-URL的统计
  • 访客操作系统浏览器等信息
  • 其它信息(搜索关键字等等)

下面是AWStats分析Nginx日志的操作步骤:

一、配置nginx日志格式

修改nginx.conf的日志格式,不然awstats无法分析。

    log_format access ‘$remote_addr - $remote_user [$time_local] "$request" ‘
        ‘$status $body_bytes_sent "$http_referer" ‘
        ‘"$http_user_agent" "$http_x_forwarded_for"‘;
    access_log /var/log/nginx/access.log access;

注意,日志格式里的双引号不能漏了且每个参数之间是一个空格分隔,因为只要有细微的差别,awstats就无法读取日志。

改好后,使nginx重读配置文件:

shell# nginx -t && nginx -s reload

二、自动切割nginx日志

每天晚上23点59分定时执行一个shell脚本来切割nginx日志。脚本内容如下:

#!/bin/bash
#
# Filename:    nginxCutLog.sh
# Author:      Qicheng
# Website:     http://qicheng0211.blog.51cto.com/
# Description: 切割nginx日志
# Notes:       设置crontab,每天23点59分定时执行
#
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ];then
    echo "Error: 必须以root用户运行此程序!"
    exit 1
fi

nginx_logs_dir="/var/log/nginx"
nginx_pid_file="/var/run/nginx.pid"
# 切割后的日志文件名,例如access_20141022.log
nginx_log_today="$nginx_logs_dir/access_`date +%Y%m%d`.log"

[ -f "$nginx_log_today" ] && exit 1
mv $nginx_logs_dir/access.log $nginx_log_today
# 给nginx发送USR1信号,使重新打开新的access.log日志文件
[ -f $nginx_pid_file ] && /bin/kill -USR1 $(cat $nginx_pid_file)

设置crontab:

59 23 * * * /bin/bash /yourscriptpath/nginxCutLog.sh

三、安装awstats

shell# wget http://awstats.sourceforge.net/files/awstats-7.0.tar.gz
shell# tar -zxvf awstats-7.0.tar.gz
shell# mv awstats-7.0 /usr/local/awstats
shell# mkdir -p /var/lib/awstats

四、配置awstats

进入/usr/local/awstats/tools/目录,执行配置脚本awstats_configure.pl:

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

程序执行结束后,会在/etc/awstats/目录下生成你的配置文件。然后编辑配置文件,修改LogFile参数,跟日志切割脚本中的日志路径对应起来:

LogFile="/var/log/nginx/access_%YYYY-24%MM-24%DD-24.log"

注意,这里日期格式“%YYYY-24%MM-24%DD-24”,是指24小时之前的年月日,也就是昨天的日期。

测试:

shell# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=yourwebsite

注意:-config=后面的参数是你在执行awstats_configure.pl时输入的站点域名。

五、配置awstats生成静态页面

利用awstats的工具将统计的结果生成静态文件:

shell# mkdir -p /var/www/awstats
shell# /usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=yourwebsite -lang=cn -dir=/var/www/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

注意:-config=后面的参数是你在执行awstats_configure.pl时输入的站点域名;-dir=是统计结果静态文件的输出目录。

设置crontab,每天凌晨00:01定时更新静态页面:

1 0 * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=yourwebsite -lang=cn -dir=/var/www/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

一般站长都不愿随便让人知道自己站的真实流量,所以要把awstats统计结果页面进行密码保护,这里需要用到apache自带的工具htpasswd:

shell# yum -y install httpd-tools
shell# htpasswd -cd admin.pass admin
New password: 
Re-type new password: 
Adding password for user admin

把生成的密码文件admin.pass放到nginx主配置目录下(/etc/nginx/)。

在nginx配置扩展目录(/etc/nginx/conf.d/)下新建awstats.conf配置文件,内容如下:

server {
    listen       83;
    server_name  localhost;
    location ~ ^/awstats/ {     # html 静态页面目录
        root   /var/www;
        index  index.html;
        access_log off;
        error_log off;
        charset gb2312;
        auth_basic "admin";
        auth_basic_user_file admin.pass;
    }

    location ~ ^/icon/ {        # 图标目录
        root   /usr/local/awstats/wwwroot;
        index  index.html;
        access_log off;
        error_log off;
    }
}

最后使nginx重读配置文件,用浏览器查看统计结果 http://yourhostname:83/awstats/awstats.yourwebsite.html

日志分析页面示例:

参考资料:

http://baike.baidu.com/view/228748.htm?fr=aladdin

http://www.ibm.com/developerworks/cn/linux/l-cn-awstats-nginx/(有些错误,已在本文中纠正)

时间: 2024-08-05 16:39:35

AWStats分析Nginx访问日志的相关文章

采集并分析Nginx访问日志

日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,帮助您快速采集并分析Nginx日志. 许多个人站长选取了Nginx作为服务器搭建网站,在对网站访问情况进行分析时,需要对Nginx访问日志统计分析,从中获取网站的访问量.访问时段等访问情况.传统模式下利用CNZZ等方式,在前端页面插入js,用户访问的时候触发js,但仅能记录访问请求.或者利用流计算.离线统计分析Nginx访问日志,但需要搭建一套环境,并且在实时性以及分析灵活性上难以平衡. 日志服务在支持查询

命令分析nginx访问日志的用法

awk分析日志常用高级使用命令方法 分析访问日志(Nginx为例) 日志格式: '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"' 统计访问IP次数: # awk '{a[$1]++}END{for(i

使用hive分析nginx访问日志方法

以下案例是使用hive分析nginx的访问日志案例,其中字段分隔通过正则表达式匹配,具体步骤如下: 日志格式: 192.168.5.139 - - [08/Jun/2017:17:09:12 +0800] "GET //oportal/static/ui/layer/skin/default/icon.png HTTP/1.1" 200 9905 http://192.168.100.126//oportal/static/ui/layer/skin/layer.css "M

python脚本分析nginx访问日志

日志格式如下: 223.74.135.248 - - [11/May/2017:11:19:47 +0800] "POST /login/getValidateCode HTTP/1.1" 404 14227 "http://www.yidianchina.com/login/getValidateCode" "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)" 分别是IP,访问时间,请求方法,

烂泥:利用awstats分析nginx日志

昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割nginx日志>这篇文章. 今天打算分析下nginx日志,要分析nginx日志,我们可以通过shell脚本和第三方软件awstats进行分析,在此我们选择的是通过第三方软件awstats进行分析. 要使用awstats分析nginx日志,我们要安装awstats,而在安装awstats之前,我们需要先来介绍下awstats是什么? 一.awstats是什么 awstats是一个免费非常简洁而且强大有个性的基于Pe

使用awstats分析nginx日志

1.awstats介绍 本文主要是记录centos6.5下安装配置awstats,并统计nginx访问日志 1.1 awstats介绍 awstats是一款日志统计工具,它使用Perl语言编写,可统计的日志类型包括appache,nginx,ftp,mail等,awstats对nginx日志统计非常详细,如统计项 按参观时间:  按月历史统计   按日期统计   按星期   每小时浏览次数 按参观者:  国家或地区   城市   IP   最近参观日期   无法反解译的IP地址   搜索引擎网站

awstats分析nginx日志文件

awstats分析nginx日志文件,将生成的结果(为txt文件)保存在/var/www/awstats目录下,通过apche来 显示生成的结果. nginx的域名为:www.a.com:80 LogFile="/usr/local/mybin/nginx/logs/access.log"  #nginx的日志文件路径 DirData="/var/www/awstats/" #awstats生成结果的保存路径 SiteDomain="www.a.com&q

Nginx 访问日志增长暴增出现尖刀的详细分析

前言:          Nginx日志里面Mobileweb_access.log增长特别大,一天上百兆,将近100W的访问记录,按照我们目前的规模,热点用户才500个左右,就算人人用手机app访问,怎么可能会有这么大的url访问量?以前只是安装使用nginx,还没有抽出时间仔细研究,这回需要彻底的去分析nginx日志了. 1,日志分类 主要2种,一种是错误日志,一种是访问日志,这些配置都在/usr/local/nginx/conf/nginx.conf里面,默认都是打开的,自己也可以选择关闭

自定义nginx访问日志和内置变量使用

自定义nginx访问日志和内置变量使用 安装第三方echo模块后查看内置变量 内置变量 1.$args 用户在浏览器中查找的相关参数(uri中?之后的字段)2.$document_root 站点根目录所在的位置3.$document_uri 去除url中域名部分后所剩下的目录4.$host 所访问的主机5.$http_user_agent 客户端所使用的浏览器6.$http_cookie 客户端的cookie信息7.$limit_rate 客户端的下载速率0表示不限制速度 server { se