生のログは、そのままでは「どこに何のフィールドがあるか」が分かりにくく、 分析するたびにSPLを書く必要があります。 そこで役立つのがデータモデル(Data Model)です。 データモデルは、生のログを意味のある構造に整理し、 SPLを書かなくてもピボット(Pivot)で分析できるようにする仕組みです。 BIツールのように、非エンジニアでもドラッグ操作で集計・可視化できるようになります。
1. データモデルとは何か
データモデルは、データをオブジェクト/データセット(Dataset)と
フィールド(Field)の階層構造として定義したものです。
たとえば「Webアクセス」というデータセットに対して、
statusやclientip、uriといったフィールドをあらかじめ紐づけておきます。
こうして構造を定義しておくと、利用者は生ログやSPLを意識することなく、 「どのデータセットの、どのフィールドを、どう集計したいか」を選ぶだけで分析できます。 一度作っておけば、部署内の誰もが同じ定義で一貫した集計を行えるのも利点です。
2. データモデルの作成
データモデルの作成は設定 > データモデル(Settings > Data Models)から行います。 新しいデータモデルを作成し、対象とするイベントを絞り込むための 制約(Constraints)としてサーチ条件を指定します。 そのうえで、分析に使いたいフィールドをデータセットに追加していきます。
index=web sourcetype=access_combined
制約でイベントの範囲を決め、必要なフィールドを構造化しておけば、 あとはピボット画面から集計軸と値を選ぶだけでレポートやグラフを作成できます。
3. アクセラレーションとtstats
データモデルにはデータモデルアクセラレーション(Data Model Acceleration)という 高速化の仕組みがあります。 これを有効にすると、Splunkが対象データを事前に集計・索引化しておき、 大量のデータに対する集計を大幅に高速化できます。
アクセラレーション済みのデータモデルは、tstatsコマンドを使うことで、
生イベントを走査せずに高速に集計できます。
| tstats count from datamodel=Web by Web.status
ただしアクセラレーションは、事前集計データを保持するためのディスク容量を消費します。 対象期間やデータモデルの範囲を広げすぎないよう、必要十分な設定を心がけましょう。
4. まとめ
- データモデルは生ログを構造化し、ピボットでのノーコード分析を可能にする
- オブジェクト/データセットとフィールドの階層で定義し、制約でイベントを絞り込む
- 作成は「設定 > データモデル」から行う
- データモデルアクセラレーションで高速化でき、
tstatsで高速に集計できる