grok パターンを記述する

grok パターンのシンタックス(SYNTAX)は %{SYNTAX:SEMANTIC} です。シンタックスはテキストに適合するパターンの名称です。セマンティック(SEMANTIC) は適合したテキストに与えられる識別子です。

grok デバッガーを使用して grok パターンを書き、抽出した内容をログ監視ダッシュボードの列として表示することが可能です。例として、以下のようなログパターンがあります。

x.x.x.90 - - [13/Sep/2006:07:01:53 -0700] "PROPFIND /svn/[xxxx]/Extranet/branches/SOW-101 HTTP/1.1" 401 587

引用符の間のテキストを抽出する grok パターンは %{QUOTESTRING:text} で、出力は 「PROPFIND /svn/[xxxx]/Extranet/branches/SOW-101 HTTP/1.1」 となります。

grok パターンの例:

apache のログと apache のエラーに関して、grok パターンの例を以下に示します:

%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \\[%{HTTPDATE:timestamp}\\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}
"\\[%{DATA:apache_error.timestamp}\\] \\[%{WORD:apache_error.source}:%{DATA:level}\\] \\[pid %{NUMBER:apache_error.pid}(:tid %{NUMBER:apache_error.tid})?\\] (%{DATA:apache_error.sourcecode}\\(%{NUMBER:apache_error.linenum}\\): )?(?:\\[client %{IPORHOST:apache_error.clientip}:%{POSINT:apache_error.port}\\] ){0,1}%{GREEDYDATA:apache_error.message}"
note

「system-generated 」は予約名のため、この語を使用して grok パターン名を作成することはできません。

grok パターンの詳細は https://github.com/thekrakken/java-grok/blob/master/src/main/resources/patterns/patterns) を参照ください。