mcpField
D
dt-obs-problems

dt-obs-problems

github.com/dynatraceクラウド・DevOps1692.7k 回インストール今日更新
リポジトリ

dt-obs-problems について

Dynatrace が検出した問題を分析するスキルです。問題のトリアージ、根本原因と影響の調査、再発パターンの分析に向けた DQL クエリの指針を提供します。

主な機能

  1. 01アクティブな問題の優先順位付け
  2. 02根本原因と影響対象の追跡
  3. 03再発する問題と傾向の分析
  4. 04イベントの関連付けと影響評価

活用シーン

  1. 01可用性やサービスの現在の問題をトリアージ
  2. 02問題の根本原因と影響範囲の特定
  3. 03再発する問題と解決時間の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-obs-problems

インストール後、Claude Code で/dt-obs-problemsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
impact-analysis.md
problem-correlation.md
problem-merging.md
problem-trending.md

詳細

問題分析スキル

Dynatrace が AI で検出した問題を分析します。根本原因の特定、影響評価、ログおよびメトリクスとの相関分析を行います。


ユースケース

1. アクティブな問題のトリアージ
  • 目標: 現在アクティブな問題を一覧表示し、優先順位を付けます
  • トリガー: 「アクティブな問題」、「未解決の問題は何か」、「現在の課題」、「可用性の問題」
  • 完了条件: カテゴリ、ユーザーへの影響、表示 ID を含む、優先順位付けされたアクティブな問題の一覧
2. 根本原因の調査
  • 目標: 特定の問題の根本原因となるエンティティを特定します
  • トリガー: 「P-12345 の根本原因」、「この問題の原因は何か」、「根本原因となるエンティティはどれか」
  • 完了条件: 影響を受けるエンティティの一覧と影響範囲を含む、根本原因エンティティの特定
3. 問題の傾向分析
  • 目標: 問題のパターンを経時的に分析し、繰り返し発生する問題を特定します
  • トリガー: 「繰り返し発生する問題」、「問題の履歴」、「過去 30 日間の問題の傾向」
  • 完了条件: 問題の発生頻度、繰り返し発生する根本原因、解決時間を示す傾向データ

概要

Dynatrace は環境全体の異常、パフォーマンスの低下、障害を自動的に検出し、関連するアラート、警告、情報レベルのイベントを集約して根本原因と影響に関する分析情報を提供する問題を作成します。

問題とは

問題とは、ソフトウェアやインフラストラクチャの健全性およびレジリエンスに関する問題で、自動的に検出され、次の特徴があります。

  • サービス、インフラストラクチャ、フロントエンドアプリケーション、ユーザーセッションにまたがる関連するアラート、警告、情報レベルのイベントを自動的に相関付ける
  • Smartscape の依存関係の因果分析を使用して根本原因を特定する
  • 影響を受けるユーザーとサービスを追跡してビジネスへの影響を評価する
  • 同じ根本原因と影響を共有する関連症状を単一の問題にまとめてアラートノイズを低減する
  • 早期検出から解決までの問題のライフサイクルを追跡する
イベントの種類

event.kind フィールド(安定、権限)は、イベントの大まかな種類を識別します。

event.kind の値説明
DAVIS_EVENTDavis が検出したインフラストラクチャ/アプリケーションのイベント
BIZ_EVENTビジネスイベント(API 経由で取り込まれたもの、またはスパンから取得されたもの)
RUM_EVENTReal User Monitoring のイベント
AUDIT_EVENT管理/セキュリティ監査イベント

event.provider(安定、権限)はイベントのソースを識別します。

問題のカテゴリ

一般的な event.category の値:

カテゴリ説明例
AVAILABILITYインフラストラクチャまたはサービスが利用不能Web サービスからデータが返されない、合成テストが実際に失敗する、データベース接続が失われる
ERRORベースラインを超えるエラー率の増加API のエラー率が 0.1% から 15% に上昇
SLOWDOWNパフォーマンスの低下応答時間が 200ms から 5000ms に増加
RESOURCEリソースの飽和コンテナのメモリ使用率が 95% に達し、OOM による強制終了が発生
CUSTOMカスタムの異常検出ビジネス KPI(分あたりの注文数)がしきい値を下回る

問題のライフサイクル

Detection → ACTIVE → Under Investigation → CLOSED
  • ACTIVE:現在発生中で、対応が必要な問題
  • CLOSED:解決済みの問題。履歴分析に使用します

重要なフィールド

