nginx(日志管理之日志的使用、定时任务完成日志切割)

来源:互联网 发布:项目计划表软件 编辑:程序博客网 时间:2024/06/14 11:01

说明:本文主要介绍nginx的日志管理,具体包括日志的使用、日志切割备份。

查看Nginx的server段,可以看到如下信息:

#access_log logs/host.access.log main;

这说明,该server,他的访问日志文件是logs/host.access.log。使用的格式是“main”,除了main格式,还可以自定义其他格式。

Main格式:log_format  main '$remote_addr - $remote_user [$time_local] "$request" '

    '$status $body_bytes_sent"$http_referer" '

'"$http_user_agent""$http_x_forwarded_for"';

Main格式是一种定义好的日志格式,并起的名字,便于引用。

以上的例子,main类型的日志,记录的remote_addr…http_x_forwarded_for等选项。

参数详情:

参数

说明

示例

$remote_addr

客户端地址(远程地址)

211.28.65.253

$remote_user

客户端用户名称

(远程客户机名称)

--

$time_local

访问时间和时区

18/Jul/2012:17:00:01 +0800

$request

请求的URI和HTTP协议

"GET /article-10000.html HTTP/1.1"

$http_host

请求地址,即浏览器中你输入的地址(IP或域名)


192.168.100.100

$status

HTTP请求状态

200

$upstream_status

upstream状态

200

$body_bytes_sent

发送给客户端文件内容大小

1547

$http_referer

url跳转来源

https://www.baidu.com/

$http_user_agent

用户终端浏览器等信息

"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;

$ssl_protocol

SSL协议版本

TLSv1

$ssl_cipher

交换数据中的算法

RC4-SHA

$upstream_addr

后台upstream的地址,即真正提供服务的主机地址

10.10.10.100:80

$request_time

整个请求的总时间

0.205

$upstream_response_time

请求过程中,upstream响应时间

0.002

Nginx针对不同的server段可以做不同的log。

日志的使用

1、打开主配置文件,将log_format的注释去掉

http {    include       mime.types;    default_type  application/octet-stream;    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '    '$status $body_bytes_sent "$http_referer" '    '"$http_user_agent" "$http_x_forwarded_for"';#(需要打开)    .....}

2、在你需要的server的段里面配置日志存放位置

server {listen 80;server_name 192.168.0.2;location / {    root  z.com;    index  index.html indexIp.html;}access_log logs/z.com.log192.log main;        //日志存放在logs/z.com.log192.log 其格式是main格式(配置的日志文件不必提前先创建,因为nginx启动访问server就会自动生成日志文件)}

然后启动nginx查看目录下是否有新生成的日志文件。

查看日志里面的信息


定时任务完成日志切割

1、创建一个日志切割的脚本

Vi  /data/runlog.sh(创建一个脚本为runlog.sh的脚本,路径位置为/usr/local/nginx/data/runlog.sh)在里面写入脚本

#!/bin/bashLOGPATH=/usr/local/nginx/logs/z.com.access.logBASEPATH=/data/$(date –d yesterday +%Y%m)mkdir –p $BASEPATHbak=$BASEPATH/$(date –d yesterday +%d%H%M).zcom.access.logmv $LOGPATH $baktouch $LOGPATHkill -SIGUSR1 `cat /usr/local/nginx/logs/nginx.pid`

记得最后一行的“-SIGUSR1”命令根据操作系统不同使用会有所差异,所以需要查询自己的系统是不是这样写的。使用命令kill  -l就可以看到支持那些命令。

脚本说明:定义日志存放路径,然后计算今天的日期确定存放的目录,然后将这个目录创建出来。然后再根据“时和分”计算出日志名称(存放在那个目录下)。然后将日志移动到文件夹中。然后创建一个新的空日志文件,下次创建日志的时候,里面是重新开始记录日志的。

2、创建一个定时器

Crontab -e

01 00 * * * /xxx/path/b.sh  每天0时1分(建议在02-04点之间,系统负载小)

这样日志就会每天定时备份到指定位置中去。

小技巧:一般手动切割日志查看具体信息可以这样写:

tail -n 30000 logs/catalina.out > a.txt (截取后3万行日志,保存到a.txt中)