Nginx日志管理及切割
1 日志管理
1.1 Nginx日志描述
通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。
1.2 Nginx日志格式
打开nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf
日志部分内容:
#access_log logs/access.log main;
日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。
默认“main”日志格式:
log_format main '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
参数明细表:
$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 |
可以记录用户是从哪个链接访问过来的 |
字段 |
说明 |
$remote_addr | 客户端地址 |
$remote_user | 客户端用户名称 |
$time_local | 访问时间和时区 |
$request | 请求的URI和HTTP协议 |
$http_host | 请求地址,即浏览器中你输入的地址(IP或域名) |
$status | HTTP请求状态 |
$upstream_status | upstream状态 |
$body_bytes_sent | 发送给客户端文件内容大小 |
$http_referer | url跳转来源 |
$http_user_agent | 用户终端浏览器等信息 |
$ssl_protocol | SSL协议版本 |
$ssl_cipher | 交换数据中的算法 |
$upstream_addr | 后台upstream的地址,即真正提供服务的主机地址 |
$request_time | 整个请求的总时间 |
$upstream_response_time | 请求过程中,upstream响应时间 |
nginx.conf使用配置方式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$connection $upstream_addr '
'upstream_response_time $upstream_response_time request_time $request_time ';
$request_time和$upstream_response_time之间差别:
$request_time包含了用户数据接收时间,而真正程序的响应时间应该用$upstream_response_time
所以如果用户网络较差,或者传递数据较大时,$request_time会比$upstream_response_time大很多
'[$time_local][$status][$remote_addr][$cookie_udsclientip][$request_time][$cookie_ztedpgssouser]'
'[$upstream_http_x_ausername][$cookie_udsversion][$request][$http_user_agent][$http_referer]'
'[$http_cookie][$upstream_addr]';
1.3 Nginx自定义日志
打开nginx.conf配置文件去掉 log_format main 前面的#
在server 节点里面 添加日志
server{
access_log /data/nginx/logs/aa.access.log main;
/data/nginx/logs/aa.error.log info;
location {
}
}
配置日志全路径。
1.4 重新读取加载Nginx配置文件:
执行命令:nginx-s reload
日志就会输出到指定目录指定文件中
1.5 Nginx日志分隔
nginx的日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。然后你就可以处理旧的日志文件了。[或者重启nginx服务]。
nginx日志按每分钟自动切割脚本如下:
新建shell脚本:vi /usr/local/software/nginx/cut_nginx_log.sh
#!/bin/bash
#设置日志文件存放目录
LOG_HOME="/usr/local/software/nginx/logs/"
log_file_commaccess=aa.access.log;
log_file_commerror=aa.error.log;
pid=/usr/local/software/nginx/logs/nginx.pid
yestime=`date -d '-1 day' +%Y%m%d`
#删除
#删除过去7天的
find /data/nginx/logs/ -mtime +7 -name '*log' |xargs rm -rf
#备分文件名称
mv ${LOG_HOME}/${log_file_commaccess} ${LOG_HOME}/${yestime}.${log_file_commaccess}
mv ${LOG_HOME}/${log_file_commerror} ${LOG_HOME}/${yestime}.${log_file_commerror}
#向nginx主进程发信号重新打开日志
kill -USR1 `cat $pid`
配置crontab 定时,每天0点0分执行,按天保存
#设置日志文件存放目录crontab -e
0 0 * * * sh /usr/local/software/nginx/cut_nginx_log.sh
Nginx日志管理及切割相关推荐
- shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志 ...
- Nginx日志文件的切割
Nginx日志文件的切割 生产环境中,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率. 同时,为了方便对日志进行分析和计算,需要对日志文件进行定时切割. 定时切割方式,包括按月切割.按天 ...
- 基于python的Nginx日志管理分析系统
温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 本项目利用 pandas + sklearn 对 Nginx 的日志数据进行统计分析,并利用 fla ...
- (4)nginx:日志以及定时切割日志小例子
一 关于Nginx日志 我们观察nginx安装目录下的nginx.conf 可以看到如下类似信息 #access_log logs/host.access.log main; 这说明 该serve ...
- 07-Nginx 日志管理及自动切割
Nginx 日志管理及自动切割 对于程序员.运维来说,日志非常得重要.通过日志可以查看到很多请求访问信息,及异常信息.Nginx 也提供了对日志的强大支持. 日志管理范围 首先,下面要讲的这些日志相关 ...
- Nginx 日志文件切割
为什么80%的码农都做不了架构师?>>> 偶然发现access.log有21G大,所以将其切割. Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点 ...
- linux 日志按大小切割_日志切割工具logrotate,帮你管理你的日志文件
最近线上系统跑的业务量有点上量,虽然系统性能是稳定的,但是却有另外一个问题,那就是日志文件越来越大,占用的磁盘空间就越来越大,这样经常会收到告警信息,不得不手动去清理这些日志文件,这样手动维护的服务是 ...
- Nginx日志切割及配置
文章目录 前言 一.Logrotate是什么? 二.使用步骤 1.Logrotate 安装 2.Logrotate 文件目录 3.Logrotate 命令参数 4.Logrotate 常用配置参数 5 ...
- scribe php,日志管理(4) 用scribe收集nginx和php日志
介绍怎样用scribe收集各台服务器上nginx和php程序运行时自身产生的日志(error.log.access_log等),实现的方法很简单--用logrotate切日志,将读取的日志通过scri ...
最新文章
- uva1511(找规律。。。)
- 蜂窝网络是如何为物联网服务的?
- Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
- 使用R进行相关性分析
- Linux多线程Pthread学习小结
- dbeaver 设置编码_初学者必须知道的idea设置
- doc转docx文件会乱吗_利用python将doc文件转换为docx
- 语音识别相关工具和资料分享
- mybatis 为什么每次插入的时候总会创建一个SqlSession?
- matlab实现神经网络算法,matlab神经网络训练函数
- 电脑垃圾,电脑垃圾怎么清理?电脑垃圾深度清理方法?
- 漂亮的CSS背景颜色
- Branches ‘develop‘ and ‘origin/develop‘ have diverged. Fatal: And branch ‘develop‘ may be fast-forwa
- Jquery做的网页版连连看(初稿)
- 【软件测试】白盒测试方法与黑盒测试方法的区别
- 如何在word中粘贴美观工整的代码段(planetB/notepad++)
- 【Android】Dagger2
- Python制作简易计算器(GUI)---Tkinter
- 小米/红米手机,刷入第三方recovery(红米5 plus为例)
- Wine运行器帮助——使用Qemu User运行Wine(理论支持全架构)
热门文章
- 7个成功的DTC品牌出海营销策略,提高海外客户的忠诚度!
- 出现RuntimeWarning: Glyph 39057 missing from current font.的解决办法:
- 代码命名时你习惯使用拼音还是英语单词?
- Java返回前端Bigdecimal类型数据时“0E-8“及小数点多余0的问题
- TensorFlow 安装 Win10 Python+GPU
- 华清远见上海中心22071班--11.28作业
- maven报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“. SLF4J: Defaulting to no-ope
- Android调用程序读取RTF文件
- java学习书籍介绍--csdn上一位前辈介绍
- 计算机专业会成为下一个土木吗?