Nginx⽇志和监控-配置⽇志
1. 配置错误⽇志 Error Log
Nginx 将遇到的不同严重级别问题的信息写⼊错误⽇志。 指令设置对特定⽂件,stderr 或 syslog 的⽇志记录,并指定要记录的消息的最低严重级别。 默认情况下,错误⽇志位于 logs/error.log(绝对路径取决于操作系统和安装),并且默认记录所有严重级别的消息。
下⾯的配置将记录错误信息的最低级别从 error 改为 warn:
error_log logs/error.log warn;
此时,warn、error crit、alert 和 emerg 这⼏种级别的消息会写⼊⽇志。
nginx和apache区别错误⽇志的默认设置在全局范围内有效。为了覆盖这个设置,可以在主配置⽂件的顶级上下⽂中使⽤ 指令。主配置⽂件的顶级上下⽂中的设置可以被其他的配置上下⽂继承。error_log 还可以在 http、stream、server 和 location 上下⽂中制定,从⽽覆盖上层上下⽂中的设置。发⽣错误时,相关信息只会写⼊和错误最相关的上下⽂指定的那个错误⽇志。然⽽,如果在同⼀个上下⽂中使⽤了多个 error_log 指令,错误信息会写⼊所有指定的⽇志中。
注意:Nginx 开源版本 1.5.2 之后才增加了在同⼀个上下⽂中使⽤了多个 error_log 指令写⼊所有指定的⽇志中这个功能。
2. 配置访问⽇志 Access Log
Nginx 会在客户端请求处理完成后,⽴刻把相关信息写⼊访问⽇志。默认情况下,访问⽇志位于 logs/access.log,并且信息会以预定义的组合格式写⼊⽇志。要覆盖默认设置,可以使⽤ log_format 指令更改⽇志消息的格式, access_log 指令指明⽇志位置和格式。⽇志格式⽤变量定义。
以下⽰例定义了将预定义的组合格式与指⽰响应的 gzip 压缩⽐率的值⼀起扩展的⽇志格式。 然后将格式应⽤于启⽤压缩的虚拟服务器。
http {
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
gzip on;
access_log /spool/logs/nginx-access.log compression;
...
}
}
⽇志格式的另⼀个例⼦,可以跟踪 Nginx 和上游服务器之间的不同时间值,如果您的⽹站体验变慢,可能有助于诊断问题。 可以使⽤以下变量记录指⽰的时间值:
– ⽤于和上游服务器建⽴连接的时间。
– 连接建⽴到从上游服务器接受响应头中的第⼀个字节数据之间的时间。
– 连接建⽴到从上游服务器接受响应体中的最后⼀个字节数据之间的时间。
– ⽤于处理⼀个请求的所有时间。
所有时间值均以秒为单位进⾏测量,以毫秒为分辨率。
http {
log_format upstream_time '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"'
'rt=$request_time uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"';
server {
access_log /spool/logs/nginx-access.log upstream_time;
...
}
}
下⾯是⼏个如何读取结果时间值的规则:
当⼀个请求需要⼏台服务器来处理时,变量包含⼏个⽤逗号分隔的值。
当有 upstream 服务器组之间的内部重定向,结果值⽤分号分隔。
当⼀个请求⽆法到达 upstream 服务器或者⽆法接受到完整的头字段,变量包含“0”。
连接到 upstream 服务器时发⽣错误,或者从缓存中获取响应,变量包含“-”。
⽇志记录可以通过启⽤⽇志消息的缓冲区以及名称包含变量的常⽤⽇志⽂件描述符的缓存(the cache of descriptors of frequently used log files whose names contain variables)来优化。 要启⽤缓冲,请使⽤ 指令的 buffer 参数指定缓冲区的⼤⼩。 当下⼀条⽇志消息不适合缓冲区(填满缓冲区)以及 时,将缓冲的消息写⼊⽇志⽂件。
通过 指令开启⽇志⽂件描述符的缓存
指令和 error_log 指令类似,指定层级的配置会覆盖上⼀层级的配置。当请求处理完成后,消息写⼊当前层级指定的⽇志⽂件,或从上⾯层级继承的⽇志⽂件。如果⼀个层级中定义了多个访问⽇志,则消息写⼊到所有的⽇志中。
3. 启⽤条件⽇志记录(Conditional Logging)
条件⽇志记录允许从访问⽇志中排除不重要⽇志(trivial)或不重要的⽇志条⽬(unimportant log entries)。 在 Nginx 中,条件⽇志记录由 指令的 if 参数启⽤。
下⾯的例⼦中,将 HTTP 状态码为 2XX(成功)和 3XX(重定向)的请求排除:
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /path/to/access.log combined if=$loggable;
4. 写⼊系统⽇志(Syslog)
syslog 实⽤程序是计算机消息⽇志记录的标准,允许从不同设备收集⽇志消息到单个系统⽇志服务器上。 在 Nginx 中,使⽤ 和 指令中的syslog: 前缀配置如何记录⽇志到 syslog。
syslog 的消息可以发送到 server= 参数,可以是域名,IP 地址或 Unix 域名套接字路径。域名或 IP 地
址可以通过制定端⼝来覆盖默认的514 端⼝。Unix 域名套接字路径可以通过 unix: 前缀制定:
error_log server=unix:/var/log/nginx.sock debug;
access_log syslog:server=[2001:db8::1]:1234,facility=local7,tag=nginx,severity=info;
这个例⼦中,Nginx 错误⽇志消息中的 debug 级别消息会写⼊制定的 Unix 域名套接字路径,访问⽇志会写⼊通过 IPv6 地址和端⼝号1234 制定的 syslog 服务器。
facility= 参数指定记录消息的程序的类型。 默认值是 local7。 其他可能的值是:auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0 … local7.
tag= 参数将⾃定义 tag 标记应⽤于系统⽇志消息(这⾥制定为 nginx)。
severity= 参数设置访问⽇志的系统⽇志消息的严重级别。可⽤值按照严重级别排列如下:debug、info、notice、warn、error (default)、crit、alert 和 emerg。所有指定级别和更加严重级别的消息会写⼊⽇志。指定的严重级别为 error 时,严重级别为 crit、alert 和 emerg 的消息也会写⼊⽇志。
5. 实时活动监控
Nginx Plus 提供了⼀个实时活动监控接⼝,显⽰ HTTP 和 TCP 上游 upstream 服务器的关键负载和性能指标。更多信息 。
6. ⽤ Amplify 监测 Nginx
Nginx 有⼀个⾃带的监控⼯具,称为 ,是⼀个 SaaS ⼯具,可以⽤来监控服务器。
Nginx Amplify 上⼿资料 。 在⼗分钟内,可以获得所有关键 Nginx 指标的开箱即⽤图表,⽽且还可以获得 Linux 操作系统,PHP-FPM,Docker 容器等的指标。 Nginx Amplify 会⾃动使⽤来⾃ 和 的指标,并且还可以收集各种操作系统信息。
更多资料 。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论