• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    awstats分析nginx日志

      in  unix      Tags: 

    看了awstats介绍后,感觉是个好东西,等装好来用的时候,不像那么一回事。awstats说白了就是对Nginx,apache产生的日志进行分析。awstats分析出来的数据不准,日志是按照一定的规则来生成的,把访问数据存入到文件中,但是数据存入的时候可能是不全的,awstats分析的时候就有误差。

    一,安装awstats

    yum install awstats

    二,配置awstats

    1,Nginx日志格式

    log_format  access_www  '$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_www;

    awstats分析现有的日志文件,产生的日志文件名,从头到尾要对得上,要不然会报错的。

    2,切割日志脚本cut.sh

    [root@localhost access] cat /home/zhangy/cut.sh
    #!/bin/bash
    logs_path="/var/log/Nginx/" #nginx日志位置
    # 你的日志名, access_www是web服务器对应log名,accesss_img是图片服务器对应的log名
    logs_names=(access_www access_img)
    num=${#logs_names[@]}        #数组总数
    for((i=0;i<num ;i++));do     #循环
        if [ ! -d ${logs_path}/${logs_names[i]} ]    #判断目录是不是存在
        then
            mkdir -p ${logs_path}${logs_names[i]}   #不存在,建之,日志重新建文件夹,切割后文件很多,所以分目录
        fi
        log_name="${logs_path}${logs_names[i]}.log"  #原始目录位置
        if [ -f "$log_name" ]; then
            mv ${logs_path}${logs_names[i]}.log ${logs_path}${logs_names[i]}/${logs_names[i]}.log-$(date -d "yesterday" +"%Y%m%d")
        fi
    done
    nginx -s reopen   #重新生成原始日志文件

    3,awstats_configure.pl生成配置文件

    [root@localhost awstats]# find / -name "awstats_configure.pl" -print
    /usr/share/awstats/tools/awstats_configure.pl

    yum装的,不知道什么位置查找一下。下面重点说一下,生成过程

    [root@localhost access]# /usr/share/awstats/tools/awstats_configure.pl
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    Do you want to continue setup from this NON standard directory [yN] ? y
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    Config file path ('none' to skip web server setup):
    > none   #用的是nginx上面提示都不符合,在这里选择none
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    Do you want me to build a new AWStats config/profile
    file (required if first install) [y/N] ? y   #是否要求新建配置文件
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    Your web site, virtual server or profile name:
    > access_www      #这里填写的东西,根日志的名称一样就行了,域名,非域名都行
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    #下面一路回车就行了。

    这个操作完了以后,会在/etc/awstats下面生成一个配置文件。

    [root@localhost awstats]# ls /etc/awstats/ |grep access
    awstats.access_www.conf

    如果你分析多个域名的日志,就把这一步多操作几次

    4,修改生成的配置文件

    修改二个部LogFile和LogFormat

    LogFile="/var/log/nginx/access/access.log-%YYYY-24%MM-24%DD-24"
    LogFormat="%host %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other"

    -24表示一天前的,-0表示当前,配置文件里面有说明

    5,生成awstats的静态html

    [root@localhost awstats]# mkdir -p /var/www/awstats
    [root@localhost awstats]# chown -R Nginx:Nginx /var/www/awstats #Nginx的启动用户

    上面建了一个web目录awstats来存生成的html

    [root@localhost ~]# cat /home/zhangy/static.sh
    #!/bin/bash
    # The Nginx logs path
    logs_names=(access_www access_img)     #log的名称
    web_path="/var/www/awstats"            #静态html的路径
    cgi_path="/usr/share/awstats/wwwroot/cgi-bin"  #awstats可执行文件的存放路径
    static_path="/usr/share/awstats/tools"         #awstats可执行文件的存放路径
    
    num=${#logs_names[@]}
    for((i=0;i<num ;i++));do
        if [ ! -d ${web_path}/${logs_names[i]} ]
        then
            mkdir -p ${web_path}/${logs_names[i]}
        fi
        ${static_path}/awstats_buildstaticpages.pl -update \
        -config=${logs_names[i]} -lang=cn -dir=${web_path}/${logs_names[i]} \
        -awstatsprog=${cgi_path}/awstats.pl
    done

    当执行完static.sh后,会在/var/lib/awstats/下面生成一个文件,里面存放了分析后的数据

    [root@localhost awstats]# ls /var/lib/awstats/ |grep access
    awstats052012.access_www.txt

    http://www.XXX.com/awstats/access_www/awstats.access_www.html

    可以通过这个页面来访问,前提是nginx的root设置的目录是/var/www才行。

    看一下效果图

    awstats

    awstats

    总结:

    awstats每次只能分析一个log文件,也就是说我有10日志文件,当我们运行static.sh的时候,只会读取一个。所以每天都要用awstats来分析日志,/var/lib/awstats下面的数据文件会不断的增加,用crontab定时跑一下。

    59 23 * * * /home/zhangy/cut.sh  #夜里12点切日志
    30 04 * * * /home/zhangy/static.sh #凌晨4点生成静态html


    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开