はじめてのSplunk ― 概要から応用までを体系的に学ぶ

4-9 データモデルの作成

生のログは、そのままでは「どこに何のフィールドがあるか」が分かりにくく、 分析するたびにSPLを書く必要があります。 そこで役立つのがデータモデル(Data Model)です。 データモデルは、生のログを意味のある構造に整理し、 SPLを書かなくてもピボット(Pivot)で分析できるようにする仕組みです。 BIツールのように、非エンジニアでもドラッグ操作で集計・可視化できるようになります。

1. データモデルとは何か

データモデルは、データをオブジェクト/データセット(Dataset)と フィールド(Field)の階層構造として定義したものです。 たとえば「Webアクセス」というデータセットに対して、 statusclientipuriといったフィールドをあらかじめ紐づけておきます。

こうして構造を定義しておくと、利用者は生ログやSPLを意識することなく、 「どのデータセットの、どのフィールドを、どう集計したいか」を選ぶだけで分析できます。 一度作っておけば、部署内の誰もが同じ定義で一貫した集計を行えるのも利点です。

2. データモデルの作成

データモデルの作成は設定 > データモデル(Settings > Data Models)から行います。 新しいデータモデルを作成し、対象とするイベントを絞り込むための 制約(Constraints)としてサーチ条件を指定します。 そのうえで、分析に使いたいフィールドをデータセットに追加していきます。

SPL ― データセットの制約に使うサーチの例
index=web sourcetype=access_combined

制約でイベントの範囲を決め、必要なフィールドを構造化しておけば、 あとはピボット画面から集計軸と値を選ぶだけでレポートやグラフを作成できます。

3. アクセラレーションとtstats

データモデルにはデータモデルアクセラレーション(Data Model Acceleration)という 高速化の仕組みがあります。 これを有効にすると、Splunkが対象データを事前に集計・索引化しておき、 大量のデータに対する集計を大幅に高速化できます。

アクセラレーション済みのデータモデルは、tstatsコマンドを使うことで、 生イベントを走査せずに高速に集計できます。

SPL ― tstatsでデータモデルを高速集計する例
| tstats count from datamodel=Web by Web.status

ただしアクセラレーションは、事前集計データを保持するためのディスク容量を消費します。 対象期間やデータモデルの範囲を広げすぎないよう、必要十分な設定を心がけましょう。

4. まとめ

  • データモデルは生ログを構造化し、ピボットでのノーコード分析を可能にする
  • オブジェクト/データセットとフィールドの階層で定義し、制約でイベントを絞り込む
  • 作成は「設定 > データモデル」から行う
  • データモデルアクセラレーションで高速化でき、tstatsで高速に集計できる