利用AWStatus监控nginx实时日志并认证登陆

简介:

     最近一直在玩nginx,发现他配合FCGI相对apache确实是一个比较适合建站的web代理,在我的512M内存的VPS上初始配置下跑LAMP开启服务的瞬间内存直接被占满,但LNMP则占用100多M,而且访问速度还较apache的快上一些,APACHE真心该好好优化优化了。

     这里顺便把awstats的配置从apache移植到nginx,供大家参考。。


我的博客新站已经建好,更多新的内容即将在新站更新。。

欢迎访问http://www.showerlee.com


系统环境:centOS6.3

NGINX:    nginx-1.41

AWSTATS:  awstats-7.1.1


一.下载解压awstats到系统目录

# wget http://sourceforge.net/projects/awstats/files/AWStats/7.1.1/awstats-7.1.1.tar.gz/download

# tar -zxvf awstats-7.1.1.tar.gz -C /usr/local/

# cd  /usr/local/

# mv awstats-7.1.1 awstats

# cd  awstats/tools/


二.生成配置文件:

# perl  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 for

one web server. You can try to use it to let it do all that is possible

in AWStats setup, however following the step by step manual setup

documentation (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 install


Enter full config file path of your Web server.

Example: /etc/httpd/httpd.conf

Example: /usr/local/apache2/conf/httpd.conf

Example: c:\Program files\apache group\apache\conf\httpd.conf

Config file path ('none' to skip web server setup):

none


Your web server config file(s) could not be found.

You will need to setup your web server manually to declare AWStats

script 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/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.abc.com.cn


-----> Define config file path

In which directory do you plan to store your config file(s) ?

Default: /etc/awstats

Directory path to store config file(s) (Enter for default): 回车

>


-----> Create config file '/etc/awstats/awstats.www.showerlee.com.conf'

Config file /etc/awstats/awstats.www.showerlee.com.conf created.


-----> Add update process inside a scheduler

Sorry, 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.showerlee.com

Or if you have several config files and prefer having only one command:

/usr/local/awstats/tools/awstats_updateall.pl now

Press ENTER to continue... 回车



A SIMPLE config file has been created: /etc/awstats/awstats.www.showerlee.com.conf

You should have a look inside to check and change manually main parameters.

You can then manually update your statistics for 'www.showerlee.com' with command:

> perl awstats.pl -update -config=www.showerlee.com

You can also build static report pages for 'www.showerlee.com' with command:

> perl awstats.pl -output=pagetype -config=www.showerlee.com


Press ENTER to finish... 回车

----------------------

一路默认回车即可完成awstats配置文件向导,该配置文件保存在/etc/awstats/下


三.配置awstats

# vi  /etc/awstats/awstats.www.abc.com.cn.conf

修改如下几处配置

-------------

LogFile="/usr/local/nginx/logs/access_log"

#nginx若建立分段日志见修改如下

LogFile="/usr/local/nginx/logs/www.abc.com.cn-%YYYY%MM%DD.access_log"

LogType=W

LogFormat=1

#此处log目录必须具有写入权限

DirData="/usr/local/nging/html/www.abc.com.cn/awstats/log"

AllowToUpdateStatsFromBrowser=1

#显示简体中文页面

Lang="cn"

#设置awstats URL:

DirCgi="/awstats"

DirIcons="/awstatsicons"

------------


四.nginx配置:

1.nginx虚拟主机日志配置:

# vi /usr/local/nginx/conf/nginx.conf

将http层级的如下行注释去掉

---------------------------

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';


access_log  logs/access.log  main;

---------------------------

在需要监控的www.abc.com.cn虚拟主机的server层级添加

--------------------------

access_log  /usr/local/nginx/logs/www.abc.com.cn.access_log;

--------------------------


2.利用脚本分段切割nginx日志格式为awstats可识别格式

注:apache在这里是利用自带rotatelogs命令实现日志每日分页切割

# vi /etc/rc.d/nginx_cut.sh

---------------------------

#!/bin/bash

# nginx日志位置

logs_path="/usr/local/nginx/logs/"


# nginx虚拟目录日志名

domain_name=www.abc.com.cn

log_name="${logs_path}${domain_name}.access_log"


# 判断nginx日志是否生成,如果生成则将日志内容增量到awstats可识别格式日志,并将nginx日志内# 容清空,否则重启nginx服务,重新生成日志文件

if [ -e "$log_name" ];

 then

     cat $log_name >> $logs_path$domain_name-$(date +"%Y%m%d").access_log

     cat /dev/null > $log_name

 else

     /etc/init.d/nginx restart

fi

---------------------------

注:这里的date +"%Y%m%d"需与/etc/awstats/awstats.www.abc.com.cn.conf下

LogFile="/usr/local/nginx/logs/www.abc.com.cn-%YYYY%MM%DD.access_log"格式对应,否则无法写入日志数据


3.awstats源代码配置:

1).创建www.abc.com.cn虚拟目录下awstats二级链接

