nginx日志设置
环境:nginx1.16.1
(1)日志类型:access_log(访问日志) error_log(错误日志)rewrite_log
访问日志:通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息
错误日志:记录了访问出错的信息,可以帮助我们定位错误的原因
重写日志:rewrite_log on; 它将发送所有的 rewrite 相关的日志信息到 error_log 文件中,使用 [notice] 级别。随后就可以在error_log 查看rewrite信息了
(2)设置访问日志:
access_log指令的作用域: http,server,location,limit_except
access_log off; #表示关闭访问日志
access_log path [格式名 [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
注: path 指定日志存放路径
格式名 指定日志格式,不写则默认为combined,使用自定义格式则写上格式名引入
buffer 指定日志写入时的缓存大小
gzip 日志写入前先进行压缩,指定压缩比1-9,默认1,数值越大压缩速度越慢
flush 设置缓存有效时间
if 条件判断,若为假则该请求不写入日志
例:access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m
log_format name [escape=default | json] string ...; #设置日志格式,字符串中的变量表示日志应写入的内容
注: name 格式名
escape 设置导出时日志字符串是json还是default格式。2者区别:没有值的变量,default显示-,json显示空字符
string 日志格式字符串,参数中可使用nginx变量
eg: log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
171.44.176.127 - - [21/Nov/2019:12:14:54 +0800] "GET /index/index/index HTTP/1.1" 200 804 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0" "-"
以上没有值的变量以 - 显示,上述日志写入格式为default
日志格式相关变量:
1. 请求信息相关的变量
$bytes_sent 发送给客户端的总字节数
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$request 完整的原始请求行,如 "GET / HTTP/1.1"
$request_length 请求长度(包括请求行,请求头和请求体)
$request_uri 完整的请求地址,如 https://daojia.com/
$http_host 请求的主机名
$connection 连接序列号
$connection_requests 当前TCP连接发出的请求数量
$pipe 如果请求是通过http流水线发送,则其值为"p",否则为“."
$status 响应状态码
2. 客户端信息相关变量
$remote_addr 客户端IP
$remote_user 客户端用户名称,针对启用了用户认证的请求
$http_referer 请求携带的referer地址
$http_user_agent 客户端浏览器信息
$ssl_protocol SSL协议版本
3. 时间相关变量
$msec 日志写入时间,单位为秒,精度是毫秒
$request_time 请求处理时长,单位为秒,精度为毫秒,从读入客户端的第一个字节开始,直到把最后一个字符发送张客户端进行日志写入为止
$time_iso8601 标准格式的本地时间,形如“2017-05-24T18:31:27+08:00”
$time_local 通用日志格式下的本地时间,如"24/May/2017:18:31:27 +0800"
4.负载均衡配置相关变量
$upstream_addr 后台upstream的地址,即真正提供服务的主机地址
$upstream_status upstream状态
$upstream_response_time 请求过程中,upstream响应时间
$http_x_forwarded_for 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。
即有负载均衡服务器时用此设置获取客户端ip
其它变量参见nginx官方文档http://nginx.org/en/docs/varindex.html
设置日志为json格式:
log_format jsonlog escape=json '{
"time":"$time_iso8601",
"host": "$server_addr",
"client": "$remote_addr",
"size":"$body_bytes_sent",
"responsetime":"$request_time",
"domain": "$host",
"url":"$request_uri",
"referer": "$http_referer",
"agent":"$http_user_agent",
"status":"$status",
"x_forwarded_for":"$http_x_forwarded_for"
}';
(3)设置错误日志:
error_log path [level]; # 作用域: http, server, location, mail, stream, main
注: path 日志存储的路径
level 日志级别,默认为error
日志级别:debug | info | notice | warn | error | crit | alert | emerg 级别从左到右依次变低,越低信息越少
open_log_file_cache off; 如果日志文件路径中有变量,则使用它设置日志文件描述符缓存,提高性能
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
注: max 设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭
inactive 设置缓存存活时间,默认是10s
min_uses 在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次
valid 设置多久对日志文件名进行检查,看是否发生变化,默认是60s
nginx日志设置的更多相关文章
- ELK对nginx日志进行流量监控
ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...
- Nginx日志导入到Hive0.13.1,同步Hbase0.96.2,设置RowKey为autoincrement(ID自增长)
---------------------------------------- 博文作者:迦壹 博客地址:Nginx日志导入到Hive,同步Hbase,设置RowKey为autoincrement( ...
- 如何设置nginx日志格式来查看负载分担结果
转载:http://www.cnblogs.com/LoveJulin/p/5082363.html nginx配置好负载分担后,测试的时候,如何查看负载分担情况:通过设置nginx日志显示: ng ...
- nginx之日志设置详解
nginx的日志设置 access_log access_log是服务器记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息:是一种非常详细的记录信息:如果我们不关心谁访问了我们,可以关闭: ...
- 烂泥:切割nginx日志
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这几天自己看了下博客的nginx日志,发现日志文件发现越来越大. 因为nginx自己不会 ...
- ELK+redis搭建nginx日志分析平台
ELK+redis搭建nginx日志分析平台发表于 2015-08-19 | 分类于 Linux/Unix | ELK简介ELKStack即Elasticsearch + Logstas ...
- nginx日志分析利器GoAccess
面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...
- 使用elk+redis搭建nginx日志分析平台
elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...
- nginx日志切割脚本
#!/bin/bash ip=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d ...
随机推荐
- leetcode752. 打开转盘锁
我们可以将 0000 到 9999 这 10000 状态看成图上的 10000 个节点,两个节点之间存在一条边,当且仅当这两个节点对应的状态只有 1 位不同,且不同的那位相差 1(包括 0 和 9 也 ...
- dl-google.com 的问题
印象里,如果用过公司vpn之后,再用android studio, 这个地址就能被解析下载了. 看来,应该只是域名被屏蔽,ip并没有. 所以,以后拿到ip之后,写进hosts里应该没事 https:/ ...
- 11/4 <LinkedList>
82. Remove Duplicates from Sorted List II 跳过重复节点,返回head. class Solution { public ListNode deleteDupl ...
- TensorFlow基础篇
Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算.TensorFlow的运行机制属于“定义”和“运行”相分离.模型的构建只是相当于定义了一个图结构(代表一个计算任务),图中有 ...
- PATB1033 旧键盘打字 (20 分)
一.技术总结 使用字符数组出现段错误即char str[];改成string str:后问题解决.以后尽量使用C++中的string 使用cin>>,出现答案错误,原因可能是在输入是有空格 ...
- Spring Cloud组件使用/配置小记
仅使用,无多少技术含量,权记于此以备忘. 微服务架构下的主要组件 服务注册组件:Consul.Etcd等 网关:Zuul.Spring Cloud Gateway等 容错框架:Hystrix 负载均衡 ...
- 修改Windows中文用户名为英文(更全面的方法)
网上方法很多,但是大多不全面. 我的建议是 1,新建/切换管理员账号 net user administrator /active:yes 然后点击桌面,使用Alt+F4组合键 注销中文用户名账号,并 ...
- Linux查看进程和已知端口是否启动
如查看activeMQ的61616这个端口是否启动,以及直接查看activeMQ进程是否启动,可以通过如下命令进行查看 其中netstat命令必须知道端口,如果能查出就证明已启动,如果查出没有结果则表 ...
- windows上MongoDB远程访问配置
今天用另一台机器上的MongoDB,但是使用本地连接时,没问题 换成IP地址时,出现 解决的方法,修改配置文件 systemLog: destination: file path: d:/Mongod ...
- 本地计算机上的SQL Server(MSSQLSERVER)服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
看下SQLExperss协议和 MySQLServer协议的TCP/IP端口,有可能是SQLEXPERSS将TCP端口占用了,将SQLEXPERSS的TCP/IP协议禁用,重启 SQLEXPRESS服 ...