はじめまして。NTTドコモサービスデザイン部の三輪と申します。NTTドコモ R&D Advent Calendar 2025の19日目を担当いたします。
本記事では、ログの統合分析プラットフォームであるSplunk Cloudにおけるダッシュボードについて、その作り方やTipsについてご紹介します!
1. Splunkとは?
過去のNTTドコモ R&D Advent Calendarで私の先輩方が執筆した「かゆい所に手が届く!Splunk活用術」や「クラスタ構成におけるサーチを止めない再起動の方法」でも登場した以下の図を使って説明します。
(画像引用) https://docs.splunk.com/File:Horizontal_scaling_new2_60.png
これまでの記事ではオンプレミス型のSplunk Enterpriseについて説明していましたが、本記事ではSoftware as a Service (SaaS) 製品であるSplunk Cloudについて説明します。Splunk Cloudでは、上記画像のSearch Head (SH) とIndexers (IDX) はクラウド上で提供されているため、ユーザー側はログの生成元となる業務サーバーやFirewallなどのセキュリティ機器にForwarders (FWD) を導入すればログの統合分析を始めることができます。ログの流れとしては次のようになります。
- 業務サーバーやFirewallなどでログが生成される
- 業務サーバー本体や、ログ中継用に用意したサーバーにインストールしたFWDによってSplunk CloudのIDXにログが転送される
- Splunk CloudのIDXによってログが格納(インデクシング)される
- Splunk CloudのGUI上でSHを操作し、Search Processing Language (SPL) を駆使してログを分析し、必要な情報を抽出する
2. ダッシュボードとは?
Splunkについてざっくり知っていただけたところで、次はダッシュボードの説明をします。先ほどSPLを駆使してログを分析し、必要な情報を抽出すると簡単に言いましたが、それって実は大変じゃないでしょうか? 例えば次のSPLを見てください。
index=system_ips priority=high NOT [| inputlookup allowlist.csv | table signature_id] | timechart span=1d dc(src_ip) AS count
このSPLはindex=system_ipsにあるpriority=highとなっているログの中から、allowlist.csvに登録されているsignature_idを除外し、ユニークなsrc_ipの数を1日単位で数えるという処理を行います。
ある程度SPLに触れた経験のある方なら理解できるし、自分で記述することもできると思います。 しかし、このような統計処理されたデータを見るのは必ずしもSPLの知識が豊富なエンジニアのみとは限りません。例えば、経営層やSplunkにログを連携しているシステムの主管部など、普段Splunkには触れない人が自社や自システムに対するサイバー攻撃の傾向を知るために見たいという要望があるでしょう。
そんな時、あらかじめ決められた情報をSPLに触れることなく手軽に確認可能とするのがダッシュボードです。
3. ダッシュボードの作り方
ダッシュボードの作成は、基本的には「パネルの追加」と「SPLの設定」を行うだけでOKです。 本記事では、GUIベースで簡単に高機能なダッシュボードを作成できるDashboard Studioを使うことを想定して説明します。
[パネルの追加]
Dashboard Studioでは、データ可視化の様々なニーズに対応する多様なパネルが用意されています。 ここでは、2. ダッシュボードとは?の中で例示したSPLでも扱ったtimechartコマンドの結果に対してよく使用される縦棒グラフを使用します。

[SPLの設定]
パネルを追加したら、次にそのパネルで使用するデータソースとなるSPLを設定します。 デフォルト設定のままパネルを表示するだけなら、ここまでの手順で完了です。 より詳しい作成手順やカスタマイズ方法を知りたい方はこちらの公式ドキュメント(Dashboard Studio:ダッシュボードのカスタマイズが簡単に | Splunk)が参考になると思います!

