2017-03-20 10 views
0

ELKスタックでGROKフィルタを使用して生のプロキシデータを解析して構造化しようとしていますが、タイムスタンプとユーザーエージェントの文字列を正しい形式で取得できません。プロキシログのGrokフィルタ

"1488852784.440 1 10.11.62.19 TCP_DENIED/403 0 GET http://xxx.xxx.com/xxx - NONE/- - BLOCK_WEBCAT_12-XXX-XXX-NONE-NONE-NONE-NONE <IW_aud,0.0,-,""-"",-,-,-,-,""-"",-,-,-,""-"",-,-,""-"",""-"",-,-,IW_aud,-,""-"",""-"",""Unknown"",""Unknown"",""-"",""-"",0.00,0,-,""-"",""-"",-,""-"",-,-,""-"",""-""> - L ""http://xxx.xxx.xxx"" 10.11.11.2 - 403 TCP_DENIED ""Streaming Audio"" - - - GET ""Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"" http://xxx.xxx.xxx" 

私は次のフィルタ使用しています::次のようにログインし、サンプルを参照くださいhttp://grokconstructor.appspot.comに基づいて

%{NUMBER:timestamp}%{SPACE}%{NUMBER:request_msec:float} %{IPORHOST:src_ip} %{WORD}/%{NUMBER:response_status:int} %{NUMBER:response_size} %{WORD:http_method} (%{URIPROTO:http_proto}://)?%{IPORHOST:dst_host}(?::%{POSINT:port})?(?:%{NOTSPACE:uri_param})? %{USERNAME:user} %{WORD}/(%{IPORHOST:dst_ip}|-)%{GREEDYDATA:content_type} 

を、私は、タイムスタンプ(1488852784.440)を除くフィールドの一部を解析することができていますし、ユーザエージェント文字列。私はタイムスタンプ上で異なるDrokデフォルトフィルタを試しましたが、それでも数字として表示されます。

答えて

0

Grokがdateデータ型に変換できないためです。そのためには、この正確な変換を行うフィルタdateを使用する必要があります。

timestampフィールドに解析されたタイムスタンプにイベントの @timestampフィールドを設定します
filter { 
    date { 
    match => [ "timestamp", UNIX_MS ] 
    } 
} 

+0

親愛なるsysadmin、ありがとう!ユーザーエージェント文字列の解決策はありますか? – kenAu89

+0

@ kenAu89 [grokパターンファイル](https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/httpd#L6)は、 '%{QS:agent}'を使ってApacheログのユーザーエージェント。おそらくここでもうまくいくでしょう。 – sysadmin1138

+0

もう一度ありがとうございます。私は最後に引用された文字列を取得しているので、いくつかの位置付け問題がUAを試みます。 – kenAu89

関連する問題