よくあるフィールド名の誤り
❌ 誤り✅ 正しい値説明
titleevent.name問題のタイトル/説明
statusevent.status問題のライフサイクル状態
severityevent.category問題の種類/カテゴリ
startevent.start問題の開始時刻
正しいステータス値
// ✅ CORRECT: Use these status values
fetch dt.davis.problems
| filter event.status == "ACTIVE"   // Currently occurring problems
//     or event.status == "CLOSED"  // Resolved problems
// ❌ INCORRECT: event.status == "OPEN" does not exist!
| limit 1
主要フィールドのリファレンス
fetch dt.davis.problems, from:now() - 1h
| filter not(dt.davis.is_duplicate)
| fields
    event.start,                          // Problem start timestamp
    event.end,                            // Problem end timestamp (if closed)
    display_id,                           // Human-readable problem ID (P-XXXXX)
    event.name,                           // Problem title
    event.description,                    // Detailed description
    event.category,                       // Problem type
    event.status,                         // ACTIVE or CLOSED
    dt.smartscape_source.id,              // The smartscape ID for the affected resource
    dt.davis.affected_users_count,        // Number of affected users
    affected_entity_ids = smartscape.affected_entities[][id],  // Array of affected entity IDs
    dt.smartscape.service,                // Affected services (may be array)
    dt.davis.root_cause_entity,           // Entity identified as root cause
    root_cause_entity_id,                 // Root cause entity ID
    root_cause_entity_name,               // Human-readable root cause name
    dt.davis.is_duplicate,                // Whether duplicate detection
    dt.davis.is_rootcause                 // Root cause vs. symptom
| limit 10

標準的なクエリパターン

問題のクエリは、必ず次の基本パターンから始めます。

fetch dt.davis.problems, from:now() - 2h
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| fields event.start, display_id, event.name, event.category
| sort event.start desc
| limit 20

主要な構成要素:

  • fetch dt.davis.problems - 問題のデータソース
  • not(dt.davis.is_duplicate) - 重複検出を除外します
  • event.status == "ACTIVE" - アクティブな問題のみを表示します
  • 時間範囲 - 常に適切な範囲を指定します

よく使うクエリパターン

カテゴリ別のアクティブな問題
fetch dt.davis.problems
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| summarize problem_count = count(), by: {event.category}
| sort problem_count desc
多くのユーザーに影響する、影響度の高いアクティブな問題
fetch dt.davis.problems
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter dt.davis.affected_users_count > 100
| fields event.start, display_id, event.name, dt.davis.affected_users_count, event.category
| sort dt.davis.affected_users_count desc
多くのスマートスケープエンティティに影響する、影響度の高いアクティブな問題
fetch dt.davis.problems
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter arraySize(affected_entity_ids) > 5
| fields event.start, display_id, event.name, affected_entity_ids, event.category, impacted_entity_count = arraySize(affected_entity_ids)
| sort impacted_entity_count desc
特定の問題の詳細
fetch dt.davis.problems
| filter display_id == "P-XXXXXXXXXX"
| fields event.start, event.end, event.name, event.description, affected_entity_ids, dt.davis.affected_users_count, root_cause_entity_id, root_cause_entity_name
サービス固有の問題の履歴
fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter in(dt.smartscape.service, toSmartscapeId("SERVICE-XXXXXXXXX"))
| summarize problems = count(), by: {event.category, event.status}

根本原因分析のパターン

基本的な根本原因のクエリ
fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| fields
    display_id,
    event.name,
    event.description,
    root_cause_entity_id,
    root_cause_entity_name,
    affected_entity_ids = smartscape.affected_entities[][id]
エンティティタイプ別の根本原因

問題の原因となる頻度が最も高いエンティティタイプを特定します。

fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter isNotNull(root_cause_entity_id)
| summarize problem_count = count(), by:{root_cause_entity_name}
| sort problem_count desc
| limit 20
影響を受けるエンティティが AWS リソースの場合
fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter iAny(startsWith(smartscape.affected_entities[][type], "AWS_"))
サービスへの影響を伴うインフラストラクチャの根本原因
fetch dt.davis.problems, from:now() - 30m
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter matchesPhrase(root_cause_entity_id, "HOST-")
| filter isNotNull(dt.smartscape.service)
| fields display_id, event.name, root_cause_entity_name, dt.smartscape.service
問題の影響範囲

根本原因ごとにエンティティへの影響を算出します。

fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter isNotNull(root_cause_entity_id)
| fieldsAdd affected_count = arraySize(smartscape.affected_entities)
| summarize
    avg_affected = avg(affected_count),
    max_affected = max(affected_count),
    problem_count = count(),
    by:{root_cause_entity_name}