4. 便利なTips
それではここからは、ダッシュボードを作成する上で著者が実践したコツや機能をリッチにするためのTipsをいくつかご紹介します。
アノテーション
データに特異な点がある場合など、時系列表示したグラフ上にその説明(例: なぜこの日だけ攻撃が多いのか)を記載したい!と感じることがあると思います。 この要望に対して、Splunkダッシュボードではグラフ上にアノテーションを挿入することができます。 こちらの公式ドキュメント(Add secondary data sources to your visualization | Splunk Docs)ではSPLの中でコメントを定義する例が紹介されていますが、著者が実施したのは下記です。
[事前準備]
lookupとして、下表のように挿入したい説明と時刻を記載したcsvファイルを用意します。このようにすることで、SPLの知識がなくてもSplunk CloudのGUI上で説明を記載することができます。
| Date | Comment |
|---|---|
| 2025/04/25 | ~~からの不正アクセスを多数検知 |
| 2025/05/07 | ~~のリリースに伴い~~への攻撃が一時的に多発 |
[表示する際の工夫]
本記事の執筆時点において、アノテーションとして表示できるのは著者調べで全角40文字程度だったため、日本語の長文コメントを表示することはできません。加えて、マウスをホバーさせている間しかコメントは表示されないので、例えばスクリーンショットを取得する際に複数コメントが映らないという問題もあります。 そこで、アノテーションの挿入に加えてグラフの隣にcsvの内容をテーブル表示するパネルを追加することにしました。このようにすることで、グラフ上で「コメントがあることと、それがどの時間帯のイベントに対応するものか」を把握し、コメントの全文は常に隣のテーブルで確認できるようになります。

タイムレンジピッカーの参照
ダッシュボードの基本的な使い方として、表示するデータを時間でフィルタリングすることがあります。具体的には、ダッシュボード上にタイムレンジピッカーを配置し、パネルにSPLを設定する際にその選択内容を参照する設定を行うことで実現できます。
パネルに設定するSPLについて、時間でフィルタリングするのがindexのみの場合は前述の方法で問題ありませんが、lookupに対しても時間でフィルタリングをかけたい場合は、もうひと手間必要になります。
※後で紹介する「トークンの埋め込み」でも実現できますが、UNIX時間に変換する処理が必要となるので以下の方法を推奨します。
| inputlookup allowlist.csv | addinfo | where (_time>=info_min_time AND _time<info_max_time)
上のSPLは、allowlist.csvというlookupの_timeというフィールドにUNIX時間表記の時刻情報が入っているという想定です。 ここで、addinfoはそのサーチに関する情報をフィールドとして追加するコマンドです。 (参考: addinfo | Splunk Docs) このとき、info_min_timeとinfo_max_timeにはタイムレンジピッカーで選択した時間範囲の最小値と最大値がUNIX時間表記でそれぞれ入るので、whereコマンドによって時間フィルタリングが実行されることになります。
チェーンサーチ
ダッシュボード上の複数のパネルで同じような情報を複数回使う場合、SPLを前半の情報を取ってくる部分(Base search)と後半の情報を分析する部分(Chain search)に分けて、前半を複数のパネルで共用し、後半を各パネルで使用することで計算リソースを削減することができます。 (公式ドキュメント: Chain searches together with a base search and chain searches | Splunk Docs)
このとき、Base searchはTransforming search(stats, chartコマンドなどを用いて結果が統計処理されたテーブル形式になるもの)にすることが推奨されています。
もしも何らかの理由でBase searchをTransforming searchとしない場合は、次のことに留意してください。
※SPLに用意されているコマンドの種類はこちらの公式ドキュメント(Command types | Splunk Docs)で確認できます。
- 統計処理を行わずに生のイベントをChain searchに渡す際は、イベント件数の上限はデフォルトでは50万件となり、それ以上のイベントは(無警告で)無視されます(v10.1.2507時点の仕様)。
- fieldsコマンドを用いてChain searchで使用するフィールドを明示する必要があります。
トークンの埋め込み
ダッシュボード上のインタラクティブなコンテンツ(例: タイムレンジピッカーで時間を選択するとその内容がパネルに反映される)は、トークンを用いて実現されています。トークンは一般のプログラミングにおける変数のようなもので、一つのダッシュボードの中ではタブを跨いで共有されます。 代表的な使い方はこちらの公式ドキュメント(Token usage in dashboards | Splunk Docs)に記載されているので、ここでは少し変わった使い方を紹介します。
[モチベーション]
Splunkのダッシュボードは基本的には数字を様々な方法で可視化する場所ですが、一定期間のデータについて文章で簡単な説明を行いたいような場面もあると思います。ここで、ダッシュボード上でマークダウンパネルを用いれば、マークダウン記法を使用して文章を記述することができます。 しかしながら、このままでは文章を書き替えるには誰かがダッシュボードを直接編集しなくてはなりません。
[改善策]
まず、lookupに「日付」と「マークダウン記法で記述した文章」を記入します(ここでは"Body"というフィールドに記入すると想定します)。
| Date | Body |
|---|---|
| 2025/12/01 | # DDoS 先週と比較して~~に対する攻撃件数の増加が顕著である。 # 不正アクセス 以下システムに対して不正アクセスを試みた痕跡がありますが、適切にブロックしており不正アクセスは成功していません。 - システムA - システムB |
次に、ダッシュボードのデータソースとしてそのlookupを参照するSPLを登録し、下記画像の通り「サーチ結果またはメタデータにアクセス」にチェックを入れます。すると、下記のようなトークンにフィールドの値を設定することができます。 (参考: Setting tokens from search results or search job metadata | Splunk Docs)
$<データソース名>:result.<フィールド名>$
したがって下記画像の例の場合では、マークダウンパネルに次のように記載することで、lookupに登録したマークダウン記法を反映した形でダッシュボードに文章が表示されます。
$Executive_summary:result.Body$
このように実装すると、lookupに日付と文章を追記するだけで、ダッシュボード上のタイムレンジピッカーの選択値に応じた文章が動的に表示されるようになります。

