Day 1: Splunkの世界へようこそ
今日学ぶこと
- Splunkとは何か
- Splunkのアーキテクチャ
- インストールとセットアップ
- Web UIの基本操作
- 最初のサーチ
Splunkとは
Splunkはマシンデータ(ログ)を収集・インデックス・検索・分析・可視化するプラットフォームです。サーバーログ、アプリケーションログ、ネットワークデータ、セキュリティイベントなど、あらゆるマシンデータを扱えます。
flowchart LR
subgraph Sources["データソース"]
S1["Webサーバー<br>ログ"]
S2["アプリケーション<br>ログ"]
S3["OS<br>ログ"]
S4["ネットワーク<br>データ"]
end
subgraph Splunk["Splunk"]
Collect["収集"]
Index["インデックス"]
Search["検索・分析"]
Visualize["可視化"]
end
Sources --> Collect --> Index --> Search --> Visualize
style Collect fill:#3b82f6,color:#fff
style Index fill:#8b5cf6,color:#fff
style Search fill:#22c55e,color:#fff
style Visualize fill:#f59e0b,color:#fff
Splunkの主な用途
| 分野 | 用途 |
|---|---|
| ITオペレーション | サーバー監視、障害分析、パフォーマンス管理 |
| セキュリティ | SIEM、脅威検知、インシデント対応 |
| ビジネス分析 | ログベースのKPI分析、ユーザー行動分析 |
| DevOps | CI/CDパイプライン監視、デプロイ追跡 |
| IoT | センサーデータの収集・分析 |
Splunkのアーキテクチャ
Splunkは3つの主要コンポーネントで構成されます。
flowchart TB
subgraph Tier["Splunkの3層構造"]
FW["フォワーダー<br>データ収集・転送"]
IDX["インデクサー<br>データ保存・インデックス"]
SH["サーチヘッド<br>検索・可視化"]
end
FW -->|"データ転送"| IDX
SH -->|"検索リクエスト"| IDX
IDX -->|"検索結果"| SH
style FW fill:#3b82f6,color:#fff
style IDX fill:#22c55e,color:#fff
style SH fill:#f59e0b,color:#fff
| コンポーネント | 役割 | 説明 |
|---|---|---|
| フォワーダー | データ収集 | ログを収集してインデクサーに転送 |
| インデクサー | データ保存 | データをインデックスに格納・検索可能にする |
| サーチヘッド | 検索・表示 | ユーザーインターフェースと検索エンジン |
フォワーダーの種類
| 種類 | 説明 | 用途 |
|---|---|---|
| Universal Forwarder (UF) | 軽量、データ転送のみ | 本番サーバーへの導入 |
| Heavy Forwarder (HF) | フル機能、データ加工可能 | データのフィルタリング・変換 |
インストール
Splunk Enterprise(無料トライアル)
Splunk Enterprise は500MB/日のデータ取り込みまで無料で使えます。
# macOS
brew install --cask splunk
# Linux(tar.gz)
wget -O splunk.tgz "https://download.splunk.com/products/splunk/releases/latest/linux/splunk-latest-Linux-x86_64.tgz"
tar xvzf splunk.tgz -C /opt
# 初回起動
/opt/splunk/bin/splunk start --accept-license
# 管理者ユーザー名とパスワードを設定
Docker で起動
docker run -d \
--name splunk \
-p 8000:8000 \
-p 8089:8089 \
-e SPLUNK_START_ARGS="--accept-license" \
-e SPLUNK_PASSWORD="YourPassword123!" \
splunk/splunk:latest
おすすめ: 学習目的ならDockerが最も手軽です。
アクセス
ブラウザで http://localhost:8000 にアクセスし、設定したユーザー名・パスワードでログインします。
Web UIの基本
flowchart TB
subgraph UI["Splunk Web UI"]
SearchBar["サーチバー<br>SPLクエリを入力"]
TimeRange["時間範囲<br>検索対象期間"]
Results["検索結果<br>イベント一覧"]
Sidebar["フィールドサイドバー<br>フィールド一覧"]
end
SearchBar --> Results
TimeRange --> Results
Sidebar --> Results
style SearchBar fill:#3b82f6,color:#fff
style TimeRange fill:#f59e0b,color:#fff
style Results fill:#22c55e,color:#fff
style Sidebar fill:#8b5cf6,color:#fff
主要画面
| 画面 | パス | 説明 |
|---|---|---|
| サーチ | Search & Reporting | SPLクエリを実行 |
| ダッシュボード | Dashboards | 可視化パネルの一覧 |
| データ入力 | Settings > Data inputs | データソースの設定 |
| インデックス | Settings > Indexes | インデックスの管理 |
最初のデータ取り込み
サンプルデータの追加
- Settings > Add Data を選択
- Upload を選択
- テスト用のログファイルをアップロード
テスト用ログファイルの作成
2026-01-30 10:00:01 INFO [web-server] GET /index.html 200 0.023s user=alice ip=192.168.1.10
2026-01-30 10:00:05 WARN [web-server] GET /api/users 429 0.150s user=bob ip=192.168.1.20
2026-01-30 10:00:10 ERROR [web-server] POST /api/login 500 1.200s user=charlie ip=192.168.1.30
2026-01-30 10:00:15 INFO [web-server] GET /dashboard 200 0.045s user=alice ip=192.168.1.10
2026-01-30 10:00:20 INFO [web-server] GET /api/data 200 0.089s user=dave ip=192.168.1.40
2026-01-30 10:00:25 ERROR [web-server] GET /api/reports 503 2.500s user=eve ip=192.168.1.50
2026-01-30 10:00:30 INFO [web-server] POST /api/upload 201 0.500s user=alice ip=192.168.1.10
2026-01-30 10:00:35 WARN [web-server] GET /api/search 408 5.000s user=bob ip=192.168.1.20
このファイルを
webserver.logとして保存し、Splunkにアップロードしましょう。
最初のサーチ
基本的なサーチ
index=main
すべてのイベントを表示します。
キーワード検索
index=main ERROR
「ERROR」を含むイベントだけを表示します。
時間範囲の指定
サーチバーの横にあるタイムピッカーで時間範囲を設定できます。
| 範囲 | 説明 |
|---|---|
| Last 15 minutes | 過去15分 |
| Last 60 minutes | 過去1時間 |
| Last 24 hours | 過去24時間 |
| Last 7 days | 過去7日間 |
| All time | 全期間 |
SPLの基本構文
index=main sourcetype=access_log status=500
| 要素 | 説明 |
|---|---|
index=main |
検索するインデックス |
sourcetype=access_log |
データの種類 |
status=500 |
フィールドの値で絞り込み |
Splunkの主要概念
| 概念 | 説明 | 例 |
|---|---|---|
| イベント | 1件のログエントリ | 1行のアクセスログ |
| インデックス | データの保存先 | main, security |
| ソースタイプ | データの形式 | syslog, access_combined |
| ソース | データの出処 | /var/log/messages |
| ホスト | データの送信元 | web-server-01 |
| フィールド | イベント内のキー=値 | status=200, user=alice |
flowchart TB
Event["イベント<br>1件のログレコード"]
subgraph Metadata["メタデータ"]
Index["index<br>保存先"]
Source["source<br>ファイルパス"]
Sourcetype["sourcetype<br>データ形式"]
Host["host<br>送信元ホスト"]
end
subgraph Fields["フィールド"]
F1["status=200"]
F2["user=alice"]
F3["ip=192.168.1.10"]
end
Event --> Metadata
Event --> Fields
style Event fill:#3b82f6,color:#fff
style Metadata fill:#22c55e,color:#fff
style Fields fill:#f59e0b,color:#fff
SPL(Search Processing Language)入門
SPLはSplunkのクエリ言語です。**パイプ(|)**でコマンドをつなげてデータを処理します。
index=main ERROR
| stats count by source
| sort -count
flowchart LR
Search["検索<br>index=main ERROR"]
Stats["集計<br>stats count by source"]
Sort["ソート<br>sort -count"]
Search -->|"|"| Stats -->|"|"| Sort
style Search fill:#3b82f6,color:#fff
style Stats fill:#22c55e,color:#fff
style Sort fill:#f59e0b,color:#fff
ポイント: SPLはUNIXのパイプ(
|)と同じ考え方です。前のコマンドの出力が次のコマンドの入力になります。
まとめ
| 概念 | 説明 |
|---|---|
| Splunk | マシンデータの収集・検索・分析プラットフォーム |
| フォワーダー | データを収集・転送 |
| インデクサー | データを保存・インデックス |
| サーチヘッド | 検索・可視化のUI |
| SPL | Splunkのクエリ言語 |
| インデックス | データの保存先 |
| ソースタイプ | データの形式を定義 |
重要ポイント
- Splunkはマシンデータを扱うプラットフォーム
- 3層構造(フォワーダー→インデクサー→サーチヘッド)
- SPLはパイプでコマンドをつなげる
- 無料版は500MB/日まで利用可能
練習問題
問題1: 基本
Splunkをインストールし、サンプルログファイルをアップロードして、全イベントを検索してみましょう。
問題2: 応用
キーワード検索で「ERROR」「WARN」「INFO」それぞれのイベント数を目視で確認してみましょう。
チャレンジ問題
Splunkの公式チュートリアルデータ(tutorialdata.zip)をダウンロードし、取り込んでみましょう。
参考リンク
次回予告: Day 2では「データの取り込み」について学びます。さまざまなデータソースからSplunkにデータを送る方法をマスターしましょう。