中间件-Nginx日志
Nginx是一个开源的、高性能的HTTP和反向代理服务器,以及IMAP/POP3/SMTP代理服务器。它具有其稳定性、丰富的功能集、简单的配置和低系统资源消耗等特点。Nginx常被用于处理静态文件、负载均衡、反向代理以及缓存等功能,适用于各种规模的网站和应用程序。
Nginx日志主要分为两种:访问日志(access_log)和错误日志(error_log)。这些日志对于系统监控、性能分析、故障排查等都非常有用。
- 访问日志(access_log):访问日志记录了客户端访问Nginx服务器的详细信息。通过访问日志,您可以了解到用户的IP地址、访问的URL、访问时间、请求的处理时间、HTTP响应状态码、请求的头部信息等。
- 错误日志(error_log):错误日志记录了Nginx服务器在处理请求过程中遇到的错误和警告信息。通过查看错误日志,您可以定位到问题的源头,从而进行故障排除。
自建中间件功能在邀测中,支持华北-北京四局点,仅针对用户内测使用,后续将全网开放,敬请期待!
采集方法
使用ICAgent采集日志,接入前请参考安装ICAgent(区域内主机)完成ICAgent安装。然后再通过采集ECS-文本日志方式将日志上报至LTS服务,详细操作请参考云主机ECS文本日志接入LTS。
Nginx日志示例以及字段含义
介绍访问日志和错误日志的示例和字段说明。
参数 |
说明 |
示例 |
---|---|---|
$remote_addr |
客户端地址。 |
211.28.65.253 |
$remote_user |
客户端用户名称。 |
-- |
$time_local |
访问时间和时区。 |
18/Jul/2012:17:00:01 +0800 |
$request |
请求的URI和HTTP协议。 |
"GET /article-10000.html HTTP/1.1" |
$http_host |
请求地址,即浏览器中您输入的地址(IP或域名)。 |
www.wang.com 192.168.100.100 |
$status |
HTTP请求状态。 |
200 |
$upstream_status |
upstream状态。 |
200 |
$body_bytes_sent |
发送给客户端文件内容大小。 |
1547 |
$http_referer |
url跳转来源。 |
https://www.example.com/ |
$http_user_agent |
用户终端浏览器等信息。 |
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C; |
$ssl_protocol |
SSL协议版本。 |
TLSv1 |
$ssl_cipher |
交换数据中的算法。 |
RC4-SHA |
$upstream_addr |
后台upstream的地址,即真正提供服务的主机地址。 |
10.10.10.100:80 |
$request_time |
整个请求的总时间。 |
0.205 |
$upstream_response_time |
请求过程中,upstream响应时间。 |
0.002 |
错误日志示例:
2023/07/10 17:00:00 [error] 12345#12345: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.100, server: example.com, request: "GET /api/data HTTP/1.1", upstream: "http://10.0.0.1:8080", host: "example.com
示例 |
说明 |
---|---|
2023/07/10 17:00:00 |
错误发生的时间。 |
[error] |
表示这是一个错误日志。 |
12345#12345 |
进程ID。 |
*1 |
连接的编号。 |
recv() failed (104: Connection reset by peer) while reading response header from upstream |
错误信息,表明在从上游读取响应头时接收失败,错误原因是“连接被对方重置”。 |
client: 192.168.1.100 |
客户端的IP地址。 |
server: example.com |
服务器的名称。 |
request: "GET /api/data HTTP/1.1" |
请求的方法和路径。 |
upstream: "http://x.x.x.x:8080" |
上游服务器的地址。 |
host: "example.com" |
请求的主机名。 |
日志位置
在Nginx配置文件中,您可以通过指令来设置访问日志和错误日志的存放位置和格式。例如:
http { ... log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; server { ... access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log warn; ... } }
在这个例子中,log_format指令定义了一个名为main的日志格式,然后在server块中使用access_log指令指定了访问日志的存放位置 /var/log/nginx/access.log,错误日志被存放在/var/log/nginx/error.log路径下,并且日志级别被设置为warn。Nginx支持多种日志级别,包括debug、info、notice、warn、error、crit和alert。