当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Nginx日志切割与管理脚本      本节内容: Nginx日志切割与管理脚本   本节目的: 切割Nginx日志成awstats能分析的格式。 1,nginx日志切割脚本(cutlogs.sh)   代码示例: #!/bin/sh # # site: www.  cd /var/log/nginx/  mv sendsadmin.a.........
    ▪nginx日志按天自动切割并删除一个月前的日志      本节内容: 一例nginx日志切割的shell脚本。 脚本内容:   代码示例: #!/bin/bash # 功能:自动切割nginx日志 # 编辑:www. cd /var/log/nginx/  mv  sendsadmin.access.log sendsadmin.access.$(date +%Y%m%d).log  m.........
    ▪Nginx记录日志的方法解析      本节主要内容: 控制nginx记录日志的方法   Nginx服务器提供了一个HttpLogModule模块,可以通过它来设置日志的输出格式,然后在具体的生产环境很少使用。 通常会关闭访问日志,不过为了安.........

[1]Nginx日志切割与管理脚本
    来源: 互联网  发布时间: 2013-12-24

本节内容:
Nginx日志切割与管理脚本
 
本节目的:
切割Nginx日志成awstats能分析的格式。

1,nginx日志切割脚本(cutlogs.sh)
 

代码示例:
#!/bin/sh
#
# site: www. 
cd /var/log/nginx/ 
mv sendsadmin.access.log sendsadmin.access.$(date +%Y%m%d).log 
mv error.log error.$(date +%Y%m%d).log 
sudo kill -USR1 `cat /usr/local/web/nginx762/logs/nginx.pid` 
find /var/log/nginx/ -name "sendsadmin.access.*" -type f -mtime +30 -exec rm {} \; > /dev/null 2>&1 
find /var/log/nginx/ -name "error.*" -type f -mtime +30 -exec rm {} \; > /dev/null 2>&1
 

2,定义Nginx日志格式,
 

代码示例:
log_format main '$remote_addr - $remote_user [$time_local] '  
'"$request" $status $body_bytes_sent "$http_referer" '  
'"$http_user_agent" "$http_x_forwarded_for"';  
log_format main '$remote_addr - $remote_user [$time_local] ' 
'"$request" $status $body_bytes_sent "$http_referer" ' 
'"$http_user_agent" "$http_x_forwarded_for"';
 

3,检查是否安装perl,如果没安装得先安装perl。
 

代码示例:
perl -version
 

4,安装Awstats安装:
 

代码示例:
tar zxvf awstats-6.9.tar.gz  
sudo cp -rf awstats-6.9 /usr/local/awstats  
cd /usr/local/awstats/  
tools/awstats_configure.pl  
mkdir /var/lib/awstats  
tar zxvf awstats-6.9.tar.gz 
sudo cp -rf awstats-6.9 /usr/local/awstats 
cd /usr/local/awstats/ 
tools/awstats_configure.pl 
mkdir /var/lib/awstats 
Check for web server install 这项填none。 
Define config file name to create 这项填配置文件名字,一般用域名。

其他默认即可。

更多有关awstats的安装与配置的内容,请参考文章:
Nginx日志分析 Nginx日志切割与Awstats配置
Nginx日志分析工具 AWStats + JAWStats安装与配置
nginx+awstats 统计web服务器log的教程

以上就是对Nginx日志进行分析的详细内容,希望对大家有所帮助。


    
[2]nginx日志按天自动切割并删除一个月前的日志
    来源: 互联网  发布时间: 2013-12-24

本节内容:
一例nginx日志切割的shell脚本。

脚本内容:
 

代码示例:
#!/bin/bash
# 功能:自动切割nginx日志
# 编辑:www.
cd /var/log/nginx/ 
mv  sendsadmin.access.log sendsadmin.access.$(date +%Y%m%d).log 
mv  api.sends.cc.access.log api.sends.cc.access.$(date +%Y%m%d).log 
mv  blog.sends.cc.access.log blog.sends.cc.access.$(date +%Y%m%d).log 
mv  error.log error.$(date +%Y%m%d).log 
sudo kill -USR1 `cat  /usr/local/web/nginx636/logs/nginx.pid` 
 