ダッシュボードの自動更新
Splunkには時々刻々と新しいログが転送されてきます。一方、デフォルト状態ではダッシュボード上のパネルはページのリロードやタイムレンジの変更を行わないと更新されないようになっています。 これに対して、以下の設定を行うことでダッシュボードの自動更新を設定することができます。 (参考: Set global and local defaults | Splunk Docs)
まず、ダッシュボードの編集画面からダッシュボードのソースコードを表示させます。その中の"defaults"セクションの"options"に"refresh"を追加して任意の値を設定すると、ダッシュボードを表示させているだけであっても、設定した時間間隔で自動更新されるようになります。
"defaults": {
"dataSources": {
"global": {
"options": {
"refresh": "1m"
}
}
}
}
[注意事項]
- 更新間隔を短くすると高負荷となるため、必要以上に短くしない。
- 著者の経験上、ダッシュボード上のパネルの数が多いとエラーが出やすいため、ダッシュボード作成直後に当該設定を行うことを推奨する。
ダッシュボードの公開
上述のような様々な工夫を凝らした最強のダッシュボードを作成したら、次は色々な人に見てもらいたいと思うのではないでしょうか。しかしながら、単にダッシュボードを見てもらいたいだけなのにわざわざSplunkアカウントを作成するのは面倒ですよね...。 そんな時、ダッシュボードの公開機能が実装されました(Splunk Cloud v9.3.2411以降)。 これは、ログイン不要でダッシュボードを閲覧可能となる機能であり、これを以ってSplunkアカウントを持たないユーザーでも公開URLさえ知っていれば簡単にダッシュボードを閲覧可能になります。(公式ドキュメント: Dashboard Studio:ダッシュボードがもっと使いやすく | Splunk)
[注意事項]
- ダッシュボードの公開設定画面においてデータの更新頻度をcron表記などで設定可能ですが、背後では公開URLを取得したアカウント名義でスケジュールサーチが登録されます(リソース消費を伴う)。
- 公開URLからアクセスしたダッシュボード上では、タイムレンジピッカーなど、あらゆるオブジェクトについて操作することはできません。
- Splunk CloudへのアクセスについてIPアドレス制限などが設けられている場合、公開URLに対してもそのアクセス制限が引き継がれます。
5. おわりに
本記事では、Splunkでのダッシュボードの作り方や便利なTipsをご紹介しました。著者もダッシュボード作成を始めたばかりでまだまだ学ぶべきことは沢山ありますが、本記事の内容がどなたかの参考になりましたら幸いです。
