Splunk検証用データ生成 AIプロンプト日本語と英語
クラシックダッシュボード用プロンプト集
1️⃣ KPIパネル(単一値)用データ
日本語プロンプト
あなたはSplunkエキスパートです。
クラシックダッシュボードのKPIパネル(単一値表示)用の検証データを生成するSPLを作成してください。
【要件】
- 表示項目: サーバー稼働率
- 計算式: (正常サーバー数 / 全サーバー数) × 100
- 目標値: 99.9%
- 現在値: 99.5% (少し悪化している状態)
- 色の閾値:
* 99.5%以上: 緑
* 99.0-99.5%: 黄
* 99.0%未満: 赤
出力: そのまま使えるSPLクエリ(makeresultsベース)
期待される出力例
| makeresults count=1
| eval total_servers=100,
online_servers=round(random() % 3 + 98, 0),
availability=round((online_servers / total_servers) * 100, 2)
| eval status=case(
availability >= 99.5, "正常",
availability >= 99.0, "注意",
1==1, "警告"
)
| eval color=case(
availability >= 99.5, "#00FF00",
availability >= 99.0, "#FFFF00",
1==1, "#FF0000"
)
| table availability, status, color
| rename availability as "稼働率(%)", status as "ステータス", color as "色"
2️⃣ タイムチャート(折れ線グラフ)用データ
日本語プロンプト
Splunkのクラシックダッシュボードで折れ線グラフを表示したい。
以下の条件で検証用データを生成するSPLを作成してください。
【グラフ仕様】
- 種類: 折れ線グラフ(timechart)
- 時間範囲: 過去24時間
- 時間間隔: 5分ごと
- データ系列: 3本(web-01, web-02, db-01)
【データ特性】
- フィールド名: cpu_usage
- 値の範囲: 20-90%
- トレンド:
* web-01: 午前中高め(60-80%)、午後低め(30-50%)
* web-02: 一定(40-60%)
* db-01: 夜間スパイク(80-90%)、昼間安定(30-40%)
【異常データ】
- web-01で1回だけ95%のスパイクを発生させる
出力: timechartを使ったSPLクエリ
期待される出力例
| makeresults count=288
| streamstats count as seq
| eval _time = relative_time(now(), "-24h") + (seq * 300)
| eval hour = strftime(_time, "%H")
| eval host = case(
seq % 3 == 0, "web-01",
seq % 3 == 1, "web-02",
1==1, "db-01"
)
| eval cpu_usage = case(
host=="web-01" AND hour>=9 AND hour<=12, random() % 20 + 60,
host=="web-01" AND hour>=13 AND hour<=18, random() % 20 + 30,
host=="web-01" AND seq==100, 95,
host=="web-02", random() % 20 + 40,
host=="db-01" AND (hour>=22 OR hour<=6), random() % 10 + 80,
host=="db-01", random() % 10 + 30,
1==1, random() % 30 + 40
)
| fields _time, host, cpu_usage
| timechart span=5m avg(cpu_usage) by host
3️⃣ テーブル表示用データ
日本語プロンプト
クラシックダッシュボードのテーブルパネル用の検証データが欲しい。
【テーブル仕様】
- 列: ホスト名, IPアドレス, CPU使用率, メモリ使用率, ステータス, 最終更新時刻
- 行数: 20行
- ソート: CPU使用率の降順
【データ条件】
- ホスト名: web-01~web-10, db-01~db-05, app-01~app-05
- IPアドレス: 192.168.1.1~192.168.1.20(ホストに対応)
- CPU使用率: 10-95%、80%以上が3台
- メモリ使用率: 30-85%
- ステータス: online/offline/maintenance で95%がonline
- 最終更新時刻: 直近5分以内
出力: tableコマンドを使ったSPL
期待される出力例
| makeresults count=20
| streamstats count as id
| eval host = case(
id <= 10, "web-".id,
id <= 15, "db-".(id-10),
1==1, "app-".(id-15)
)
| eval ip = "192.168.1.".id
| eval cpu_usage = case(
random() % 100 < 15, random() % 15 + 80,
1==1, random() % 70 + 10
)
| eval mem_usage = random() % 55 + 30
| eval status = case(
random() % 100 < 95, "online",
random() % 100 < 98, "maintenance",
1==1, "offline"
)
| eval last_update = relative_time(now(), "-".((random() % 300) + 1)."s")
| eval last_update_str = strftime(last_update, "%Y-%m-%d %H:%M:%S")
| table host, ip, cpu_usage, mem_usage, status, last_update_str
| sort -cpu_usage
| rename host as "ホスト名", ip as "IPアドレス", cpu_usage as "CPU使用率(%)", mem_usage as "メモリ使用率(%)", status as "ステータス", last_update_str as "最終更新"
4️⃣ 円グラフ用データ
日本語プロンプト
円グラフで「エラー種別の割合」を表示したい。
【仕様】
- カテゴリ: timeout, connection_error, auth_failed, server_error, other
- 割合: timeout=40%, connection_error=25%, auth_failed=15%, server_error=10%, other=10%
- 合計件数: 約1000件
出力: 円グラフ用のstatsクエリ
期待される出力例
| makeresults count=1000
| eval rand = random() % 100
| eval error_type = case(
rand < 40, "timeout",
rand < 65, "connection_error",
rand < 80, "auth_failed",
rand < 90, "server_error",
1==1, "other"
)
| stats count by error_type
| sort -count
| eval percentage = round((count / sum(count)) * 100, 1)
| rename error_type as "エラー種別", count as "件数", percentage as "割合(%)"
ダッシュボードスタジオ用プロンプト集
1️⃣ 動的フィルタ連動データ
日本語プロンプト
ダッシュボードスタジオで動的フィルタ(input)と連動するデータを作成したい。
【要件】
- フィルタ項目1: 環境(production, staging, development)
- フィルタ項目2: リージョン(ap-northeast-1, us-east-1, eu-west-1)
- 表示データ: 各環境×リージョンのエラー件数
【データ特性】
- production: エラー少なめ(0-10件)
- staging: エラー中程度(5-30件)
- development: エラー多め(10-100件)
- 時間範囲: 過去1時間、1分ごと
出力: トークン $environment$ と $region$ を使ったSPL
期待される出力例
| makeresults count=60
| streamstats count as minute
| eval _time = relative_time(now(), "-1h") + (minute * 60)
| eval environment = case(
minute % 3 == 0, "production",
minute % 3 == 1, "staging",
1==1, "development"
)
| eval region = case(
minute % 3 == 0, "ap-northeast-1",
minute % 3 == 1, "us-east-1",
1==1, "eu-west-1"
)
| eval error_count = case(
environment=="production", random() % 10,
environment=="staging", random() % 25 + 5,
environment=="development", random() % 90 + 10,
1==1, 0
)
| search environment="$environment$" region="$region$"
| timechart span=1m sum(error_count) as errors
2️⃣ ダッシュボードスタジオ マルチシリーズデータ
日本語プロンプト
ダッシュボードスタジオで複数メトリクスを同時表示したい。
【仕様】
- メトリクス1: リクエスト数(100-500/分)
- メトリクス2: レスポンスタイム(50-300ms)
- メトリクス3: エラー率(0-5%)
- 時間範囲: 過去6時間
- 間隔: 5分
【トレンド】
- リクエスト数: 業務時間(9-18時)に増加
- レスポンスタイム: リクエスト数に比例
- エラー率: ランダムだが時々スパイク
出力: ダッシュボードスタジオ用のmstatsライクなSPL
期待される出力例
| makeresults count=72
| streamstats count as interval
| eval _time = relative_time(now(), "-6h") + (interval * 300)
| eval hour = tonumber(strftime(_time, "%H"))
| eval is_business_hours = if(hour >= 9 AND hour <= 18, 1, 0)
| eval request_count = case(
is_business_hours==1, random() % 400 + 100,
1==1, random() % 100 + 50
)
| eval response_time = case(
request_count > 400, random() % 100 + 200,
request_count > 300, random() % 100 + 150,
1==1, random() % 100 + 50
)
| eval error_rate = case(
random() % 100 < 5, random() % 3 + 3,
1==1, (random() % 20) / 10.0
)
| fields _time, request_count, response_time, error_rate
| rename request_count as "リクエスト数", response_time as "レスポンスタイム(ms)", error_rate as "エラー率(%)"
3️⃣ Trellis Layout(小さな倍数)用データ
日本語プロンプト
ダッシュボードスタジオのTrellis Layout(複数の小グラフ)用データを作りたい。
【要件】
- 分割軸: ホスト(10台)
- 各グラフ: CPU使用率の時系列(過去1時間)
- 特徴: 各ホストで異なるパターンを持たせる
* 3台: 高負荷(70-90%)
* 5台: 通常(30-50%)
* 2台: 低負荷(10-30%)
出力: trellisに適したSPL
期待される出力例
| makeresults count=600
| streamstats count as seq
| eval _time = relative_time(now(), "-1h") + ((seq % 60) * 60)
| eval host = "host-".((seq % 10) + 1)
| eval host_type = case(
host IN ("host-1", "host-2", "host-3"), "high_load",
host IN ("host-4", "host-5", "host-6", "host-7", "host-8"), "normal",
1==1, "low_load"
)
| eval cpu_usage = case(
host_type=="high_load", random() % 20 + 70,
host_type=="normal", random() % 20 + 30,
host_type=="low_load", random() % 20 + 10,
1==1, 50
)
| fields _time, host, cpu_usage
| timechart span=1m avg(cpu_usage) by host
シナリオ別プロンプト集
📈 シナリオ1: ネットワーク監視ダッシュボード
日本語プロンプト
ネットワーク監視ダッシュボードの検証用データを一式作成してください。
【必要なデータ】
1. 帯域使用率(0-100%、5分間隔、24時間分)
2. パケットロス率(0-1%、たまに3%のスパイク)
3. レイテンシ(10-50ms、通常は20ms前後、時々100msのスパイク)
4. インターフェース状態(up/down、99%がup)
5. デバイス(router-01, router-02, switch-01, switch-02, fw-01)
【異常パターン】
- router-01で1回downが発生
- switch-02で帯域使用率が90%を超える時間帯あり
出力:
1. 帯域使用率用SPL
2. パケットロス率用SPL
3. レイテンシ用SPL
4. インターフェース状態用SPL
それぞれ独立したクエリで
期待される出力
/* 1. 帯域使用率 */
| makeresults count=288
| streamstats count as seq
| eval _time = relative_time(now(), "-24h") + (seq * 300)
| eval device = case(
seq % 5 == 0, "router-01",
seq % 5 == 1, "router-02",
seq % 5 == 2, "switch-01",
seq % 5 == 3, "switch-02",
1==1, "fw-01"
)
| eval hour = tonumber(strftime(_time, "%H"))
| eval bandwidth_usage = case(
device=="switch-02" AND hour>=14 AND hour<=16, random() % 10 + 90,
device=="router-01", random() % 30 + 40,
device=="router-02", random() % 30 + 35,
device=="switch-01", random() % 40 + 30,
device=="fw-01", random() % 20 + 20,
1==1, random() % 50 + 20
)
| fields _time, device, bandwidth_usage
| timechart span=5m avg(bandwidth_usage) by device
/* 2. パケットロス率 */
| makeresults count=288
| streamstats count as seq
| eval _time = relative_time(now(), "-24h") + (seq * 300)
| eval device = case(
seq % 5 == 0, "router-01",
seq % 5 == 1, "router-02",
seq % 5 == 2, "switch-01",
seq % 5 == 3, "switch-02",
1==1, "fw-01"
)
| eval packet_loss = case(
random() % 100 < 2, (random() % 20 + 10) / 10.0,
1==1, (random() % 10) / 10.0
)
| fields _time, device, packet_loss
| timechart span=5m avg(packet_loss) by device
/* 3. レイテンシ */
| makeresults count=288
| streamstats count as seq
| eval _time = relative_time(now(), "-24h") + (seq * 300)
| eval device = case(
seq % 5 == 0, "router-01",
seq % 5 == 1, "router-02",
seq % 5 == 2, "switch-01",
seq % 5 == 3, "switch-02",
1==1, "fw-01"
)
| eval latency = case(
random() % 100 < 5, random() % 50 + 80,
1==1, random() % 30 + 15
)
| fields _time, device, latency
| timechart span=5m avg(latency) by device
/* 4. インターフェース状態 */
| makeresults count=20
| streamstats count as id
| eval device = case(
id % 5 == 1, "router-01",
id % 5 == 2, "router-02",
id % 5 == 3, "switch-01",
id % 5 == 4, "switch-02",
1==1, "fw-01"
)
| eval interface = "GigabitEthernet0/".((id % 4) + 1)
| eval status = case(
device=="router-01" AND interface=="GigabitEthernet0/1", "down",
1==1, "up"
)
| eval last_change = relative_time(now(), "-".((random() % 3600) + 1)."s")
| eval last_change_str = strftime(last_change, "%Y-%m-%d %H:%M:%S")
| table device, interface, status, last_change_str
| rename device as "デバイス", interface as "インターフェース", status as "状態", last_change_str as "最終変更"
📊 シナリオ2: アプリケーションパフォーマンス監視
日本語プロンプト
アプリケーションAPM(パフォーマンス監視)用の検証データセットを作成。
【要件】
- アプリケーション: web-app, api-gateway, database
- メトリクス:
1. スループット(req/sec): 100-1000
2. エラー率(%): 0.1-5%
3. P50レスポンスタイム(ms): 50-200
4. P95レスポンスタイム(ms): 100-500
5. P99レスポンスタイム(ms): 200-1000
- 時間範囲: 過去12時間
- 間隔: 1分
【パターン】
- 午前10時にトラフィックスパイク(通常の3倍)
- その際エラー率も上昇(5%まで)
- データベースのP99が悪化(1000ms)
出力: 各メトリクス用のSPL
🔒 シナリオ3: セキュリティ監視(SIEM)
日本語プロンプト
セキュリティ監視ダッシュボード用のログデータを生成したい。
【ログ種別】
1. 認証ログ(成功/失敗)
2. ファイアウォールログ(許可/ブロック)
3. 侵入検知ログ(検知/未検知)
【条件】
- 認証ログ:
* 成功率95%
* 失敗は特定IPから集中(192.168.1.100から10回連続失敗)
* ユーザー: admin, user01-user10
- ファイアウォール:
* ブロック率20%
* ブロック理由: port_scan, malware, suspicious_ip
- 侵入検知:
* 検知率5%
* 重要度: critical/high/medium/low
【時間範囲】
- 過去6時間
- ランダムな時刻
出力: 各ログ種別用のSPL(JSON形式で出力)
英語版プロンプト(English Prompts)
🌐 Basic Template (English)
You are a Splunk expert. Generate SPL query for test data with the following requirements:
【Requirements】
- Number of events: [count]
- Time range: [last X hours/days]
- Time interval: [1m/5m/1h]
【Field Definitions】
1. Field name: [e.g., host]
- Data type: [string/number/timestamp]
- Value type: [random/fixed/from list]
- Example values: [e.g., web-01, web-02, db-01]
2. Field name: [e.g., cpu_usage]
- Data type: [number]
- Value range: [0-100]
- Distribution: [uniform/normal/skewed]
【Special Requirements】
- Include anomalies: [yes/no]
- Include null values: [yes/no]
- Time series trend: [increasing/decreasing/wave/flat]
【Output Format】
- SPL query only
- With comments
- Ready to copy-paste
📈 Timechart Data (English)
Generate SPL for a line chart in Splunk Classic Dashboard.
【Specifications】
- Chart type: Line chart (timechart)
- Time range: Last 24 hours
- Interval: 5 minutes
- Series: 3 hosts (web-01, web-02, db-01)
【Data Characteristics】
- Field: cpu_usage
- Range: 20-90%
- Trends:
* web-01: High in morning (60-80%), low in afternoon (30-50%)
* web-02: Stable (40-60%)
* db-01: Night spike (80-90%), daytime stable (30-40%)
【Anomalies】
- One spike at 95% for web-01
Output: Complete SPL with timechart
🎯 KPI Panel Data (English)
Create test data for a KPI single value panel in Splunk.
【Requirements】
- Metric: Server availability rate
- Formula: (online_servers / total_servers) × 100
- Target: 99.9%
- Current: 99.5% (slightly degraded)
- Color thresholds:
* >= 99.5%: Green
* 99.0-99.5%: Yellow
* < 99.0%: Red
Output: SPL using makeresults
📊 Dashboard Studio Dynamic Filter (English)
Generate data for Dashboard Studio with dynamic filters.
【Requirements】
- Filter 1: Environment (production, staging, development)
- Filter 2: Region (ap-northeast-1, us-east-1, eu-west-1)
- Display: Error count per environment × region
【Data Patterns】
- production: Low errors (0-10)
- staging: Medium errors (5-30)
- development: High errors (10-100)
- Time range: Last 1 hour, every minute
Output: SPL with tokens $environment$ and $region$
高度なテクニック
🎲 リアルなランダムデータ生成
正規分布を使う
Splunkで正規分布に従うCPU使用率データを生成したい。
平均50%、標準偏差15%で、過去1時間、1分間隔。
出力: 正規分布を模擬するSPL
期待される出力:
| makeresults count=60
| streamstats count as minute
| eval _time = relative_time(now(), "-1h") + (minute * 60)
| eval rand1 = (random() % 10000) / 10000.0
| eval rand2 = (random() % 10000) / 10000.0
| eval z_score = sqrt(-2 * ln(rand1)) * cos(2 * 3.14159 * rand2)
| eval cpu_usage = round(50 + (15 * z_score), 2)
| eval cpu_usage = case(
cpu_usage < 0, 0,
cpu_usage > 100, 100,
1==1, cpu_usage
)
| fields _time, cpu_usage
🔄 周期的パターン生成
日本語プロンプト
Webトラフィックの日次パターンを再現したい。
【パターン】
- 深夜(0-6時): 低(100-200 req/min)
- 朝(7-9時): 急増(200-800 req/min)
- 昼間(10-18時): 高(600-1000 req/min)
- 夕方(19-21時): 中(400-600 req/min)
- 夜(22-23時): 低(200-400 req/min)
- 週末は平日の60%
【期間】
- 過去7日間
- 5分間隔
出力: 曜日と時刻を考慮したSPL
トラブルシューティング用プロンプト
🐛 エラーログ生成
Splunkで多様なエラーログを生成したい。
【エラー種別】
- Java例外(NullPointerException, OutOfMemoryError)
- HTTP エラー(400, 404, 500, 503
update
splunk_data_gen_prompts
- HTTP エラー(400, 404, 500, 503)
- データベースエラー(Connection timeout, Deadlock)
- ネットワークエラー(Connection refused, DNS resolution failed)
【特徴】
- エラーメッセージはリアルなスタックトレース付き
- タイムスタンプ、ホスト名、重要度を含む
- 時々連続エラー(バースト)を発生
【件数】
- 過去24時間で500件
- 時間帯によって偏りあり(業務時間に多い)
出力: JSON形式のログを生成するSPL
**期待される出力:**
```spl
| makeresults count=500
| streamstats count as seq
| eval _time = relative_time(now(), "-24h") + (random() % 86400)
| eval hour = tonumber(strftime(_time, "%H"))
| eval is_business_hours = if(hour >= 9 AND hour <= 18, 1, 0)
| eval host = "app-server-".(random() % 5 + 1)
| eval error_type = case(
random() % 100 < 30, "java_exception",
random() % 100 < 60, "http_error",
random() % 100 < 80, "database_error",
1==1, "network_error"
)
| eval severity = case(
random() % 100 < 10, "critical",
random() % 100 < 30, "error",
random() % 100 < 60, "warning",
1==1, "info"
)
| eval error_message = case(
error_type=="java_exception" AND random() % 2 == 0, "java.lang.NullPointerException: Cannot invoke method on null object at com.example.service.UserService.getUser(UserService.java:45)",
error_type=="java_exception", "java.lang.OutOfMemoryError: Java heap space at java.util.HashMap.resize(HashMap.java:704)",
error_type=="http_error", "HTTP ".case(random()%4==0, "400", random()%4==1, "404", random()%4==2, "500", 1==1, "503")." - "case(random()%4==0, "Bad Request", random()%4==1, "Not Found", random()%4==2, "Internal Server Error", 1==1, "Service Unavailable"),
error_type=="database_error" AND random() % 2 == 0, "Database connection timeout: Unable to connect to database server at 192.168.1.50:3306 after 30 seconds",
error_type=="database_error", "Deadlock detected: Transaction rolled back. Conflicting locks on table 'users'",
error_type=="network_error" AND random() % 2 == 0, "Connection refused: Unable to connect to service at api.example.com:443",
error_type=="network_error", "DNS resolution failed: Unknown host api.internal.company.com",
1==1, "Unknown error"
)
| eval log_json = "{\"timestamp\": \"".strftime(_time, "%Y-%m-%dT%H:%M:%S")."\", \"host\": \"".host."\", \"severity\": \"".severity."\", \"error_type\": \"".error_type."\", \"message\": \"".error_message."\"}"
| sort _time
| table _time, host, severity, error_type, error_message, log_json
複雑なシナリオ用プロンプト
🏢 マイクロサービスアーキテクチャ監視
日本語プロンプト
マイクロサービス環境の分散トレーシングデータを生成したい。
【アーキテクチャ】
- サービス構成:
1. frontend(Webフロント)
2. api-gateway(APIゲートウェイ)
3. auth-service(認証サービス)
4. user-service(ユーザーサービス)
5. order-service(注文サービス)
6. payment-service(決済サービス)
7. notification-service(通知サービス)
【データ要件】
- トレースID(リクエスト全体を通して一意)
- スパンID(各サービス呼び出しで一意)
- 親スパンID(呼び出し元のスパンID)
- サービス名
- 処理時間(ms)
- ステータス(success/error)
【呼び出しフロー例】
frontend → api-gateway → auth-service → user-service → order-service → payment-service → notification-service
【異常パターン】
- payment-serviceで5%の確率でタイムアウト(3000ms超)
- auth-serviceで2%の確率で認証失敗
【件数】
- 100トレース(各トレースは7スパン)
出力: トレースデータを生成するSPL
📡 IoTセンサーデータ
日本語プロンプト
IoTセンサーからのテレメトリデータを生成したい。
【センサー構成】
- 温度センサー: 50台(temp-sensor-01 ~ temp-sensor-50)
- 湿度センサー: 50台(humidity-sensor-01 ~ humidity-sensor-50)
- 圧力センサー: 20台(pressure-sensor-01 ~ pressure-sensor-20)
【データ特性】
- 温度: 15-35℃(正規分布、平均25℃、標準偏差5℃)
- 湿度: 30-80%(正規分布、平均50%、標準偏差15%)
- 圧力: 990-1030hPa(ほぼ一定、たまに気圧変化)
【異常検知】
- センサー3台が故障(nullデータ送信)
- センサー2台が異常値(温度が100℃超)
【送信間隔】
- 10秒ごと
- 過去1時間分
出力: IoTデータストリームを模擬するSPL
期待される出力:
| makeresults count=360
| streamstats count as seq
| eval _time = relative_time(now(), "-1h") + ((seq % 360) * 10)
| eval sensor_type = case(
seq % 120 < 50, "temperature",
seq % 120 < 100, "humidity",
1==1, "pressure"
)
| eval sensor_id = case(
sensor_type=="temperature", "temp-sensor-".((seq % 50) + 1),
sensor_type=="humidity", "humidity-sensor-".((seq % 50) + 1),
sensor_type=="pressure", "pressure-sensor-".((seq % 20) + 1),
1==1, "unknown"
)
| eval is_faulty = case(
sensor_id IN ("temp-sensor-05", "humidity-sensor-12", "pressure-sensor-03"), 1,
1==1, 0
)
| eval is_anomaly = case(
sensor_id IN ("temp-sensor-15", "temp-sensor-32"), 1,
1==1, 0
)
| eval rand1 = (random() % 10000) / 10000.0
| eval rand2 = (random() % 10000) / 10000.0
| eval z_score = sqrt(-2 * ln(rand1)) * cos(2 * 3.14159 * rand2)
| eval value = case(
is_faulty==1, null(),
is_anomaly==1 AND sensor_type=="temperature", 100 + (random() % 20),
sensor_type=="temperature", round(25 + (5 * z_score), 1),
sensor_type=="humidity", round(50 + (15 * z_score), 1),
sensor_type=="pressure", round(1013 + (random() % 20 - 10), 1),
1==1, 0
)
| eval value = case(
sensor_type=="temperature" AND value < 15, 15,
sensor_type=="temperature" AND value > 35, 35,
sensor_type=="humidity" AND value < 30, 30,
sensor_type=="humidity" AND value > 80, 80,
sensor_type=="pressure" AND value < 990, 990,
sensor_type=="pressure" AND value > 1030, 1030,
1==1, value
)
| eval unit = case(
sensor_type=="temperature", "℃",
sensor_type=="humidity", "%",
sensor_type=="pressure", "hPa",
1==1, ""
)
| eval status = case(
is_faulty==1, "offline",
is_anomaly==1, "anomaly",
1==1, "normal"
)
| fields _time, sensor_id, sensor_type, value, unit, status
| table _time, sensor_id, sensor_type, value, unit, status
超高度プロンプト:完全自動生成
🤖 完全自動ダッシュボード生成プロンプト
以下のビジネス要件から、Splunkダッシュボードの検証用データとXMLコードを全自動生成してください。
【ビジネス要件】
目的: ECサイトのリアルタイム監視
監視対象:
- ユーザーアクティビティ
- トランザクション成功率
- カート放棄率
- ページ読み込み時間
【データ生成要件】
1. ユーザーアクティビティ:
- アクティブユーザー数: 100-5000人(時間帯で変動)
- ピーク時間: 12-14時, 19-21時
- データ間隔: 1分
- 期間: 過去24時間
2. トランザクション成功率:
- 成功率: 通常95-99%
- 決済ゲートウェイ障害時: 70%に低下(1回発生)
- データ間隔: 5分
3. カート放棄率:
- 通常: 60-70%
- UX改善後(12時以降): 50-60%に改善
- データ間隔: 10分
4. ページ読み込み時間:
- P50: 500-1000ms
- P95: 1500-3000ms
- P99: 3000-5000ms
- データ間隔: 1分
【出力】
1. 各メトリクス用のSPLクエリ(4つ)
2. クラシックダッシュボードのXMLコード(完全版)
3. ダッシュボードスタジオのJSON定義(完全版)
全て即座にコピペで動作するコードで提供してください。
チートシート:よく使うパターン
⚡ クイックリファレンス
1. 時系列データ(timechart)
| makeresults count=[件数]
| streamstats count as seq
| eval _time = relative_time(now(), "[開始時刻]") + (seq * [間隔秒])
| eval [フィールド名] = [計算式]
| timechart span=[間隔] [集計関数]([フィールド]) by [グループ]
2. カテゴリ別集計(stats)
| makeresults count=[件数]
| eval [カテゴリフィールド] = case([条件式])
| stats count by [カテゴリフィールド]
3. 正規分布データ
| eval rand1 = (random() % 10000) / 10000.0
| eval rand2 = (random() % 10000) / 10000.0
| eval z_score = sqrt(-2 * ln(rand1)) * cos(2 * 3.14159 * rand2)
| eval [フィールド] = [平均] + ([標準偏差] * z_score)
4. JSONログ形式
| eval log_json = "{\"field1\": \"".value1."\", \"field2\": ".value2."}"
5. 時刻パターン(業務時間判定)
| eval hour = tonumber(strftime(_time, "%H"))
| eval is_business_hours = if(hour >= 9 AND hour <= 18, 1, 0)
プロンプト最適化のコツ
✅ 良いプロンプトの例
✅ 具体的な数値を指定
「CPU使用率: 20-80%、平均50%」
✅ データの特徴を明記
「業務時間(9-18時)は高く、夜間は低い」
✅ 異常パターンを具体化
「1回だけ95%のスパイクを12時に発生」
✅ 出力形式を明示
「timechartを使ったSPL」「JSON形式で」
✅ 期待される結果を示す
「そのままコピペで動くコード」
❌ 悪いプロンプトの例
❌ 曖昧な表現
「それっぽいデータ」「適当に」
❌ 条件不足
「グラフ用のデータください」
❌ 範囲が不明確
「過去のデータ」(何時間?何日?)
❌ 形式の指定なし
「検証データ作って」(SPL?CSV?JSON?)
ボーナス:AI連携テクニック
🔗 連続プロンプトパターン
【第1プロンプト】
Splunkでネットワーク監視用の検証データを作成したい。
基本的なSPLクエリを生成してください。
【第2プロンプト(AIの回答を受けて)】
ありがとうございます。
このデータに「異常検知」のパターンを追加したいです。
- 帯域使用率が90%を超える
- パケットロスが3%を超える
この2つの異常を5%の確率で発生させるように修正してください。
【第3プロンプト(さらに精緻化)】
完璧です!
最後に、このデータを使ったクラシックダッシュボードのXMLコードも生成してください。
- 折れ線グラフ2つ(帯域使用率、パケットロス)
- テーブル1つ(異常イベント一覧)
- KPIパネル1つ(総異常件数)
🎯 フィードバックループ
【初回プロンプト】
[あなたの要件]
【AIの回答を確認後】
ほぼ完璧ですが、以下を修正してください:
1. [修正点1]
2. [修正点2]
【最終調整】
完璧です!これを実際のインデックスデータに適用する場合、
どのようにSPLを書き換えればいいですか?
まとめ
📌 プロンプト作成の黄金律
- 具体的に:数値、時間範囲、フィールド名を明示
- 文脈を提供:何のダッシュボードか、何を監視するか
- 出力形式を指定:SPL、XML、JSON
- 異常パターンを含める:現実的なテストには必須
- 段階的に精緻化:一度に完璧を求めず、反復改善
これらのプロンプトを使えば、AIが検証用データを即座に生成してくれます!