| sort avg_affected desc
繰り返し発生する根本原因

問題を繰り返し引き起こすエンティティを特定します。

fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate)
| filter isNotNull(root_cause_entity_id)
| summarize
    problem_count = count(),
    first_occurrence = min(event.start),
    last_occurrence = max(event.start),
    by:{root_cause_entity_id, root_cause_entity_name}
| filter problem_count > 3
| sort problem_count desc
原因カテゴリと根本原因のエンティティ

これらは異なる質問です。適切な方法を選択してください。

  • 「何が問題を引き起こしますか?」/「最も一般的な原因」 → event.category で集計します。 (SLOWDOWN、ERROR、RESOURCE、AVAILABILITY、CUSTOM)。各カテゴリを引き起こす要因を説明します。
  • 「どのエンティティが問題を引き起こしますか?」/「根本原因のエンティティ」 → root_cause_entity_name でグループ化します。特定のサービス、ホスト、アプリが一覧表示されます。

原因カテゴリの内訳(一般的な原因、パターン、種類について尋ねられた場合に使用します):

fetch dt.davis.problems, from:now() - 30d
| filter not(dt.davis.is_duplicate)
| summarize problem_count = count(), by: {event.category}
| sort problem_count desc

次に、Problem Categories テーブルを使って各カテゴリの発生要因を説明し、テナントデータ内の具体的なエンティティを例として挙げます。

問題の傾向とパターン分析

問題の傾向を時系列で追跡し、繰り返し発生する問題を特定して、解決状況を分析します。

主なファイル:

  • references/problem-trending.md - 時系列分析とパターン検出

一般的なユースケース:

  • makeTimeseries を使った、時間経過に伴うアクティブな問題の分析
  • カテゴリ別の問題発生率
  • スケジュールに基づく繰り返し発生する問題の検出
  • 解決時間の傾向と P95 継続時間の分析

主な手法:

  • makeTimeseries と bin():ライフサイクルのスパンと個別のイベントに応じて適切な方法を選択します
  • NULL の処理:アクティブな問題には coalesce(event.end, now()) を使用します
  • ピーク時間の分析:問題が最も頻繁に発生する時間を特定します
  • 影響の傾向分析:時間経過に伴うユーザーへの影響の変化を追跡します

クエリのパターンとベストプラクティスについて詳しくは、references/problem-trending.md を参照してください。

ドメイン横断の問題クエリ

Kubernetes クラスターに関連する問題

Kubernetes に関連する問題を見つけるには、affected_entity_ids または dt.smartscape_source.id を使用します。

fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter matchesPhrase(dt.smartscape_source.id, "KUBERNETES_CLUSTER")
    OR matchesPhrase(dt.smartscape_source.id, "K8S_")
| fields event.start, display_id, event.name, event.category, event.status,
    dt.smartscape_source.id, affected_entity_ids
| sort event.start desc

別の方法として、影響を受けるエンティティを展開し、K8s エンティティタイプでフィルタリングします。

fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| expand entity_id = affected_entity_ids
| filter matchesPhrase(entity_id, "KUBERNETES_CLUSTER")
    OR matchesPhrase(entity_id, "K8S_")
| fields event.start, display_id, event.name, event.category, entity_id
| sort event.start desc
問題の簡易一覧

過去 24 時間のすべての問題を一覧表示します(よくあるリクエスト)。

fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate)
| fields event.start, event.end, display_id, event.name, event.category, event.status
| sort event.start desc

回答の作成

問題の原因の要約

問題の原因、カテゴリ、パターンを要約する際は、データに含まれるすべての標準カテゴリ(AVAILABILITY、ERROR、SLOWDOWN、RESOURCE、CUSTOM)について、包括的な内訳を示してください。該当する各カテゴリについて、次の内容を説明します。

  1. カテゴリ名と問題の件数
  2. 発生要因 — 簡潔な説明(例:RESOURCE = CPU/メモリ/ディスクのしきい値超過、AVAILABILITY = サービスまたはエンティティに到達不能)
  3. テナントのデータに基づく具体的な例(影響を受けるエンティティ名、問題 ID)

最初の 2 つのカテゴリだけで終わらせないでください。ユーザーは全体像を求めています。発生要因の説明には、上記の Problem Categories テーブルを参照してください。

分析結果

