Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash ELK Grok模式-nginx错误日志的参数数量可变_Logstash_Elastic Stack_Logstash Grok - Fatal编程技术网

Logstash ELK Grok模式-nginx错误日志的参数数量可变

Logstash ELK Grok模式-nginx错误日志的参数数量可变,logstash,elastic-stack,logstash-grok,Logstash,Elastic Stack,Logstash Grok,我试图建立一个GROK模式来捕获nginx错误日志,但是内容是可变的。例如,如果没有referer,它只会将该值保留在行尾: 2018/08/30 09:30:32 [error] 84843#0: *24414687217 open() "/www/sites/js/draw.js" failed (2: No such file or directory), client: 172.68.211.134, server: www.example.com, request: "GET /bun

我试图建立一个GROK模式来捕获nginx错误日志,但是内容是可变的。例如,如果没有referer,它只会将该值保留在行尾:

2018/08/30 09:30:32 [error] 84843#0: *24414687217 open() "/www/sites/js/draw.js" failed (2: No such file or directory), client: 172.68.211.134, server: www.example.com, request: "GET /bundles/app/js/draw.js HTTP/1.1", host: "www.example.com"
但如果真的有,它会补充说:

, referrer: "https://www.example.com/de/member/foo"
我当前的GROK模式适用于具有推荐人的行,但我如何让它处理这两个示例

%{DATA:nginx_error.time} \[%{DATA:nginx_error.level}\] %{NUMBER:nginx_error.pid}#%{NUMBER:nginx_error.tid}: (\*%{NUMBER:nginx_error.connection_id} )?%{GREEDYDATA:nginx_error.message}, client: %{IP:nginx_error.client}, server: %{HOSTNAME:nginx_error.server}, request: \"%{DATA:nginx_error.request}\", host: \"%{HOSTNAME:nginx_error.host}\", referrer: \"%{URI:nginx_error.referrer}\"

您可以使用
,例如,
(,referer:)?(\“{URI:referer}\”)?

请注意,括号(…)中的数据称为捕获组

你的模式就会变成

%{DATA:nginx_error.time} \[%{DATA:nginx_error.level}\] %{NUMBER:nginx_error.pid}#%{NUMBER:nginx_error.tid}: (\*%{NUMBER:nginx_error.connection_id} )?%{GREEDYDATA:nginx_error.message}, client: %{IP:nginx_error.client}, server: %{HOSTNAME:nginx_error.server}, request: \"%{DATA:nginx_error.request}\", host: \"%{HOSTNAME:nginx_error.host}\"(, referrer: )?(\"%{URI:referrer}\")?