Graylogでログの分解・特定項目の値抜き出しを行う
Pocket

Graylogでは、特定のログに記述されている”特定の項目の値”のみを抜き出し、Graylog側で個別に認識させることができる。
例えば、以下のようなログを受けたとしよう。FortiGateなんかがこんな感じのログだ。

20161007_234857000000

 

Graylogでは、上の例でいうと「USER」「COMMAND」「ARGS」それぞれの値を抽出してやることができる。
じゃあどうやるのかというと、JSONの時とおなじように対象のログのMessageID、INDEX値を控えて[System] > [Inputs]から対象のインプットの[Manage extractors]を開き、ログを検索。
messageのとこで[Grok pattern]を選択する。

20161007_235416000000

 

その後、抽出する箇所のGrok patternについて記述してやる。抽出できる項目は一項目につき一つ作成してやる必要がある。
たとえば、”USER”の項目を抽出するなら以下のようにする。このときに指定する変数は「stored pattern」のリンク先にいろいろとあるので、既存のパターンを参考に自分で変数名を作ることをお勧めする(Graylogで扱われる項目名がこの変数名になるので)。各パターンは正規表現を使っており、用意されているパターンだけでも十分使える(IPアドレスやメールアドレスなどの正規表現もすでに用意されている)。

20161008_094657000000

 

Conditionでは抽出を行うログをどうするか(全部のログで行うのか、特定のキーワードを持つログに絞るのかなど)を指定できるので、環境に合わせて対応するといいだろう。
いろいろなログを一緒のINPUTで取り扱っているなら、そのログだけINPUTを分けるのも手だ。

Sponsored Links

無事、抽出が必要な項目について作成したら、あとはログを受信するだけだ。

20161008_095901000000

20161008_095926000000

 

うーむ、結構便利な機能ではなかろうか。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。