第1章ではSplunkの概要について説明しました。 本章では、Splunkがどのような仕組みでデータを取り込み、サーチを行ってのか説明します。
1. Splunkを構成する3つの基本サーバー
Splunkは1台のサーバーだけで動かすこともできます。 しかし分析対象ログが出力されるサーバーと、Splunkがインストールされているサーバーは異なるのが一般的ですし、 扱うデータ量が増えてくると役割ごとにサーバーを分けてスケールアウトさせる構成をとることになります。 その際に登場する基本的な構成要素が、Search Head(サーチヘッド)、Indexer(インデクサー)、Forwarder(フォワーダー)の3つです。 まずはこの3つの構成要素について説明します。
| サーバー | 役割 | 要約 |
|---|---|---|
| Search Head(SH) | ユーザーからのサーチ指示を受け付け、Indexerに依頼する。Indexerから受け取った結果を加工して画面に表示する | Web GUI画面を提供 |
| Indexer(IDX) | Forwarderから転送されてきたデータを保管する。Search Headから指示を受けてサーチを実際に実行する | データ保管とサーチの実行 |
| Forwarder(FWD) | ログデータを収集し、Indexerへ転送する | データの入力と転送 |
これらは最初に覚えるべき最も基本的なサーバーであり、Splunkを構成するサーバーはほかにも存在します。 より詳しくは後の2-5 Splunkを構成するサーバーとそれぞれの役割にて改めて解説します。
2. サーチの流れ
Splunkの動作は、大きく「取り込んだデータを探すサーチ」と「データを取り込むインデクシング」という二つの処理に分けられます。 まず、取り込んだデータを探すサーチの流れについて解説します。
- ユーザーがWeb画面(Search Head)でサーチを指示する
- Search Headがサーチ内容を解釈し、Indexerへサーチを依頼する
- Indexerが自分の保管しているデータの中から該当部分を探し、部分的な結果を返却
- Search Headが各Indexerからの結果を集約し、ユーザーへ表示する
Search Headはサーチの受け付けと結果の集約を担い、データを探す処理はIndexerが担います。 Search Head/Indexerはそれぞれ分散構成をとることが可能です。 このような構成をとることで、Splunkは、扱うデータが大量になってもサーチ性能を担保できるようにしています。
3. インデクシングの流れ
サーチをするためには、その前に対象となるデータがSplunk内部に存在している必要があります。 Splunkがデータを収集し、保管するまでの処理を、インデクシング(またはインデックス化)と呼びます。 インデクシングの流れは以下です。
- データ入力(Input) ― Forwarderなどがログファイルなどからテキストデータを取り込む
- 加工(Parsing) ― 取り込んだデータから、文字コードやタイムスタンプを識別、改行区切りなどを行い、Splunkのデータ単位である「イベント」にまとめる
- インデックス化(Indexing) ― Indexer上のインデックスへデータを保管する
こうして格納されたデータに対して、前述したサーチが実行されることになります。
2.加工(Parsing)処理は、Forwarderで行われる場合もありますし、Indexerで行われる場合もあります。詳細は後の章で解説します。
「イベント」「インデックス」といった用語は次の2-2 基本的な用語で詳しく説明します。 ここでは「データはイベントとという単位に区切られてインデックスに保管される」ということまで覚えておいてください。
4. まとめ
- Splunkの基本サーバーはSearch Head・Indexer・Forwarderの3つ
- Splunkの動作は大きく「サーチ」と「インデクシング」にの2つに分けられる。
- サーチは「Search Headがサーチを依頼 → Indexerがサーチを実行して結果を返却 → Search Headが結果を集約・加工して表示 」という流れで行われる
- インデクシングは「Forwarderがデータ入力 → Forwarder/Indexerがデータをパースしてイベント単位に整形 → Indexerがインデックスに保管」という流れで行われる