Previous Top Next
11. ログ分析パターンの管理方法
11.1. Grok Patternとは
Graylogでは、Grokと呼ばれる一種の言語を利用して、データを抽出することができます。 Grokは、正規表現のセットであり、正規表現が一致する部分に、フィールド名を付けて保存できます。
Grok Patternを使うことで、一行のメッセージから、複数のデータを別のフィールドに分解・抽出することができます。
単純な正規表現のルールでも同じことが可能ですが、予め決まったフォーマットであるとわかっている場合、Graylogに登録済み、あるいは既に世の中に存在しているGrok Patternを登録して使うと便利です。
11.2. Grok Patternの定義と動作
Grok Patternの定義方法と動作を例を交えながら解説します。 例えば、以下のようなログを解析するとします:
len=50824 src=172.17.22.108 sport=829
Grok Patternとしては、以下のようなパターンが存在しています:
BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
NUMBER (?:%{BASE10NUM})
IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
このパターンを使って、ログを解析するためには、以下のような設定を行ないます:
len=%{NUMBER:length} src=%{IPV4:srcip} sport=%{NUMBER:srcport}
この例のlen=%{NUMBER:length}に着目すると、 NUMBER
というパターンを使って、len=から次のスペースまでに現れる値を抽出し、 length
というフィールドに登録しています。 NUMBER
というパターンは、その中でさらに BASE10NUM
というパターンを使用しています。この BASE10NUM
に正規表現が設定されています。src=やsport=も同様の動作をします。
Note
ログとGrok patternの組み合わせによっては、不要なフィールドが作成されてしまうことがあります。そのような場合、特殊なフィールド名 UNWANTED
を付与することにより、フィールドの作成をスキップできます。
また以下のようにすることで、フィールドに登録する値の型を定義することができます:
len=%{NUMBER:length:byte}
利用できる型は次の通りです。
タイプ | 値のサイズ | 例 |
---|---|---|
byte | -128 ... 127 | %{NUMBER:fieldname;byte} |
short | -32768 ... 32767 | %{NUMBER:fieldname;short} |
int | -2^31 ... 2^31 -1 | %{NUMBER:fieldname;int} |
long | -2^63 ... 2^63 -1 | %{NUMBER:fieldname;long} |
float | 32-bit IEEE 754 | %{NUMBER:fieldname;float} |
double | 64-bit IEEE 754 | %{NUMBER:fieldname;double} |
boolean | true, false | %{DATA:fieldname;boolean} |
string | Any UTF-8 string | %{DATA:fieldname;string} |
date | See SimpleDateFormat | %{DATA:timestamp;date;
dd/MMM/yyyy:HH:mm:ss Z} |
datetime | date のエイリアス |
11.3. 設定インタフェース
Grok Patternの設定は、メニューの Grok Patterns
のリンクから遷移した画面で行なうことができます。

各ボタンの機能は以下の通りです。
Import pattern
: パターンファイルを使ってGrok Patternを追加できます。 パターンファイルの形式は以下の形式です:名前1 パターン1 名前2 パターン2 :
Create pattern
: 新たなパターンの作成フォームを開きます。Delete
: パターンを削除します。Edit
: パターンを編集します。