Nginx日志管理

2017-09-11 16:15:11

日志管理

1.1 Nginx日志描述

通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。

 

1.2 Nginx日志格式

打开nginx.conf配置文件:vi /usr/local/software/nginx/conf/nginx.conf

日志部分内容:

#access_log  logs/access.log  main;

日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

 

默认“main”日志格式:


  参数明细表:

$remote_addr

客户端的ip地址(代理服务器,显示代理服务ip)

$remote_user

用于记录远程客户端的用户名称(一般为“-”)

$time_local

用于记录访问时间和时区

$request

用于记录请求的url以及请求方法

$status

响应状态码,例如:200成功、404页面找不到等。

$body_bytes_sent

给客户端发送的文件主体内容字节数

$http_user_agent

用户所使用的代理(一般为浏览器)

$http_x_forwarded_for

可以记录客户端IP,通过代理服务器来记录客户端的ip地址

$http_referer

可以记录用户是从哪个链接访问过来的

 

查看日志命令:tail -100f /usr/local/software/nginx/logs/access.log


1.3 Nginx自定义日志

打开nginx.conf配置文件:

vi /usr/local/software/nginx/conf/nginx.conf,去掉#注释见下图:


自定义某一个server配置的日志,使用“main”日志格式。

 

日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

重新读取加载Nginx配置文件:

执行命令:/usr/local/software/nginx/sbin/nginx-s reload

查看日志文件:

执行命令:tail -100f /usr/local/software/nginx/logs/abc.access.log


 

1.4 Nginx日志分隔

nginx的日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。

第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。

第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。然后你就可以处理旧的日志文件了。[或者重启nginx服务]

 

nginx日志按每分钟自动切割脚本如下:

新建shell脚本:vi/usr/local/software/nginx/nginx_log.sh 

[plain] view plain copy

  1. #!/bin/bash  

  2. #设置日志文件存放目录  

  3. LOG_HOME="/usr/local/software/nginx/logs/"  

  4.   

  5. #备分文件名称  

  6. LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log  

  7.   

  8. #重命名日志文件  

  9. mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log  

  10.   

  11. #向nginx主进程发信号重新打开日志   

  12. kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`  

创建crontab设置作业

#设置日志文件存放目录crontab -e

*/1 * * * *  sh /usr/local/software/nginx/nginx_log.sh

       


                --以上为《Nginx教程(三) Nginx日志管理》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。


  • 2018-11-01 22:08:19

    Android Toolbar左、中、右对齐

    默认的Android Toolbar中添加子元素view是从左到右依次添加。需要注意的是,Android Toolbar为自身的NavigationIcon(app:navigationIcon)最靠右,Logo(app:logo)紧接NavigationIcon、Title(app:title)接续Logo、保留了默认的位置(从左边到右)。这些Android Toolbar保留的系统设置字段将挤压开发者自己安放在Toolbar中的子view,如图所示:

  • 2018-11-06 06:42:59

    XUtils3框架数据库的基本使用方法

    今天给大家带来数据库模块的讲解,现在主流的ORM框架很多,比如OrmLite,GreenDao,Active Android,Realm等等,这些框架每个都有自己的优点和缺点,大家完全可以根据自己项目的实际需求进行选择,下面开始进入今天的数据库模块的介绍。