-
Notifications
You must be signed in to change notification settings - Fork 255
Nginx Parser
Nginx Parser 是专门解析Nginx日志的解析器。仅需指定nginx的配置文件地址,即可进行nginx日志解析。
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来解析
"parser":{
"name":"nginx_parser",
"type":"nginx",
"nginx_log_format_path":"/opt/nginx/conf/nginx.conf",
"nginx_log_format_name":"main",
"nginx_schema":"time_local date,bytes_sent long,request_time float,body_bytes_sent long",
"labels":"machine xxx123, team pandora"
},
-
Nginx Parser是根据您Nginx配置文件自动生成配置正则表达式解析日志的方式,字段名称和Nginx配置文件中
log_format
定义的名称一致。 -
nginx_log_format_path
填写nginx配置文件,配置文件中需要包含log_format
格式,如图1. -
nginx_log_format_name
实际access log使用的格式名称,如图2 -
nginx_schema
默认情况下nginx日志都被解析为string,指定该格式可以设置为float、long、date等三种类型。指定范式为逗号分隔每个字段和类型,每个字段和类型用空格分隔,左边为字段名称,右边为类型。 -
labels中定义的标签如果跟数据有冲突,labels中的标签会被舍弃
-
disable_record_errdata
默认为false
,解析失败的数据会默认出现在"pandora_stash"字段,该选项可以禁止记录解析失败的数据。
{
"name":"nginx_runner",
"reader":{
"mode":"file",
"meta_path":"meta",
"log_path":"/opt/nginx_logs/logs/access.log"
},
"parser":{
"name":"nginx_parser",
"type":"nginx",
"nginx_log_format_path":"/opt/nginx/conf/nginx.conf",
"nginx_log_format_name":"main",
"nginx_schema":"time_local date,bytes_sent long,request_time float,body_bytes_sent long"
},
"senders":[{
"name":"pandora_sender",
"sender_type":"pandora",
"pandora_ak":"your_ak",
"pandora_sk":"your_sk",
"pandora_host":"https://pipeline.qiniu.com",
"pandora_repo_name":"my_nginx_log",
"pandora_region":"nb",
"pandora_schema_free":"true",
"pandora_gzip": "true",
"pandora_enable_logdb":"true",
"fault_tolerant":"true",
"ft_save_log_path":"./ft_log",
"ft_strategy":"always_save",
"ft_procs":"2"
}]
}
快速开始 | Pandora | Readers | Parsers | Senders | Download | 七牛智能日志管理平台 | logkit-pro专业版