07-Nginx 日志管理及自动切割
Nginx 日志管理及自动切割
对于程序员、运维来说,日志非常得重要。通过日志可以查看到很多请求访问信息,及异常信息。Nginx 也提供了对日志的强大支持。
日志管理范围
首先,下面要讲的这些日志相关属性可以配置在任意模块。在不同的模块,记录的是不同请求的日志信息。即,日志记录的请求范围是不同的。Nginx 日志一般可以指定三个范围: http{}模块范围、server{}模块范围,与 location{}模块范围。
http{}模块范围
只要有请求通过 http 协议访问该 Nginx,就会有日志信息写入到这里的日志文件。
server{}模块范围
只要有请求访问当前 Server,就会有日志信息写入到这里的日志文件。
location{}模拟范围
只要有请求访问当前 location,就会有日志信息写入到这里的日志文件。
日志管理指令
下面以 http{}模块下的日志为例来学习 Nginx 日志管理指令。
Nginx 的日志分为两类:访问日志与错误日志。Nginx 整个系统的默认日志在生成预编译文件 makefile 时就已经默认给配置好了。当然,无论是访问日志还是错误日志,其默认路径与名称在 nginx.conf 中均是可以修改的。在配置文件中不仅定义了日志文件的路径及名称, 还定义了日志格式。
log_format
用于设置访问日志的格式,其后的 main 是为该格式所起的名称,可以任意,而其后面的内容则为具体格式,通过 Nginx 内置变量定义。
- $remote_addr:获取访问者的 IP 地址。若当前 Nginx 是反代服务器,则此变量获取到的就是客户端的 IP 地址;若当前 Nginx 是静态代理服务器,则此变量获取到的是反代服务器的 IP 地址。
- $http_x_forwarded_for:获取客户端浏览器的 IP。若当前 Nginx 是反代服务器,则此变量获取到的值为杠(-)。若当前 Nginx 是静态代理服务器,则此变量获取到的是客户端的IP 地址。
- $remote_user:获取访问者的用户名。
- $time_local:获取请求访问的时间与时区。
- $request:获取请求的相关信息,包含请求方式、请求的 URI,及访问协议。
- $status:后端服务器向其返回的状态码,例如 200。
- $body_bytes_sent:后端服务器向客户端发送的响应体内容字节数。
- $http_referer:获取当前请求是从哪个页面过来的。其值在这里显示为杠(-)。
- $http_user_agent:用户所使用的代理,一般为浏览器。
access_log
该指令用于设置访问日志。上面的格式包含三个参数:
- 第一个参数是日志的存放路径与日志文件名;
- 第二个参数是日志格式名;
- 第三个参数是日志文件所使用的缓存。不过,即使不指定 buffer,其也会存在默认日志缓存的。
- access_log 还可以跟一个参数 off,用于关闭访问日志,即直接写 access_log off 即可关闭访问日志。
error_log
该指令用于指定错误日志的路径与文件名。需要注意以下几点:
- 其不能指定格式,因为其有默认格式。
- 可以使用自己指定的错误日志文件,不过,将来的访问异常日志就不会再写入到默认的
logs/error.log 文件中了。所以关于错误日志,一般使用默认的即可。
- 错误日志级别由低到高有:[debug | info | notice | warn | error | crit | alert | emerg],默
认为error,级别越高记录的信息越少。
- 错误日志默认是开启的。关闭错误日志的写法为 error_log /dev/null;
open_log_file_cache
该指令用于打开日志文件读缓存,将日志信息读取到缓存中,以加快对日志的访问。该功能默认为 off,即 open_log_file_cache off;
默认的/favicon.ico 请求
客户端对于服务端页面会自动提交一个/favicon.ico 请求,若没有 favicon.ico 文件则会在日志文件中报出 404。
从网上任意下载一个 ico 图标,将其重命名为 favicon.ico,然后放到 Linux 中的任意目录。然后再修改 nginx.conf 文件,在其中添加如下的 location{}模块。注意,若将其添加到的位置与页面在同一个目录,下面的 location{}模块不用设置。
日志自动切割
这里仅仅简单介绍一下日志切割的实现步骤,具体实现,网上非常多,用时再查即可。
创建切割shell 脚本文件
在 Linux 下创建一个实现日志切割的 shell 脚本文件,脚本文件的具体内容可以从网上查找,资源很多。例如,将该 shell 文件创建在 Nginx 安装目录下的 logs 目录中,并命名为cut_nginx_log.sh。
为该文件添加可执行权限
该文件是要作为定时任务被执行的,所以该文件需要具有可执行权限。
向 crontab 中添加一个定时任务
crontab 是 Linux 中的一个定义任务文件,每一行都代表一项定义任务。每行由 6 个字段组成,前 5 段是时间设定段,第 6 段是任务段。具体格式如下:
minute(0-59) hour(0-23) day(1-31) month(1-12) week(0-6) command
本例执行如下命令后会打开文本编辑器,然后再输入如下文本内容即可。
07-Nginx 日志管理及自动切割相关推荐
- Nginx日志管理及切割
1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某个服务或server的性能瓶颈等.因此,将 ...
- 基于python的Nginx日志管理分析系统
温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 本项目利用 pandas + sklearn 对 Nginx 的日志数据进行统计分析,并利用 fla ...
- nginx日志切割并使用flume-ng收集日志
nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...
- nginx日志切割脚本
nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...
- rsync同步Nginx日志遇到问题总结
一.目的 将nginx 日志通过普通用户利用rsync公钥认证的方式实时同步到本地服务器上,之后使用elk程序进行处理. 二.遇到问题及解决方法思路 问题1.文件权限:nginx 的日志默认权限如下: ...
- Supervisor多进程管理 异常自动重启 可视化管理
一.序言 Supervisor是多进程管理工具,在Docker中相关联的进程能够通过supervisor来管理. 微服务项目开发阶段,可用于微服务子项目的启动管理. 支持web可视化管理,能够极大方面 ...
- nginx那点事儿——nginx日志详解
nginx日志 前言 一.日志配置.格式 二.日志格式包含的变量 三.日志缓存 1.缓存设置 2.作用位置 四.日志切割 1.切割配置文件 2.日志切割原理 五.日志分析 前言 Nginx有非常灵活的 ...
- linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例
网站上线后,没怎么注意过日志,有一天需要查日志时,才发现竟然有 100 多个 G,一个文本文件竟然有 100 多个G,这也太大了. nginx 是一个非常轻量的 web 服务器,体积小.性能高.速度快 ...
- linux切割日志方法,Linux下nginx生成日志自动切割的实现方法
1.编辑切割日志的 shell 程序,目录自定 #vi /data/Nginx/cut_Nginx_log.sh 输入代码: #!/bin/bash # This script run at 00:0 ...
最新文章
- 年过四十的男人,为何路越走越窄?
- Linux学习(六)---实用指令(只看这篇就能完成基础的学习)
- 杭州网络推广浅析网站优化如何更快的提升收录?
- html5毕业作品开场白,毕业典礼主持人开场白
- socket通信(5)4次挥手
- Swintransformer详细设计文档
- 【2016计概A期末】照亮房间
- 第一篇博客,写在颓废之时
- MySQL format()函数
- 用css3制作一个Music Player Menu
- 20190810:存在重复(三种解法)
- umount强制卸载不起作用,卸载光驱终极办法---fuser
- 有效解决vue动态绑定多个class的官方实例语法无效的问题
- 如何配置Windows Live Writer发布博客园随笔
- 有点累了?不如看看兵法三十六计。
- C++ - Opencv模板匹配与块匹配
- java class文件比较_Beyound Compare中比较java字节码class文件
- mstar Android解锁,液晶电视维修之Mstar方案从强刷包提取引导的方法
- 图片标签z-index设置不起作用
- 如何做浏览器兼容性测试?教你几招
热门文章
- swagger mock文档服务器,通过 Swagger 定义自动生成 Mock 数据
- The target table tablename of the UPDATE is not updatable---解决
- Eclipse的调试
- 推荐生态中的bias和debias
- “is not a valid date and time ”错误提示 的【排除故障】
- 当 AI 踢进世界杯......
- 清理计算机3——硬件
- Golang语言社区——为什么说未来 5 年将是 Go 语言的天下?
- 在Asus Merlin固件的Dropbear使用及免密登录
- quartz 配置每周四早上6点