智能日志管理平台

  • nginx 日志

    最近更新时间:2018-09-13 19:17:00

    Nginx Parser 是专门解析 Nginx 日志的解析器。仅需指定 nginx 的配置文件地址,即可进行 nginx 日志解析。

    Nginx Parser 的解析原理

    Nginx Parser 会根据 Nginx 配置文件去寻找 Nginx 日志的生成格式,举例来说:

     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $bytes_sent $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for" '
                          '$upstream_addr $host $sent_http_x_reqid $request_time';
    

    这个日志格式会生成一个正则表达式,匹配每个$符号后的字符串,以格式中定义的分隔符为正则表达式的终结符。 如$remote_addr后面跟着空格,则认为匹配的 remote_addr 字段,匹配到空格为止。 如果被双引号""包裹,如"$http_user_agent",则认为匹配到双引号为止,又比如[$time_local]会认为匹配左括号[开始到右括号]结尾。

    通过上述生成的正则表达式,就可以匹配 Nginx access日志了。

    上述方式生成的正则表达式可以解析大部分情况下的 Nginx 配置,但是确实也存在一些情况会出现解析异常,如上述的 case 下,如果 http_user_agent 没有通过双引号引起来,那么就会导致提前匹配到 http_user_agent 中可能存在的空格,导致解析失败。针对这样的情况,我们就推荐使用Grok Parser,或者服务端划词来解析。

    基础配置信息

    • nginx配置路径(nginx_log_format_path): 上传nginx配置文件,配置文件中需要包含 log_format 格式,nginx配置样例如下图所示。

    • nginx日志格式名称(nginx_log_format_name): 根据您日志实际使用的 access log 选择使用的格式名称。

    高级选项

    • 手动指定字段类型(nginx_schema): 默认情况下 nginx 日志都被解析为 string,指定该格式可以设置为float、long、date 等三种类型。指定范式为逗号分隔每个字段和类型,每个字段和类型用空格分隔,左边为字段名称,右边为类型。

    • 指定名称(name): Nginx Parser 是根据您 Nginx 配置文件自动生成配置正则表达式解析日志的方式,parser名称和 Nginx 配置文件中 log_format 定义的名称一致。

    • 额外的标签信息(labels): 中定义的标签如果跟数据有冲突,labels 中的标签会被舍弃。

    • 禁止记录解析失败数据(disable_record_errdata): 默认为 false,解析失败的数据会默认出现在pandora_stash字段,该选项可以禁止记录解析失败的数据。

    • 保留原始数据(keep_raw_data):默认为false,配置此选项之后会保留原始数据在raw_data字段下。

    以上内容是否对您有帮助?
  • Icon free helper
    Close