我无法在grok 调试器中解析以下 nginx 错误日志消息。我有一种感觉,我应该使用一个愚蠢的技巧,但无法弄清楚它可能是什么。
2015/03/20 23:35:52 [错误] 8#0: *10241823 在记录请求时测试“/www”存在失败(2:没有这样的文件或目录),客户端:201.45.203.78,服务器:$domain,请求:“GET /ritikapuri_”
到目前为止,这是我的 Grok 模式:
(?<timestamp>%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage} client: %{IP:client}
Run Code Online (Sandbox Code Playgroud)
这种模式让我进入“服务器”部分,但我似乎无法解析其余部分,我不清楚为什么。
如果我使用另一个 %{GREEDYDATA} 模式来获取日志的末尾,它有时不会解析与上述不匹配的日志并给我一个 _grokparsefailure。
最好的方法是使用 if 语句来捕获 nginx 中日志消息的不同变体吗?
我已经遵循了包括这个在内的方法,但无法让它们工作。