# mkdir -p /usr/local/nginx/html/www.abc.com.cn/awstats

2).设置log目录可写权限,用于存放转化后的日志数据

# cd /usr/local/nginx/html/www.abc.com.cn/awstats

# mkdir log/ && chmod -R 777 log

3).复制awstats页面需要的源代码(icon、css等)

# cd  /usr/local/awstats/wwwroot/

# cp -R  icon  /usr/local/nginx/html/www.abc.com.cn/awstats

# cp -R  css  /usr/local/nginx/html/www.abc.com.cn/awstats

# cp -R  classes  /usr/local/nginx/html/www.abc.com.cn/awstats

# cp -R  js  /usr/local/nginx/html/www.abc.com.cn/awstats

# cd /usr/local/nginx/html/www.abc.com.cn/awstats/

# chmod -R 755 icon css classes js


4.编写awstats静态页面脚本:

# vi /etc/rc.d/awstats.sh

版本一(只能生成一级链接日志分析)

-------------

#/bin/bash

PERL=/usr/bin/perl

awstats=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

$PERL $awstats -update -config=www.abc.com.cn

$PERL $awstats -config=www.abc.com.cn -output -staticlinks > /usr/local/nginx/html/www.abc.com.cn/awstats/index.html

-------------

版本二(生成多级链接日志分析,推荐)

---------------


#/bin/bash

########################################

PERL=/usr/bin/perl

awstats=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

hostdir=/usr/local/nginx/html/www.abc.com.cn/awstats

buildstaticpages=/usr/local/awstats/tools/awstats_buildstaticpages.pl

########################################

$buildstaticpages -update -config=www.abc.com.cn -lang=cn -dir=$hostdir -awstatsprog=$awstats


---------------

添加一个主页的软链:

# cd /usr/local/nginx/html/www.abc.com.cn/awstats/

# ln -s awstats.www.abc.com.cn.html index.html


5.加入计划任务:

实现每分钟切割日志并生成静态awstats页面

# crontab -e

-------------

* * * * * /bin/sh /etc/rc.d/nginx_cut.sh

* * * * * /bin/sh /etc/rc.d/awstats.sh

-------------

重启计划任务

# service crond restart


6.添加nginx alias功能,防止awstats页面暴图:

# vi /usr/local/nginx/conf/nginx.conf

在www.abc.com.cn虚拟主机的server层级添加

-----------------

autoindex on;

    location /awstatscss     {  

       alias /usr/local/nginx/html/www.abc.com.cn/awstats/css/;

    }

    location /awstatsicons    {

       alias /usr/local/nginx/html/www.abc.com.cn/awstats/icon/;

    }

    location /awstatsclasses  {

       alias /usr/local/nginx/html/www.abc.com.cn/awstats/classes/;

    }

-----------------

重启nginx

# service nginx restart


7.添加nginx目录访问认证功能

1).下载htpasswd.sh脚本文件并执行

# wget -c http://soft.vpser.net/lnmp/ext/htpasswd.sh

# sh htpasswd.sh

按提示输入用户名、密码、及认证文件名。脚本会自动生成认证文件

---------------------------------

=====================================

# A tool like htpasswd for Nginx    #

#-----------------------------------#

# Author:Licess http://www.lnmp.org #

=====================================

