dt-obs-frontends
Real User Monitoring(RUM)、Web Vitals、ユーザーセッション、モバイルクラッシュ、ページパフォーマンス、ユーザーインタラクション、フロントエンドエラーなど、WebおよびモバイルフロントエンドのテレメトリデータをQueryするスキルです。実際のユーザー体験に基づくパフォーマンス分析や障害調査に活用できます。
description の原文を見る
Real User Monitoring (RUM), Web Vitals, user sessions, mobile crashes, page performance, user interactions, and frontend errors. Query web and mobile frontend telemetry.
SKILL.md 本文
フロントエンド可視化スキル
Real User Monitoring (RUM) を使用して DQL クエリで Web およびモバイル フロントエンドを監視します。 このスキルは新しい RUM エクスペリエンスのみを対象としています。クラシック RUM データは使用しないでください。
概要
このスキルは以下を実現します:
- Core Web Vitals とフロントエンド パフォーマンスの監視
- ユーザー セッション、エンゲージメント、動作の追跡
- エラーの分析とバックエンド トレースとの相関
- モバイル アプリの起動と安定性の最適化
- 詳細なタイミング分析を使用したパフォーマンス問題の診断
データ ソース:
- メトリクス:
timeseriesとdt.frontend.*(トレンド、アラート) - イベント:
fetch user.events(個別ページ ビュー、リクエスト、クリック、エラー) - セッション:
fetch user.sessions(セッション レベルの集計: 期間、バウンス、カウント)
クイック リファレンス
一般的なメトリクス
dt.frontend.user_action.count- ユーザー アクション ボリュームdt.frontend.user_action.duration- ユーザー アクション期間dt.frontend.request.count- リクエスト ボリュームdt.frontend.request.duration- リクエスト レイテンシ (ms)dt.frontend.error.count- エラー カウントdt.frontend.session.active.estimated_count- アクティブ セッションdt.frontend.user.active.estimated_count- ユニーク ユーザーdt.frontend.web.page.cumulative_layout_shift- CLS メトリクスdt.frontend.web.navigation.dom_interactive- DOM インタラクティブ時間dt.frontend.web.page.first_input_delay- FID メトリクス (レガシー; INP を推奨)dt.frontend.web.page.largest_contentful_paint- LCP メトリクスdt.frontend.web.page.interaction_to_next_paint- INP メトリクスdt.frontend.web.navigation.load_event_end- ロード イベント終了dt.frontend.web.navigation.time_to_first_byte- 最初のバイトまでの時間
一般的なフィルタ
frontend.name- フロントエンド名でフィルタ (例:my-frontend)dt.rum.user_type- シンセティック監視を除外geo.country.iso_code- 地理的フィルタリングdevice.type- モバイル、デスクトップ、タブレットbrowser.name- ブラウザ フィルタリング
一般的なタイムシリーズ ディメンション
dt.frontend.* タイムシリーズの分割とブレークダウンに使用:
frontend.name- フロントエンド名geo.country.iso_codedevice.typebrowser.nameos.nameuser_type-real_user,synthetic,robot
fetch user.events, from: now() - 2h
| filter characteristics.has_page_summary == true
| summarize page_views = count(), by: {frontend.name}
| sort page_views desc
イベント特性
characteristics.has_page_summary- ページ ビュー (Web)characteristics.has_view_summary- ビュー (モバイル)characteristics.has_navigation- ナビゲーション イベントcharacteristics.has_user_interaction- クリック、フォーム等characteristics.has_request- ネットワーク リクエスト イベントcharacteristics.has_error- エラー イベントcharacteristics.has_crash- モバイル クラッシュcharacteristics.has_long_task- 長時間 JavaScript タスクcharacteristics.has_csp_violation- CSP 違反
完全なイベント モデル: https://docs.dynatrace.com/docs/semantic-dictionary/model/rum/user-events
セッション データ (user.sessions)
user.sessions には、user.events からセッション集計サービスによって生成されたセッション レベルの集計が含まれます。フィールド名が user.events と異なります — セッションはイベントがドットを使用する場合にアンダースコアを使用します。
セッション ID とコンテキスト:
dt.rum.session.id— セッション ID (NOTdt.rum.session_id)dt.rum.instance.id— インスタンス IDfrontend.name- セッションに関連するフロントエンドの配列dt.rum.application.type—webまたはmobiledt.rum.user_type—real_user,synthetic, またはrobot
セッション集計 (アンダースコア命名 — ドット NOT):
| フィールド | 説明 | ⚠️ NOT this |
|---|---|---|
navigation_count | ナビゲーション数 | navigation.count |
user_interaction_count | クリック、フォーム送信 | user_interaction.count |
user_action_count | ユーザー アクション | user_action.count |
request_count | XHR/fetch リクエスト | request.count |
event_count | セッション内の総イベント | event.count |
page_summary_count | ページ ビュー (Web) | page_summary.count |
view_summary_count | ビュー (モバイル/SPA) | view_summary.count |
エラー フィールド (ドット命名 — イベントと同じ):
error.count,error.exception_count,error.http_4xx_count,error.http_5xx_counterror.anr_count,error.csp_violation_count,error.has_crash
セッション ライフサイクル:
start_time,end_time,duration(ナノ秒)end_reason—timeout,synthetic_execution_finished等characteristics.is_bounce— ブール値バウンス フラグcharacteristics.has_replay— セッション リプレイ利用可能
ユーザー ID:
dt.rum.user_tag— ユーザー識別子 (通常はメール、ユーザー名または customerId)、計測されたフロントエンドでdtrum.identifyUser()API 呼び出しを介して設定。常に設定されるわけではありません — フロントエンドが明示的にidentifyUser()を呼び出す場合にのみ存在します。dt.rum.user_tagが空の場合、dt.rum.instance.idが唯一のユーザー識別子になることがあります。この値はクライアント側で RUM エージェントによって割り当てられたランダム ID なので、個人識別情報ではありませんが、user_tagが設定されていない場合にユニーク ユーザーを区別するために使用できます。Web 上ではこれは永続的な cookie に基づいているため、ユーザーによって削除できます。- ユーザー タグは セッション レベル フィールド —
user.sessionsからクエリします。user.eventsからはクエリしないでください (セッションに 1 つある場合でも空の場合があります)。
クライアント/デバイス コンテキスト:
browser.name,browser.version,device.type,os.namegeo.country.iso_code,client.ip,client.isp
シンセティック専用フィールド:
dt.entity.synthetic_test,dt.entity.synthetic_location,dt.entity.synthetic_test_step
時間ウィンドウ動作:
fetch user.sessions, from: X, to: Yは[X, Y]で開始したセッションのみを返します — そのウィンドウ中にアクティブだったセッションではありません。- セッションは 8 時間以上続くことができます (集計サービスはセッションを閉じるまで 30 分以上の非アクティビティを待ちます)。
- 時間ウィンドウ中にアクティブなすべてのセッションを見つけるには、ルックバックを少なくとも 8 時間延長します: 例えば、過去 24 時間のイベントをカバーするには、
fetch user.sessions, from: now() - 32hをクエリします。 - これは相関クエリ (例: セッション ID で
user.eventsをuser.sessionsにマッチング) に重要です — 狭いuser.sessionsウィンドウは長時間実行セッションを見落とし、偽の「孤立」を生成します。
セッション作成遅延:
- セッション集計サービスは、セッションを閉じて
user.sessionsレコードを書き込むまで、約 30 分以上の非アクティビティを待ちます。 - つまり、最近のイベント (過去約 1 時間) にはまだ対応する
user.sessionsエントリがありません — これは通常であり、データ ギャップではありません。 user.eventsをuser.sessionsと相関させる場合、進行中のセッションを孤立としてカウントしないように最近のデータを除外します (例:to: now() - 1hを使用)。
ゾンビ セッション (user.sessions レコードのないイベント):
- すべての
user.events内のdt.rum.session.idが対応するuser.sessionsレコードを持つわけではありません。セッション集計サービスは意図的にゾンビ セッションをスキップします — 実ユーザー アクティビティがないセッション (ナビゲーション数がゼロ、ユーザー インタラクション数がゼロ)。 - ゾンビ セッションには、ページ ビューやクリックのない、バックグラウンド、マシン駆動のアクティビティのみが含まれます (例: 自動 XHR リクエスト、ハートビート)。シリアライズしても、ユーザーに価値は追加されません。
user.eventsをuser.sessionsと相関させる場合、多数のマッチされていないセッション ID を期待します。これは設計によるもので、データ ギャップではありません。孤立を診断する前にアクティビティを持つセッションにフィルタします:fetch user.events, from: now() - 2h, to: now() - 1h | filter isNotNull(dt.rum.session.id) | summarize navs = countIf(characteristics.has_navigation == true), interactions = countIf(characteristics.has_user_interaction == true), by: {dt.rum.session.id} | filter navs > 0 or interactions > 0
例 — バウンス率とセッション品質:
fetch user.sessions, from: now() - 24h
| filter dt.rum.user_type == "real_user"
| summarize
total_sessions = count(),
bounces = countIf(characteristics.is_bounce == true),
zero_activity = countIf(toLong(navigation_count) == 0 and toLong(user_interaction_count) == 0),
avg_duration_s = avg(toLong(duration)) / 1000000000
| fieldsAdd bounce_rate_pct = round((bounces * 100.0) / total_sessions, decimals: 1)
パフォーマンス しきい値
- LCP: 良好 <2.5s | 不良 >4.0s
- INP: 良好 <200ms | 不良 >500ms
- CLS: 良好 <0.1 | 不良 >0.25
- コールド スタート: 良好 <3s | 不良 >5s
- 長時間タスク: >50ms 問題あり、>250ms 深刻
コア ワークフロー
1. Web パフォーマンス監視
Core Web Vitals、ページ パフォーマンス、リクエスト レイテンシを追跡し、SEO と UX 最適化を実現します。
主要ファイル:
references/WebVitals.md- Core Web Vitals (LCP、INP、CLS)references/performance-analysis.md- リクエストとページ パフォーマンス
一般的なクエリ:
- すべての Core Web Vitals サマリー
- ページ/デバイス別 Web Vitals
- リクエスト期間 SLA 監視
- ページ読み込みパフォーマンス トレンド
2. ユーザー セッション & 動作分析
ユーザー エンゲージメント、ナビゲーション パターン、セッション特性を理解します。ボタン クリック、フォーム インタラクション、ユーザー ジャーニーを分析します。
データ ソース選択:
- セッション レベルの分析に
fetch user.sessionsを使用 (バウンス率、セッション期間、セッション カウント) - イベント レベルの詳細に
fetch user.eventsを使用 (個別クリック、ナビゲーション タイミング、特定ページ)
主要ファイル:
references/user-sessions.md- セッション追跡とユーザー分析references/performance-analysis.md- ナビゲーションとエンゲージメント パターン
一般的なクエリ:
- フロントエンド別アクティブ セッション
- カスタム プロパティ別セッション
- バウンス率分析 (
user.sessionsとcharacteristics.is_bounceを使用) - セッション品質 (ゼロ アクティビティ セッション、
navigation_count、user_interaction_count経由) - UI 要素のクリック分析 (
user.eventsとcharacteristics.has_user_interactionを使用) - 外部リファラー (トラフィック ソース)
3. エラー追跡とデバッグ
エラー率を監視し、例外を分析し、フロントエンド問題とバックエンドを相関させます。
主要ファイル:
references/error-tracking.md- エラー分析とデバッグreferences/performance-analysis.md- トレース相関
一般的なクエリ:
- エラー率監視
- タイプ別 JavaScript 例外
- バックエンド トレース付きの失敗したリクエスト
- リクエスト タイミング ブレークダウン
4. モバイル フロントエンド監視
iOS と Android のモバイル アプリ パフォーマンス、起動時間、クラッシュ分析を追跡します。アプリ バージョン パフォーマンスとデバイス固有の問題を分析します。
主要ファイル:
references/mobile-monitoring.md- アプリ起動、クラッシュ、モバイル固有メトリクス
一般的なクエリ:
- アプリ バージョン別コールド スタート パフォーマンス (iOS、Android)
- ウォーム スタートとホット スタート メトリクス
- デバイス モデルと OS バージョン別クラッシュ率
- ANR イベント (Android)
- ネイティブ クラッシュ シグナル
- アプリ バージョン比較
5. 高度なパフォーマンス最適化
JavaScript プロファイリング、メイン スレッド ブロッキング、UI ジャンク分析、地理的パフォーマンスを含む深いパフォーマンス診断。
主要ファイル:
references/performance-analysis.md- 高度な診断と長時間タスク
一般的なクエリ:
- メイン スレッドをブロックする長時間 JavaScript タスク
- UI ジャンクとレンダリング遅延
- 応答性に影響する >50ms タスク
- サードパーティ長時間タスク (iframe)
- シングルページ アプリ パフォーマンス問題
- 地理的パフォーマンス分布
- パフォーマンス低下検出
ベスト プラクティス
-
トレンドにはメトリクス、デバッグにはイベントを使用
- メトリクス: タイムシリーズ ダッシュボード、アラート、キャパシティ プランニング
- イベント: 根本原因分析、詳細診断
-
マルチアプリ環境でフロントエンドでフィルタ
- 明確にするため常に
frontend.nameを使用
- 明確にするため常に
-
間隔を時間範囲に合わせる
- 数時間は 5m 間隔、数日は 1h、数週間は 1d
-
実ユーザー分析時にシンセティック トラフィックを除外
dt.rum.user_typeをフィルタして本物の動作に焦点を当てる
-
メトリクスとイベントを組み合わせて完全な洞察を得る
- メトリクス トレンドから開始し、詳細についてはイベントに詳細化
-
相関クエリの
user.sessions時間ウィンドウを拡張user.sessionsはクエリ ウィンドウで開始したセッションのみを返す- セッションは 8 時間以上続くことができるため、
user.eventsと結合する場合は、ルックバックを少なくとも 8h 延長
ページ読み込み遅延プレイブック
ページ、ブラウザ、地理的位置、dt.rum.user_type で問題をセグメント化して開始します。
ヒューリスティクス:
- 高 TTFB -> 遅いバックエンド
- 高 LCP(通常 TTFB) -> レンダリング ボトルネック
- 高 CLS -> レイアウト シフト (遅延読み込みコンテンツ、広告、フォント)
- 長時間タスクが支配的 -> JavaScript 実行ボトルネック (重いフレームワーク、大きなバンドル)
バックエンド レイテンシ (高 TTFB)
fetch user.events
| filter frontend.name == "my-frontend" and characteristics.has_request == true
| filter page.url.path == "/checkout"
| summarize avg_ttfb = avg(request.time_to_first_byte), avg_duration = avg(duration)
TTFB が高い場合、dt.rum.trace_id を使用してフロントエンド イベントとバックエンド トレースを相関させることで、バックエンド スパンを分析します。
重い JavaScript 実行 (長時間タスク)
ページ別長時間タスク:
fetch user.events, from: now() - 2h
| filter characteristics.has_long_task == true
| summarize
long_task_count = count(),
total_blocking_time = sum(duration),
by: {frontend.name, page.url.path}
| sort total_blocking_time desc
| limit 20
スクリプト ソース別長時間タスク:
fetch user.events, from: now() - 2h
| filter frontend.name == "my-frontend"
| filter characteristics.has_long_task == true
| summarize
long_task_count = count(),
total_blocking_time = sum(duration),
by: {long_task.attribution.container_src}
| sort total_blocking_time desc
| limit 20
大きい JavaScript バンドル
fetch user.events
| filter frontend.name == "my-frontend"
| filter characteristics.has_request
| filter endsWith(url.full, ".js")
| summarize dls = max(performance.decoded_body_size), by: url.full
| sort dls desc
| limit 20
大きいリソース
fetch user.events
| filter frontend.name == "my-frontend"
| filter characteristics.has_request
| summarize dls = max(performance.decoded_body_size), by: url.full
| sort dls desc
| limit 20
キャッシュ効果
fetch user.events, from: now() - 2h
| filter frontend.name == "my-frontend"
| filter characteristics.has_request == true
| fieldsAdd cache_status = if(
performance.incomplete_reason == "local_cache" or performance.transfer_size == 0 and
(performance.encoded_body_size > 0 or performance.decoded_body_size > 0),
"cached",
else: if(performance.transfer_size > 0, "network", else: "uncached")
)
| summarize
request_count = count(),
avg_duration = avg(duration),
by: {url.domain, cache_status}
圧縮 無駄
fetch user.events, from: now() - 2h
| filter characteristics.has_request == true
| filter isNotNull(performance.encoded_body_size) and isNotNull(performance.decoded_body_size)
| filter performance.encoded_body_size > 0
| fieldsAdd
expansion_ratio = performance.decoded_body_size / performance.encoded_body_size,
wasted_bytes = performance.decoded_body_size - performance.encoded_body_size
| summarize
requests = count(),
avg_expansion_ratio = avg(expansion_ratio),
total_wasted_bytes = sum(wasted_bytes),
by: {request.url.host, request.url.path}
| sort total_wasted_bytes desc
| limit 50
ネットワーク問題
TTFB が高いがバックエンド パフォーマンスが良好な場合、位置とドメイン別に比較:
fetch user.events, from: now() - 2h
| filter characteristics.has_request == true
| summarize
request_count = count(),
avg_duration = avg(duration),
p75_duration = percentile(duration, 75),
p95_duration = percentile(duration, 95),
by: {geo.country.iso_code, request.url.domain}
| sort p95_duration desc
| limit 50
DNS 時間を分析:
fetch user.events, from: now() - 2h
| filter characteristics.has_request == true
| filter isNotNull(performance.domain_lookup_start) and isNotNull(performance.domain_lookup_end)
| fieldsAdd dns_ms = performance.domain_lookup_end - performance.domain_lookup_start
| summarize
request_count = count(),
avg_dns_ms = avg(dns_ms),
p75_dns_ms = percentile(dns_ms, 75),
p95_dns_ms = percentile(dns_ms, 95),
by: {request.url.domain}
| sort p95_dns_ms desc
| limit 50
プロトコル (http/1.1、h2、h3) 別に分析:
fetch user.events
| filter characteristics.has_request
| summarize cnt = count(), by: {url.domain, performance.next_hop_protocol}
| sort cnt desc
| limit 50
サードパーティ依存関係
ドメイン別リクエスト パフォーマンスを分析:
fetch user.events, from: now() - 2h
| filter characteristics.has_request == true
| summarize
request_count = count(),
avg_duration = avg(duration),
p75_duration = percentile(duration, 75),
p95_duration = percentile(duration, 95),
by: {request.url.domain}
| sort p95_duration desc
| limit 50
トラブルシューティング
ゼロ結果の処理
クエリがデータを返さない場合、この診断ワークフローに従います:
-
時間枠を検証
- 時間枠がデータ タイプに適しているか確認
- RUM データに遅延がある場合があります (最近のイベントで 1-2 分)
- 時間枠の構文を確認:
now()-1h to now()または同様 - 時間枠を拡張してみます: 初期探索には
now()-24h
-
フロントエンド構成を確認
- フロントエンドが計測され、RUM データを送信していることを確認
frontend.nameフィルタが正しいか確認- フロントエンド フィルタなしでクエリしてみて、RUM データが存在するか確認
- フロントエンド名が環境と一致することを確認
-
データ可用性を確認
- 基本クエリを実行:
fetch user.events | limit 1 - イベントが存在しない場合、RUM が構成されていない可能性があります
- 時間枠がフロントエンド展開前のものでないか確認
- ユーザーが環境にアクセスできることを確認
- 基本クエリを実行:
-
クエリ構文を確認
- フィルタが制限的すぎないか検証
- フィールド名またはメトリクス名のタイプミスがないか確認
- クエリを段階的にテスト: 単純に開始し、フィルタを段階的に追加
- 特性フィルタがイベント タイプと一致するか確認
ユーザーに説明を求める場合:
- 環境にRUMデータが存在しない → "このフロントエンドに対して RUM は構成されていますか?"
- 時間枠が不明 → "どの期間を分析する必要がありますか?"
- 予期されるデータがない → "このフロントエンドは最近データを送信していますか?"
異常な結果の処理
クエリ結果が予期しない、または疑わしいように見える場合:
予期しない高い値:
- メトリクス スパイク: 間隔集計 (avg vs. max vs. sum) を確認
- セッション カウント: ボット トラフィックまたはシンセティック監視をチェック
- エラー率: エラー定義が予期と一致することを確認
- パフォーマンス低下: デプロイメントまたはインフラストラクチャの変更を確認
予期しない低い値:
- 欠けているセッション:
dt.rum.user_typeフィルタが実ユーザーを除外していないか確認 - 低リクエスト カウント: フロントエンド フィルタが狭すぎないか確認
- 少ないエラー: エラー特性フィルタが正しいか確認
- モバイル データなし: プラットフォーム固有のフィールドが存在するか確認
一貫性のないデータ:
- メトリクス vs. イベント 不一致: 異なる集計方法が予期されます
- 地理的異常: タイムゾーン仮定を確認
- デバイス分布の歪み: 実際のユーザー ベースを反映する可能性があります
- バージョン不一致: アプリ バージョン フィルタリング ロジックを確認
判定ツリー: 質問 対 調査
クエリが予期しない結果を返す
│
├─ これはゼロ結果シナリオですか?
│ ├─ はい → 「ゼロ結果の処理」ワークフローに従う
│ └─ いいえ → 続行
│
├─ 結果を独立して検証できますか?
│ ├─ はい → 検証クエリを実行
│ │ ├─ 検証が結果を確認 → 結果を報告
│ │ └─ 検証が矛盾 → さらに調査
│ └─ いいえ → 続行
│
├─ 異常がデータによって明確に説明できますか?
│ ├─ はい → 説明付きで報告
│ └─ いいえ → 続行
│
├─ 解釈に領域知識が必要ですか?
│ ├─ はい → ユーザーに内容を尋ねる
│ │ 例: 「エラー率は 15% です。これはフロントエンドで予期されていますか?」
│ └─ いいえ → 続行
│
└─ 問題が曖昧であるか、明確化が必要ですか?
├─ はい → データ コンテキスト付き特定の質問を尋ねる
│ 例: 「'web-app' という名前のフロントエンドが 2 つ見つかりました。どのフロントエンド名を使用する必要がありますか?」
└─ いいえ → 注意事項付きで調査と報告の結果を報告
一般的な調査ステップ
パフォーマンス問題の場合:
- ベースラインと比較: 前週の同じメトリクスをクエリ
- ディメンション別にセグメント化: デバイス、ブラウザ、地理別に分解
- 外れ値をチェック: 平均値対パーセンタイル (p50、p95、p99) を使用
- デプロイメントと相関: アプリ バージョンまたは時間ウィンドウ別にフィルタ
データ可用性問題の場合:
- 広く始める: フィルタなしで all RUM データをクエリ
- フィルタを段階的に追加: どのフィルタがデータを削除するか分離
- 関連メトリクスを確認: イベントがない場合、タイムシリーズを試す
- エンティティ関係を検証: フロントエンドからサービス リンクを確認
予期しないパターンの場合:
- 時間枠を拡張: 履歴コンテキストを探す
- データ ソースを相互参照: イベントとメトリクスを比較
- サンプリングを確認: サンプリングが結果に影響していないか確認
- 外部要因を考慮: 休日、停止、トラフィック変化
赤旗: 停止して質問する場合
常にユーザーに質問:
- ❌ 環境のどこにも RUM データが存在しない
- ❌ 複数のフロントエンドがユーザーの説明と一致する
- ❌ 結果がユーザーの明確な期待と矛盾する
- ❌ データが監視の誤構成を示唆している
- ❌ クエリに業務コンテキストが必要 (例: 「許容可能なエラー率」)
- ❌ 時間枠が曖昧で、解釈に影響を与える
説明クエリの例:
- "I found two frontends named 'checkout'. Which one:
checkout-weborcheckout-mobile?" (「'checkout' という名前のフロントエンドが 2 つ見つかりました。どちらですか:checkout-webまたはcheckout-mobile?」) - "The query returns 0 results for the past hour. Should I expand the timeframe, or do you expect real-time data?" (「クエリは過去 1 時間の 0 件の結果を返しています。時間枠を拡張する必要がありますか、またはリアルタイム データを期待していますか?」)
- "The average LCP is 8 seconds, which exceeds the 4-second threshold. Is this frontend known to have performance issues?" (「平均 LCP は 8 秒で、4 秒のしきい値を超えています。このフロントエンドはパフォーマンス問題で知られていますか?」)
- "I see only synthetic traffic. Should I include
dt.rum.user_type='REAL_USER'to focus on real users?" (「シンセティック トラフィックのみが表示されます。実ユーザーに焦点を当てるためにdt.rum.user_type='REAL_USER'を含める必要がありますか?」)
このスキルを使用する場合
フロントエンド可視化スキルを使用:
- Web またはモバイル フロントエンド パフォーマンスの監視
- SEO のための Core Web Vitals の分析
- ユーザー セッション、エンゲージメント、または動作の追跡
- クリック イベントとボタン インタラクションの分析
- フロントエンド エラーまたは遅いリクエストのデバッグ
- フロントエンド問題とバックエンド トレースの相関
- モバイル アプリの起動またはクラッシュ率の最適化 (iOS、Android)
- アプリ バージョン パフォーマンスの分析
- UI ジャンクおよびメイン スレッド ブロッキングの診断
- セキュリティ コンプライアンスの分析 (CSP 違反)
- JavaScript パフォーマンスのプロファイリング (長時間タスク)
使用しないでください:
- バックエンド サービス監視 (サービス スキルを使用)
- インフラストラクチャ メトリクス (インフラストラクチャ スキルを使用)
- ログ分析 (ログ スキルを使用)
- ビジネス プロセス監視 (ビジネス イベント スキルを使用)
段階的な開示
常に利用可能
- FrontendBasics.md - RUM 基礎とクイック リファレンス
ワークフローで読み込み
- Web パフォーマンス: WebVitals.md、performance-analysis.md
- ユーザー動作: user-sessions.md、performance-analysis.md
- エラー分析: error-tracking.md、performance-analysis.md
- モバイル アプリ: mobile-monitoring.md
明示的リクエストで読み込み
- 高度な診断 (長時間タスク、ユーザー アクション)
- セキュリティ コンプライアンス (CSP 違反、可視化追跡)
- 特殊なモバイル機能 (プラットフォーム固有フェーズ)
リファレンス ファイル
コア リファレンス ドキュメント
references/WebVitals.md- Core Web Vitals 監視references/user-sessions.md- セッションとユーザー分析references/error-tracking.md- エラー分析とデバッグreferences/mobile-monitoring.md- モバイル アプリ パフォーマンスとクラッシュreferences/performance-analysis.md- 高度なパフォーマンス診断
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- dynatrace
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/dynatrace/dynatrace-for-ai / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。