全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
日志服务

Nginx 日志

更新时间:2018-03-21 20:30:25

Nginx日志格式和目录通常在配置文件 /etc/nginx/nginx.conf 中。

Nginx日志格式

日志格式

配置文件中定义了Nginx日志的打印格式,即main格式:

  1. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  2. '$request_time $request_length '
  3. '$status $body_bytes_sent "$http_referer" '
  4. '"$http_user_agent"';

声明使用了main日志格式和写入的文件名。

  1. access_log /var/logs/nginx/access.log main

字段说明

字段名称 含义
remoteaddr 表示客户端IP地址。
remote_user 表示客户端用户名称。
request 表示请求的URL和HTTP协议。
status 表示请求状态。
bodybytessent 表示发送给客户端的字节数,不包括响应头的大小;该变量与Apache模块modlogconfig里的bytes_sent发送给客户端的总字节数相同。
connection 表示连接的序列号。
connection_requests 表示当前通过一个连接获得的请求数量。
msec 表示日志写入的时间。单位为秒,精度是毫秒。
pipe 表示请求是否通过HTTP流水线(pipelined)发送。通过HTTP流水线发送则pipe值为“p”,否则为“.”。
httpreferer 表示从哪个页面链接访问过来的。
“http_user_agent” 表示客户端浏览器相关信息,前后必须加上双引号。
requestlength 表示请求的长度。包括请求行,请求头和请求正文。
request_time 表示请求处理时间,单位为秒,精度为毫秒。从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
[$time_local] 表示通用日志格式下的本地时间,前后必须加上中括号。

日志样例

  1. 192.168.1.2 - - [10/Jul/2015:15:51:09 +0800] "GET /ubuntu.iso HTTP/1.0" 0.000 129 404 168 "-" "Wget/1.11.4 Red Hat modified"

配置Logtail收集Nginx日志

通过Logtail收集Nginx日志完整流程请参考快速入门,根据您的网络部署和实际情况选择对应配置。本文档仅展示步骤3 配置数据接入向导的第二步配置数据源中的详细配置。

  1. 填写配置名称、日志路径,并选择日志收集模式为完整正则模式

  2. 输入日志样例并开启自动提取字段

  3. 单击 手动输入正则表达式,并调整正则表达式。

    nginx1

    日志服务支持对日志样例划词自动解析,即对您在划词时选取的字段自动生成正则表达式。但鉴于实际的日志数据格式可能会有细微变动,您需要在根据实际情况对自动生成的正则表达式做出调整,使其符合收集过程中所有可能出现的日志格式。

    nginx2

    由于 request_lengthbody_bytes_sent 这两个字段在这里是数字类型,但有些情况下这里不是数字而是“-”,所以匹配结果(\d+)需要替换成(\S+)。如果您还有其它字段存在这种情况,请按照同样的规则完成替换。

    符合日志格式的正则表达式

    1. (\S+)\s-\s-\s\[(\S+)\s[^\]]+\]\s"(\S+)\s(\S+)\s(\S+)"\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s"([^"]+)"\s"([^"]+)"

    正则表达式修改完成后,单击 验证。如果正则式没有错误,会出现提取的结果,如果有错误请再次调整正则式。

  4. 为日志内容抽取结果填写对应的Key。

    分别为提取结果取一个有意义的字段名称,比如时间字段的命名为time。开启 使用系统时间,然后单击 下一步

    nginx3

Logtail配置完成后,将此配置应用到机器组即可开始规范收集Nginx日志。

本文导读目录