更新时间:2024-07-31 GMT+08:00
分享

中间件-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日志示例以及字段含义

介绍访问日志和错误日志的示例和字段说明。

表1 访问日志字段说明

参数

说明

示例

$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
表2 错误日志字段说明

示例

说明

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。

相关文档