find /var/log/nginx/ -name "sendsadmin.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1 
find /var/log/nginx/ -name "api.sends.cc.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1 
find /var/log/nginx/ -name "blog.sends.cc.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1 
find /var/log/nginx/ -name "error.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1 

代码说明:
 

mv  sendsadmin.access.log sendsadmin.access.$(date +%Y%m%d).log 
#把日志文件sendsadmin.access.log改名为sendsadmin.access.(当天日期).log 

sudo kill -USR1 `cat  /usr/local/web/nginx636/logs/nginx.pid` 
#nginx重建日志文件 

find /var/log/nginx/ -name "sendsadmin.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1 
#find -- 查找 
#/var/log/nginx/ -- 查找日志目录 
#-name "sendsadmin.access.*" -type f -- 找以"sendsadmin.access."开头的文件 
#-ctime +30 -- 查找距离当日30天前文件 
#-exec rm {} \; -- 找到后执行rm命令 
#> /dev/null 2>&1 -- 输出重定向 

保存nginx日志分割脚本为本地文件cutlogs.sh,并在crontab中设置为每天23:59运行:
sudo vi /etc/crontab 

添加: 
 

代码示例:
59 23 * * * root  /bin/bash /usr/local/web/nginx636/conf/cutlogs.sh 

您可能感兴趣的文章:
nginx 日志分割的小脚本
分享:Logrotate分割nginx日志的脚本
nginx日志配置、Nginx日志分割
nginx日志按天分割的方法分享(图文)
一个分割ngnix网站日志的Shell脚本
Nginx日志切割的简单方法


    
[3]Nginx记录日志的方法解析
    来源: 互联网  发布时间: 2013-12-24

本节主要内容:
控制nginx记录日志的方法
 
Nginx服务器提供了一个HttpLogModule模块,可以通过它来设置日志的输出格式,然后在具体的生产环境很少使用。
通常会关闭访问日志,不过为了安全起见,还是建议开启nginx日志记录功能。

在很多的nginx配置教程中,都会介绍nginx日志配置的相关内容,当然也会有nginx日志分割的相关知识,这方面的内容可以参考如下文章:
nginx 日志分割的小脚本
分享:Logrotate分割nginx日志的脚本
Nginx日志按天分割的方法分享(图文)
一个分割ngnix网站日志的Shell脚本
每天自动分割Nginx日志文件的Shell脚本

下面针对nginx日志的配置,我们进行详细介绍。
 
配置示例:
 

代码示例:
log_format gzip '$remote_addr - $remote_user [$time_local]  '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log  gzip  buffer=32k;
 

指令
该模块提供了三条指令,可以用它们来设置日志格式、缓存等。
 
指令名称:access_log
功    能:该指令用于为访问日志设置存放缓存的路径、格式和缓存大小。如果在当前的区段中将该指令的值设置为off,那么将会清除从上级继承而来的所有access_log的参数。在使用这个指令时,如果没有指定日志格式,那么就会使用默认的“combined”格式。在默认的设置中缓存是关闭的,这一点要注意。
 
对于0.7.4版本以上的Nginx,在日志文件路径可以包含变量,但是这样的日志有一定的限制:
对于该目录路径worker 用户必须有建立新文件的权限;
1、缓存区不会工作,就是说不能够使用缓冲;
2、对于每一条日志条目,日志文件被打开写入记录后就迅速的关闭。然而,经常被使用的文件的描述符被存储在由指令open_log_file_cache指定的缓存中。在这种情况下,如果产生日志轮换,则要注意:在由指令open_log_file_cache设置的缓存,存储在缓存的中有效条目仍然会将日志写往该缓存条目生成时的变量中去(就是该变量指定的目录、文件)。
 
Nginx支持强大的日志访问记录,每一个location中都可以有自己的日志记录,在同一时刻访问记录还可以输出到多个日志中。在后面的实例部分有使用实例。
语    法: access_log path [format [buffer=size]] | off
默 认 值: access_log log/access.log combined
使用环境: http, server, location
 
指令名称:log_format
功    能:该指令描述了日志条目的格式,可以在格式中使用一般的变量,也可以使用仅在写入日志的那一刻的变量(也叫过程变量),这些变量有:
 