Please input UserName:awstats

===========================

UserName was: awstats

===========================

Please input the Password:123456

===========================

Password was: 123456

===========================

Please input Auth filename:awstat_auth

===========================

Auth File: /usr/local/nginx/conf/awstat_auth

===========================


Press any key to Creat...or Press Ctrl+c to cancel 回车

Create Auth file......

Create Auth file successful,auth file path:/usr/local/nginx/conf/awstat_auth.conf.

-------------------------------------


2).为Nginx添加认证配置:

# vi /usr/local/nginx/conf/nginx.conf

在www.abc.com.cn虚拟主机的server层级添加:

-------------------------

location ^~ /awstats     {

       auth_basic "Authorized users only";

       auth_basic_user_file /usr/local/nginx/conf/awstat_auth.conf;

    }

-------------------------

注:

"Authorized users only"为登陆界面提示信息

"/usr/local/nginx/conf/awstat_auth.conf" 为htpasswd.sh脚本返回的认证文件的路径,内含明文的登陆名和加密的密码


nginx.conf下www.abc.com.cn虚拟目录server层级的完整配置如下:

------------------------------

server {

      listen 80;

      server_name www.abc.com.cn;

      index index.html index.htm index.php;

      root /usr/local/nginx/html/www.abc.com.cn;


      # fcgi+php支持

      location ~ \.php$ {

         root           html;

         fastcgi_pass   127.0.0.1:9000;

         fastcgi_index  index.php;

         fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/www.abc.com.cn$fastcgi_script_name;

         include        fastcgi_params;

      }


      # PHP伪静态

      if (!-e $request_filename) {

         rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;

         rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;

         rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;

      }


      # 虚拟目录访问日志

      access_log  /usr/local/nginx/logs/www.abc.com.cn.access_log;


      # awstats防暴图

      autoindex on;

      location /awstatscss     {

         alias /usr/local/nginx/html/www.abc.com.cn/awstats/css/;

      }

      location /awstatsicons    {

         alias /usr/local/nginx/html/www.abc.com.cn/awstats/icon/;

      }

      location /awstatsclasses  {

         alias /usr/local/nginx/html/www.abc.com.cn/awstats/classes/;

      }

      # awstats页面认证

      location ^~ /awstats/     {

         auth_basic "Authorized users only";

         auth_basic_user_file /usr/local/nginx/conf/awstat_auth.conf;

      }

   }

------------------------------



3).重启nginx

# service nginx restart


五.Web查看nginx+awstats流量监控日志.

1.浏览器地址栏输入 http://www.abc.com.cn/awstats

注:实验环境访问页面需修改客户端Hosts文件

提示输入用户名和密码


143602912.jpg


日志分析主页如图:

143602477.jpg


大功告成。。。。。




     本文转自 showerlee 51CTO博客,原文链接:http://blog.51cto.com/showerlee/1275718,如需转载请自行联系原作者



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
17天前
|
存储 Kubernetes 监控
提升日志管理效率:掌握CKA认证中的边车容器技巧
提升日志管理效率:掌握CKA认证中的边车容器技巧
27 0
|
29天前
|
存储 JSON 应用服务中间件
Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
【2月更文挑战第30天】Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
15 2
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
30天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
11天前
|
运维 监控 应用服务中间件
LNMP详解(十四)——Nginx日志详解
LNMP详解(十四)——Nginx日志详解
16 2
|
27天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
24 0
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
175 1
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
2月前
|
消息中间件 存储 监控
利用Scala编写公司内部监控软件的实时日志监控模块
在当今的软件开发领域,监控是确保系统稳定性和性能的关键一环。随着公司业务的不断扩展,我们迫切需要一套高效、可靠的实时日志监控系统,以及能够自动提交数据到网站的解决方案。本文将介绍如何利用Scala编写公司内部监控软件的实时日志监控模块,并探讨如何自动将监控到的数据提交到网站。
139 2
|
3月前
|
负载均衡 应用服务中间件 nginx
【实践】使用Nginx作为GrayLog日志接入的负载均衡
【实践】使用Nginx作为GrayLog日志接入的负载均衡
43 0