0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Splunk検証用データ生成 AIプロンプト日本語と英語 

Posted at

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を書き換えればいいですか?

まとめ

📌 プロンプト作成の黄金律

  1. 具体的に:数値、時間範囲、フィールド名を明示
  2. 文脈を提供:何のダッシュボードか、何を監視するか
  3. 出力形式を指定:SPL、XML、JSON
  4. 異常パターンを含める:現実的なテストには必須
  5. 段階的に精緻化:一度に完璧を求めず、反復改善

これらのプロンプトを使えば、AIが検証用データを即座に生成してくれます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?