$body_bytes_sent  它的值是一个字节数,就是传递到客户端的字节数减去响应头的后的大小。这个变量是兼容Apache mod_log_config的%B参数;
$bytes_sent  传递到客户端的字节数;
$connection  连接数;
$msec  写入日志条目的当前时间(精确到百万分之一秒);
$pipe  如是HTTP pipe技术,那么这里将会是一个 "p" 字符;
$request_length  请求体的长度;
$request_time  请求时间,这个时间是指Nginx在这个请求上花费的时间,单位为精确到毫秒的秒(在低于0.5.19的版本中只使用到秒);
$status  响应的状态代码;
$time_iso8601 使用ISO 8601 格式的时间, 例如 2011-03-21T18:52:25+03:00 (从0.9.6版本开始提供了该变量)
$time_local  在日志中写入服务器本地的时间。
 

其它变量,例如:
 

$sent_http_content_range  这是一个传递到客户端的头,这类头的前缀为"sent_http_" 。
"upstream_http_"  这是有upstream模块产生了日志,因此它的前缀将会是这个前缀。所以在变量值还有可能是其它模块产生的变量。
 

在此nginx日志模块中,预定义了一个叫做"combined"日志格式:
 

代码示例:
log_format combined '$remote_addr - $remote_user [$time_local]  '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';
 

语    法: log_format name format [format ...]
默 认 值: log_format combined "..."
使用环境: http server

配置好详尽的日志记录格式,对于以后的nginx日志分析,将是大有帮助的,这点大家请注意。
 
指令名称:open_log_file_cache
功    能:该指令用于设置缓存,该缓存用于存储带有变量的日志文件路径而又频繁使用的文件描述符,这些被频繁使用的文件描述符将会被存储在缓存中。
指令选项:
max - 在缓存中可以存储的最大描述符数量,它是通过最近最少使用(LRU)   算法来移除缓存条目;
inactive - 设置一个时间间隔,在这个间隔之后,没有被命中的文件描述符将会被移除,默认值是10秒;
min_uses - 设置访问次数。在一定的时间间隔内(这个间隔通过inactive选项获取),一个文件描述符至少被访问多少次后就可以将该描述符放在缓存中。默认值为1,即访问一次便缓存。
valid - 该选项用于设置检查同名文件存在的时间,默认是60秒;
off - 关闭缓存。
 
例如:
 

代码示例:
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;
 

语 法:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off
默 认 值: open_log_file_cache off
使用环境: http server location
 
下面介绍二个使用实例,两个典型的例子,在第一个例子中,实现了自定义日志和多个日志记录;
在第二个例子中,实现了日志文件路径、文件名称变量的使用。
 
实例1、
在Nginx中添加下设置:
 

代码示例:
http {
  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  keepalive_timeout  65;
 
  log_format custom $time_local | $server_name |
$request_length | $bytes_sent;
  log_format apache-style. '$remote_addr - $remote_user [$time_local]  '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent"';
open_log_file_cache max=1000 inactive=20s min_uses=1 valid=1m;
 
  server {
    listen       80;
    server_name  localhost;
 
location /rmb {
      root   html;
      index  index.html index.htm;
      access_log logs/custom.log custom buffer=32k;
      access_log logs/apache-style.log  apache-style. buffer=32k;
}
 
 location /rmj {
      root   html;
      index  index.html index.htm;
      access_log logs/custom.log custom buffer=32k;
      access_log /var/log/nginx/custom.log custom buffer=32k;
}
}
}

1、访问/rmb,并监控日志,apache-style格式的日志:
 

代码示例:
[root@ logs]# tail -f apache-style.log
192.168.3.248 - - [23/Aug/2011:09:20:33 +0800]  "GET /rmb/ HTTP/1.1" 200 33 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1
 

custom格式的日志:
 

代码示例:
[root@ logs]# tail -f custom.log
23/Aug/2011:09:20:33 +0800|localhost|739|247

2、访问/rmb,并监控日志,以下均为custom格式的日志:
 

代码示例:
[root@ logs]# tail -f custom.log
23/Aug/2011:09:22:10 +0800|localhost|739|248
[root@ logs]# tail -f  /var/log/nginx/custom.log
23/Aug/2011:09:22:10 +0800|localhost|739|248

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3