クエリ結果を提示する際は、次の点に従ってください。

  • エンティティ名(ID だけではなく)を含めます。ただし、効率的な方法を選んでください。
    • エンティティが少ない場合(5 未満): get-entity-name の呼び出しで問題ありません
    • エンティティが多い場合: 名前を直接返す query-problems ツールを使用するか、DQL クエリに root_cause_entity_name/entityName() を含めてインラインで名前を解決します。10 個以上のエンティティに対して get-entity-name をループで呼び出すのは避けてください。ツール呼び出しの上限に達し、回答を返せなくなる可能性があります。
  • 特定した原因に沿った実行可能な推奨事項を提示します
  • 優先順位を付けやすいように、頻度または影響度で整理します

ベストプラクティス

必須ルール
  1. 重複は必ず除外する:同じ問題を複数回カウントしないよう、not(dt.davis.is_duplicate) を使用します
  2. 正しいステータス値を使用する:"ACTIVE" または "CLOSED" を使用し、"OPEN" は使用しないでください
  3. 時間範囲を指定する:パフォーマンスを最適化するため、必ず時間範囲を指定します
  4. display_id を含める:問題の特定とリンクに不可欠です
  5. 段階的にテストする:クエリを作成する際は、フィルターやフィールドを一度に 1 つずつ追加します
  6. 早い段階でフィルターを適用する:取得直後に not(dt.davis.is_duplicate) を適用します
クエリの作成
  • シンプルに始める:基本的なフィルタリングから始め、その後、複雑さを加えます
  • まずフィールドをテストする:| limit 1 を付けて実行し、フィールド名が存在することを確認します
  • 適切な時間範囲を使用する:範囲が広すぎるとリソースを浪費し、狭すぎるとデータを見逃します
  • 問題 ID を記録する:参照用に、必ず display_id を取得して保存します
根本原因の検証
  • 必要に応じて、必ず isNotNull(root_cause_entity_id) でフィルタリングします
  • dt.davis.event_ids を使用してイベントを相互参照します
  • 時間差を考慮します。問題が発生する数分前に、根本原因がログに記録されている場合があります
時間範囲のガイドライン
// ✅ GOOD - Specific time range
fetch dt.davis.problems, from:now() - 4h
// ❌ BAD - Scans all historical data
fetch dt.davis.problems
絶対時間を指定する場合は二重引用符が必要です

DQL クエリの from と to に絶対 ISO 8601 タイムスタンプを使用する場合は、必ず二重引用符で囲んでください。引用符で囲まれていないタイムスタンプは構文エラーになります。

// ✅ CORRECT - absolute timestamps quoted
fetch dt.davis.problems, from: "2026-05-18T22:50:00Z", to: "2026-05-18T23:35:00Z"
| filter not(dt.davis.is_duplicate)
| fields event.start, display_id, event.name, event.category, event.status
| sort event.start desc

トラブルシューティング

問題原因解決策
問題が返されないevent.status == "OPEN" を使用している"ACTIVE" または "CLOSED" を使用します。"OPEN" は存在しません
結果に重複した問題が含まれる重複除外フィルターがない取得直後に filter not(dt.davis.is_duplicate) を追加します
フィールド名が間違っている(title、status、severity)SQL のような命名を使用しているevent.name、event.status、event.category を使用します。上記のフィールド名の表を参照してください
root_cause_entity_id が nullすべての問題で根本原因が特定されているとは限らない根本原因をクエリする際に filter isNotNull(root_cause_entity_id) を追加します
クエリがスキャンするデータ量が多すぎる/タイムアウトする時間範囲が指定されていない取得コマンドで必ず from:now() - <duration> を指定します
affected_entity_ids が空の配列問題にマッピング済みの影響対象エンティティがない代替として dt.smartscape.service または dt.smartscape_source.id を確認します

参照資料を読み込むタイミング

次の場合は problem-trending.md を読み込みます:
  • 問題の発生頻度の経時変化を分析する
  • 定期的に繰り返し発生する問題を検出する
  • 解決時間の傾向と P95 期間を計算する
  • カテゴリー別に問題の作成率を比較する
次の場合は problem-correlation.md を読み込みます:
  • 問題をログやその他のテレメトリーと関連付ける
  • 問題に先行したイベントを調査する
  • 問題をデプロイや設定変更に関連付ける
次の場合は impact-analysis.md を読み込みます:
  • ビジネスへの影響(影響を受けるユーザー、サービス)を評価する
  • 根本原因エンティティの影響範囲を計算する
  • 技術面およびユーザーへの影響に基づいて問題に優先順位を付ける

参照資料

関連スキル

  • dt-dql-essentials - 問題クエリに必要な DQL の基本構文とクエリ構造
  • dt-obs-logs - 問題をアプリケーションログやインフラストラクチャログと関連付ける
  • dt-obs-tracing - 分散トレース分析を通じて問題を調査する

コメント