1

繼Nginx的神交模式是我Nginx的日誌格式爲logstash

log_format timed_combined '$ HTTP_X_FORWARDED_FOR - $ REMOTE_USER [$ time_local]' ' 「$要求」 $狀態$ body_bytes_sent' 「」 $ http_referer「」$ http_user_agent「' '$ request_time $ upstream_response_time $ pipe';

以下爲Nginx的日誌記錄(供參考)

- - test.user [26/May/2017:21:54:26 +0000] "POST /elasticsearch/_msearch HTTP/1.1" 200 263 "https://myserver.com/app/kibana" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" 0.020 0.008 . 

以下爲logstash神交圖案

NGUSERNAME [a-zA-Z\.\@\-\+_%]+ 
NGUSER %{NGUSERNAME} 
NGINXACCESS %{IPORHOST:clientip} - - \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time} %{NUMBER:upstream_time} 

錯誤logstash日誌中找到

「status」=> 400,「error」=> {「type」=>「mapper_parsing_exception」, 「reason」=>「無法解析[timestamp]」, 「caused_by」=> {「type 「=>」illegal_argument_exception「,」reason「=>」無效 格式:\「26/May/2017:19:28:14 -0400 \」格式不正確 \// May/2017:19:28:14 -0400 \」

Issue: - Nginx logs are not getting grokked. 
Requirement: - Timestamp should be filtered into a particular field. 

什麼是錯誤的,我的配置?如何解決這個錯誤?

回答

1

您所提供的,因爲兩個區別默認NGINXACCESS神交模式不匹配的記錄行:

  1. 作爲日誌行的IP地址或主機名的第一個元素的預期,但在你的日誌線破折號(-)是第一個元素。
  2. 在日誌行中的第三個要素是用戶名,但神交模式需要一個破折號(-

因此,有解決這個雙向的:

  1. 確認,您的日誌線匹配默認模式
  2. 更改神交模式是這樣的:

NGINXACCESS - - %{USERNAME:username} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time} %{NUMBER:upstream_time} 

我建議使用Grok debugger來開發和調試grok模式。它允許您逐步創建和測試它們。

+0

我使用Grok調試器修改了Grok模式。現在,grok過濾器與日誌匹配。但是,仍然有同樣的錯誤。 ** />「=> {」type「=>」illegal_argument_exception「,」reason「=>」格式無效:「29/May/2017:22:53:37 -0400 \」格式錯誤「/ May/2017:22:53:37 -0400「** @breml –

+0

我不認爲這個錯誤是由Grok模式引起的,但是Logstash配置中的其他部分。所以沒有進一步的細節,就不可能回答你關於上述錯誤的問題。 – breml

+0

我在全新的測試服務器中嘗試了相同的配置。它工作正常。所以,我認爲彈性搜索reindexing將在這種情況下工作。這些衝突在我修改了Nginx日誌模式(添加了原始客戶端IP的參數並增加了響應時間)後開始發生。你認爲這可能是導致這個錯誤的原因嗎? –