全部产品

    Nginx 日志

    更新时间:2021-02-03 14:02:19

    日志服务支持通过控制台数据接入向导一站式配置Nginx配置模式采集日志与设置索引。

    背景信息

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

    Nginx日志格式

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

    log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$request_time $request_length '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent"';

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

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

    日志样例

    Nginx日志样例如下:

    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"

    字段说明

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

    采集步骤

    1. 登录日志服务控制台

    2. 选择数据源类型。

      通过Nginx配置模式采集请选择NGINX-文本日志
    3. 选择日志空间,配置完成后,单击下一步

      请选择Project和Logstore,您也可以直接单击立即创建,重新创建Project和Logstore。

      如果您是通过日志库下的数据接入后的加号进入采集配置流程,系统会直接跳过该步骤。

    4. 创建机器组,单击下一步

      在创建机器组之前,您需要首先确认已经安装了Logtail。

      请根据界面提示进行安装。或者请参见安装Logtail(Linux系统)安装Logtail(Windows系统)进行安装。

      安装完Logtail后单击确认安装完毕创建机器组,具体请参见简介。如果您之前已经创建好机器组 ,也可以直接单击使用现有机器组

    5. 配置机器组,配置完成后,单击下一步

      选择一个机器组,将该机器组从源机器组移动到应用机器组机器组配置
    6. Logtail配置。

      Nginx配置模式的Logtail配置项说明如下。
      配置项 详情
      配置名称 配置名称只能包含小写字母、数字、连字符(-)和下划线(_),且必须以小写字母和数字开头和结尾,长度为3~128字符。
      说明 配置名称设置后不可修改。
      日志路径 指定日志的目录和文件名。
      • 日志文件名支持完整文件名和通配符两种模式。
      • 日志文件查找模式为多层目录匹配,即指定文件夹下所有符合文件名模式的文件都会被监控到,包含所有层次的目录。
        • 例如/apsara/nuwa/ … /*.log表示/apsara/nuwa目录中(包含该目录的递归子目录)后缀名为.log的文件。
        • 例如/var/logs/app_* … /*.log*表示/var/logs目录下所有符合app_*模式的目录中(包含该目录的递归子目录)文件名包含.log的文件。
        说明
        • 一个文件只能被一个配置收集。
        • 目录通配符只支持 *? 两种。
      是否为Docker文件 如果是Docker容器内部文件,可以直接配置内部路径与容器Tag,Logtail会自动监测容器创建和销毁,并根据Tag进行过滤采集指定容器的日志。
      模式 默认是NGINX配置模式,您也可以手动修改。
      NGINX日志配置 请填写标准Nginx配置文件日志配置部分,通常以log_format开头。
      NGINX键名称 日志服务会自动读取您的Nginx键。
      丢弃解析失败日志 请选择解析失败的日志是否上传到日志服务。
      • 开启后,解析失败的日志不会上传到日志服务。
      • 关闭后,日志解析失败时上传原始日志。
      最大监控目录深度 指定从日志源采集日志时,监控目录的最大深度,即最多监控几层日志。最大目录监控深度范围0-1000,0代表只监控本层目录。
    7. (可选)

      配置高级选项,配置完成后,单击下一步

      请根据您的需求选择高级配置。如没有特殊需求,建议保持默认配置。
      配置项 详情
      启用插件处理 开启后,支持通过插件实现对文本日志的多样处理。
      上传原始日志 请选择是否需要上传原始日志。开启该功能后,原始日志内容会作为__raw__字段与解析过的日志一并上传。
      Topic生成方式
      • 空-不生成Topic:默认选项,表示设置Topic为空字符串,在查询日志时不需要输入Topic即可查询。
      • 机器组Topic属性:设置Topic生成方式为机器组Topic属性,可以用于明确区分不同前端服务器产生的日志数据。
      • 文件路径正则:选择此项之后,您需要填写下方的自定义正则,用正则式从路径里提取一部分内容作为Topic。可以用于区分具体用户或实例产生的日志数据。
      自定义正则 如您选择了文件路径正则方式生成Topic,需要在此处填写您的自定义正则式。
      日志文件编码
      • utf8:指定使用UTF-8编码。
      • gbk:指定使用GBK编码。
      时区属性 设置采集日志时,日志时间的时区属性。
      • 机器时区:默认为机器所在时区。
      • 自定义时区:手动选择时区。
      超时属性 如果一个日志文件在指定时间内没有任何更新,则认为该文件已超时。
      • 永不超时:指定持续监控所有日志文件,永不超时。
      • 30分钟超时:如日志文件在30分钟内没有更新,则认为已超时,并不再监控该文件。
      过滤器配置 日志只有完全符合过滤器中的条件才会被收集。

      例如:

      • 过滤符合条件的数据:配置Key:level Regex:WARNING|ERROR,表示只收集level为WARNING或ERROR类型的日志。
      • 过滤不符合条件的数据:
        • 配置Key:level Regex:^(?!.*(INFO|DEBUG)).*,表示不收集level为INFO或DEBUG类型的日志。
        • 配置Key:url Regex:.*^(?!.*(healthcheck)).*,表示不采集url中带有healthcheck的日志,例如key为url,value为/inner/healthcheck/jiankong.html的日志将不会被采集。

    8. 配置索引,配置完成后,单击下一步

      请根据业务需求设置索引。具体请参见开启并配置索引

    配置完成后您就可以开始通过Nginx配置模式采集日志。