dt-obs-problems について
Dynatrace が検出した問題を分析するスキルです。問題のトリアージ、根本原因と影響の調査、再発パターンの分析に向けた DQL クエリの指針を提供します。
主な機能
- 01アクティブな問題の優先順位付け
- 02根本原因と影響対象の追跡
- 03再発する問題と傾向の分析
- 04イベントの関連付けと影響評価
活用シーン
- 01可用性やサービスの現在の問題をトリアージ
- 02問題の根本原因と影響範囲の特定
- 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.mdproblem-correlation.mdproblem-merging.mdproblem-trending.md詳細
問題分析スキル
Dynatrace が AI で検出した問題を分析します。根本原因の特定、影響評価、ログおよびメトリクスとの相関分析を行います。
ユースケース
1. アクティブな問題のトリアージ
- 目標: 現在アクティブな問題を一覧表示し、優先順位を付けます
- トリガー: 「アクティブな問題」、「未解決の問題は何か」、「現在の課題」、「可用性の問題」
- 完了条件: カテゴリ、ユーザーへの影響、表示 ID を含む、優先順位付けされたアクティブな問題の一覧
2. 根本原因の調査
- 目標: 特定の問題の根本原因となるエンティティを特定します
- トリガー: 「P-12345 の根本原因」、「この問題の原因は何か」、「根本原因となるエンティティはどれか」
- 完了条件: 影響を受けるエンティティの一覧と影響範囲を含む、根本原因エンティティの特定
3. 問題の傾向分析
- 目標: 問題のパターンを経時的に分析し、繰り返し発生する問題を特定します
- トリガー: 「繰り返し発生する問題」、「問題の履歴」、「過去 30 日間の問題の傾向」
- 完了条件: 問題の発生頻度、繰り返し発生する根本原因、解決時間を示す傾向データ
概要
Dynatrace は環境全体の異常、パフォーマンスの低下、障害を自動的に検出し、関連するアラート、警告、情報レベルのイベントを集約して根本原因と影響に関する分析情報を提供する問題を作成します。
問題とは
問題とは、ソフトウェアやインフラストラクチャの健全性およびレジリエンスに関する問題で、自動的に検出され、次の特徴があります。
- サービス、インフラストラクチャ、フロントエンドアプリケーション、ユーザーセッションにまたがる関連するアラート、警告、情報レベルのイベントを自動的に相関付ける
- Smartscape の依存関係の因果分析を使用して根本原因を特定する
- 影響を受けるユーザーとサービスを追跡してビジネスへの影響を評価する
- 同じ根本原因と影響を共有する関連症状を単一の問題にまとめてアラートノイズを低減する
- 早期検出から解決までの問題のライフサイクルを追跡する
イベントの種類
event.kind フィールド(安定、権限)は、イベントの大まかな種類を識別します。
event.kind の値 | 説明 |
|---|---|
DAVIS_EVENT | Davis が検出したインフラストラクチャ/アプリケーションのイベント |
BIZ_EVENT | ビジネスイベント(API 経由で取り込まれたもの、またはスパンから取得されたもの) |
RUM_EVENT | Real 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:解決済みの問題。履歴分析に使用します
重要なフィールド
よくあるフィールド名の誤り
| ❌ 誤り | ✅ 正しい値 | 説明 |
|---|---|---|
title | event.name | 問題のタイトル/説明 |
status | event.status | 問題のライフサイクル状態 |
severity | event.category | 問題の種類/カテゴリ |
start | event.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)について、包括的な内訳を示してください。該当する各カテゴリについて、次の内容を説明します。
- カテゴリ名と問題の件数
- 発生要因 — 簡潔な説明(例:RESOURCE = CPU/メモリ/ディスクのしきい値超過、AVAILABILITY = サービスまたはエンティティに到達不能)
- テナントのデータに基づく具体的な例(影響を受けるエンティティ名、問題 ID)
最初の 2 つのカテゴリだけで終わらせないでください。ユーザーは全体像を求めています。発生要因の説明には、上記の Problem Categories テーブルを参照してください。
分析結果
クエリ結果を提示する際は、次の点に従ってください。
- エンティティ名(ID だけではなく)を含めます。ただし、効率的な方法を選んでください。
- エンティティが少ない場合(5 未満):
get-entity-nameの呼び出しで問題ありません - エンティティが多い場合: 名前を直接返す
query-problemsツールを使用するか、DQL クエリにroot_cause_entity_name/entityName()を含めてインラインで名前を解決します。10 個以上のエンティティに対してget-entity-nameをループで呼び出すのは避けてください。ツール呼び出しの上限に達し、回答を返せなくなる可能性があります。
- エンティティが少ない場合(5 未満):
- 特定した原因に沿った実行可能な推奨事項を提示します
- 優先順位を付けやすいように、頻度または影響度で整理します
ベストプラクティス
必須ルール
- 重複は必ず除外する:同じ問題を複数回カウントしないよう、
not(dt.davis.is_duplicate)を使用します - 正しいステータス値を使用する:
"ACTIVE"または"CLOSED"を使用し、"OPEN"は使用しないでください - 時間範囲を指定する:パフォーマンスを最適化するため、必ず時間範囲を指定します
- display_id を含める:問題の特定とリンクに不可欠です
- 段階的にテストする:クエリを作成する際は、フィルターやフィールドを一度に 1 つずつ追加します
- 早い段階でフィルターを適用する:取得直後に
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 を読み込みます:
- ビジネスへの影響(影響を受けるユーザー、サービス)を評価する
- 根本原因エンティティの影響範囲を計算する
- 技術面およびユーザーへの影響に基づいて問題に優先順位を付ける
参照資料
- problem-trending.md — 問題の傾向と時系列分析のパターン
- problem-correlation.md — 問題をログやその他のテレメトリーと関連付ける
- impact-analysis.md — ビジネス面および技術面への影響評価
- problem-merging.md — DAVIS がイベントを問題に統合するタイミングと理由
関連スキル
- dt-dql-essentials - 問題クエリに必要な DQL の基本構文とクエリ構造
- dt-obs-logs - 問題をアプリケーションログやインフラストラクチャログと関連付ける
- dt-obs-tracing - 分散トレース分析を通じて問題を調査する