データの入力は、「ファイルやディレクトリを直接指定」「HTTPで取得」「TCP/UDP、スクリプトで取得」といったように、エージェントなしで直接取り込む方法がある。また、エージェントの「Splunk Forwarder」を利用して、Forwarderを導入しているデバイスの様々なログも収集できる。
さて、早速検索を始めてみよう。サーチバーから検索したい文字を入力することで、全文検索が可能だ。今回のログにはWebのアクセスログや認証ログが入っているため、それに関連する情報を検索してみる。
下記はサーチ画面になる。このサーチバー内に「200」「404」「GET」「POST」「failed」「login」「error」など、検索したい任意の文字列を入力すれば、検索結果が確認できる。サーチ結果がイベント・リストに表示され、タイムラインが更新される。次にSPLを利用した検索例を試してみたい。
Splunkの検索は、SPLという言語で実行する。200種以上のコマンドが存在しており、約15のコマンドで多くの操作を実行可能だ。以下は代表的なコマンドだ。
カテゴリー | コマンド | 内容 |
---|---|---|
順序 | top/rare | フィールドで一番多い値/一番少ない値 |
順序 | head/tail | 指定した結果の最初のn件/最後のn件 |
順序 | sort | サーチ結果をソート |
統計 | chart | グラフ化するための結果を表で出力 |
統計 | stats | 統計情報を提供。最大、最小、平均、合計、標準偏差、グループ化などにて結果を出力 |
統計 | timechart | 統計結果を時系列にて出力 |
計算 | eval | 式を計算して値を出力 |
参照 | lookup | 別参照テーブルのルックアップを行う |
フォーマット | table | 指定したフィールドのみ表示する |
フォーマット | rex | 正規表現を指定し、フィールドを動的に抽出する |
グループ | transaction | IPやIDなどの共通トークンにより、複数のレコードを一つのトランザクションにグループ化 |
フィルタ | dedup | 指定した基準の一致する後続の結果を削除 |
地域 | iplocation | IPの地理情報を抽出(国、都市、緯度、経度) |
地域 | geostats | 緯度、経度から地図上のマッピング |
「フィールド」とは、リレーショナルデータベースでのスキーマに近い存在であり、データの名前を定義する。単純に文字でデータの全文検索もできるが「フィールド=値」で検索する方が、より効率的だ。フィールドは正規表現を通して実データから抽出して定義でき、抽出のための自動正規表現ツールも利用できる。次にこのフィールドを使って、Splunkでどのようにコマンドを実行するか、検索の結果としてどのような統計処理を行い、可視化していくのかについて示そう。
前回も少し触れたが、テーブル構造、属性、サイズといったリレーショナルデータベースでスキーマに相当する概念はSplunkには存在しない。スキーマがないと言うと語弊はあるが、属性やサイズに依存することなくデータをそのまま取り込め、「Key=Value」ペアによって取り込む段階においても、後付けでも設定できる。
この「Key」の部分をSplunkでは「フィールド」と呼び、コマンドを実行するごとにこの「フィールド=値」を呼び出し、終了すれば消える。その瞬間にだけスキーマを生成することで、事前のデータ処理が不要になり、どのようなフォーマットのログでも処理できるというわけだ。
Copyright © ITmedia, Inc. All Rights Reserved.