关于 dt-obs-frontends
dt-obs-frontends 是面向 Dynatrace 前端观测的技能,供分析 Web 和移动应用真实用户遥测的人员使用。它按指标、事件和会话分层组织 DQL 分析,并提供常见排查流程。
主要功能
- 01查询 Web 和移动端 RUM 数据
- 02分析 Core Web Vitals 与导航性能
- 03按事件、会话和用户操作排查
- 04调查错误、请求延迟与崩溃
- 05关联前端与后端数据
适用场景
- 01定位 Web 页面性能下降
- 02分析移动应用会话与崩溃
- 03按浏览器或应用版本排查问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dynatrace/ dynatrace-for-ai --skill dt-obs-frontends安装后在 Claude Code 中输入/dt-obs-frontends确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/characteristics.mdcsp-violations.mderror-tracking.mdfrontend-backend-linking.mdmobile-monitoring.mdslow-page-load-playbook.mdtroubleshooting.mduser-actions.mduser-sessions.mdvisibility-changes.mdweb-performance-analysis.mdweb-vitals.md详细介绍
前端可观测性(RUM)
使用 DQL 通过真实用户监控(RUM)监控 Web 和移动端前端。 目标是 最新 Dynatrace 上的 RUM——请勿使用 RUM Classic 数据。
概念和数据模型: https://docs.dynatrace.com/docs/observe/digital-experience/new-rum-experience/concepts
数据模型
三个数据源,分别用于回答不同的问题:
| 数据源 | 用途 | 粒度 |
|---|---|---|
timeseries dt.frontend.* | 趋势、仪表板、告警 | 聚合指标 |
fetch user.events | 根本原因分析、单个页面浏览 / 请求 / 点击 / 错误 | 单个事件 |
fetch user.sessions | 跳出率、会话时长、会话级聚合数据 | 单个会话 |
经验法则:先用指标了解问题的整体情况,再深入查看事件以弄清原因。涉及用户旅程而非单次交互的问题,请使用会话数据。
完整事件模型:https://docs.dynatrace.com/docs/semantic-dictionary/model/rum/user-events
DQL 语言参考(函数、语法、运算符): https://docs.dynatrace.com/docs/platform/grail/dynatrace-query-language
关键 dt.frontend.* 指标(均支持以下维度:frontend.name、device.type、geo.country.iso_code、browser.name、os.name、dt.rum.user_type、dt.smartscape.frontend):
dt.frontend.web.page.largest_contentful_paint/dt.frontend.web.page.interaction_to_next_paint/dt.frontend.web.page.cumulative_layout_shift/dt.frontend.web.page.first_input_delay— Core Web Vitalsdt.frontend.web.navigation.time_to_first_byte/dt.frontend.web.navigation.dom_interactive/dt.frontend.web.navigation.load_event_end— 导航计时dt.frontend.error.count— 错误数dt.frontend.request.count/dt.frontend.request.duration— 请求量和延迟dt.frontend.user_action.count/dt.frontend.user_action.duration— 用户操作量和时长dt.frontend.session.active.estimated_count/dt.frontend.user.active.estimated_count— 活跃会话数和用户数(基数指标;使用countDistinct()聚合)
常用筛选条件
所有数据源(user.events + user.sessions):
frontend.name— 前端标识符(所有筛选的首选字段);在user.sessions中为数组(一个会话可能跨越多个前端)。dt.smartscape.frontend是 Smartscape 实体引用——使用它访问实体属性,例如标签或关联服务,而非按名称筛选。请避免查询 Smartscape 来将名称解析为实体 ID,再与user.events连接——始终直接按frontend.name筛选。dt.rum.user_type—real_user、synthetic、robotdt.rum.application.type—web或mobiledt.rum.session.id、dt.rum.instance.idos.name、geo.country.iso_code、client.ispclient.ip— 客户端 IP 地址 (敏感字段——默认隐藏;请参阅下文的字段权限)
user.events — 仅 Web:
browser.name、browser.version、device.type
user.events — 仅移动端:
device.model.identifier、device.manufacturer、app.short_version
常用特征筛选条件(将 user.events 限定为特定事件类型——使用 | filter characteristics.has_X):
characteristics.has_page_summary— 页面加载(Web)characteristics.has_view_summary— 视图(SPA + 移动端屏幕)characteristics.has_navigation— 导航事件characteristics.has_user_action— 用户操作characteristics.has_error— 所有错误
完整特征参考:references/characteristics.md
字段权限
某些字段是敏感字段,属于 builtin-sensitive-user-events-and-sessions 字段集。在 user.events 和 user.sessions 中,这些字段默认都是隐藏的——无权访问的用户会看到 null,按这些字段筛选或分组的查询会静默返回无结果。
此技能中使用的敏感字段:
client.ip— 客户端 IP 地址user.identifier— 真实用户身份
使用以下策略语句授予访问权限:
ALLOW storage:fieldsets:read WHERE storage:fieldset-name="builtin-sensitive-user-events-and-sessions"
参考:字段权限
逐层深入分析模式
无论具体问题领域是什么(错误、性能、后台活动等),大多数调查都会遵循这种分层方法:
1. 确定前端
首先按 by: {frontend.name} 分组,找出受影响的应用。如果需要在分析开始时区分 Web 和移动端,请按 dt.rum.application.type(web 或 mobile)筛选。
2. 找出受影响的页面或视图
这两个字段都可用于所有事件(不局限于特定特征):
page.name— 规范化为 Dynatrace 实体名称的页面 URL;仅限 Webview.name— SPA 路由或移动端屏幕名称;Web 和移动端均可用
同一事件上可能同时存在这两个字段。对于 Web SPA,page.name 表示顶层文档,而 view.name 表示当前路由——按 view.name 分组可获得更细的粒度。对于移动端,仅使用 view.name。
进一步缩小范围的维度
| 维度 | 字段 | 平台 | 使用场景 |
|---|---|---|---|
| 特定请求 / 端点 | url.domain, url.path | Web + 移动端 | 特定 API 调用的性能或错误模式 |
| 单个用户会话 | dt.rum.session.id | Web + 移动端 | 重现特定用户的操作过程;可关联到会话回放 |
| 设备形态 | device.type | 仅限 Web | 桌面端、移动浏览器或平板模式 |
| 浏览器兼容性 | browser.name, browser.version | 仅限 Web | 仅在特定浏览器上出现的问题 |
| 应用版本 | app.short_version | 仅限移动端 | 特定应用版本引入的回归问题 |
| 地理位置 | geo.country.iso_code | Web + 移动端 | 区域基础设施或 CDN 问题 |
| 合成流量与真实流量 | dt.rum.user_type | Web + 移动端 | 在面向用户的分析前排除合成监控流量 |
工作流
每个工作流都对应一个或多个参考文档。开始工作流时再加载参考文档,无需提前加载。
| 工作流 | 参考文档 |
|---|---|
| 事件特征 — 类型、筛选条件、event_type 派生 | references/characteristics.md |
| Web Vitals(LCP、FCP、FID、INP、CLS) | references/web-vitals.md |
| 会话、跳出、参与度分析 | references/user-sessions.md |
| 用户操作 — 交互生命周期、完成原因、超时 | references/user-actions.md |
| 错误、异常、失败的请求 | references/error-tracking.md |
前端与后端关联 — 机制、追踪覆盖率、frontend.link | references/frontend-backend-linking.md |
| CSP 违规 — 安全策略执行与被阻止的资源 | references/csp-violations.md |
| 移动应用启动、崩溃、ANR、原生信号 | references/mobile-monitoring.md |
| 请求延迟、长任务、JS 性能分析、地理位置性能 | references/web-performance-analysis.md |
| 可见性变化 — 切换标签页、后台停留时间、参与度质量 | references/visibility-changes.md |
| 页面加载缓慢 — 后端、渲染、网络、JS 分诊 | references/slow-page-load-playbook.md |
| 诊断零结果、异常、含义不明确的数据 | references/troubleshooting.md |
性能阈值(速查)
- LCP:良好 < 2.5 s | 较差 > 4.0 s
- INP:良好 < 200 ms | 较差 > 500 ms
- CLS:良好 < 0.1 | 较差 > 0.25
- FCP:良好 < 1.8 s | 较差 > 3.0 s
- TTFB:良好 < 800 ms | 较差 > 1800 ms
- 移动端冷启动:良好 < 3 s | 较差 > 5 s
- 移动端温启动:良好 < 1.5 s | 较差 > 2 s
- 移动端热启动:良好 < 500 ms | 较差 > 1 s
- 长任务:> 50 ms 为问题,> 250 ms 为严重问题
Web vitals 阈值(LCP、INP、CLS、FCP、TTFB):https://web.dev/articles/vitals
适用场景
此技能适用于真实用户 Web 和移动端前端遥测,包括 Core Web Vitals、会话、点击、错误、崩溃、来自浏览器/应用的请求延迟,以及前端与后端关联。
以下场景请使用其他技能:
- 合成监控 / 可用性检查 →
dt-obs-synthetic - 后端服务、追踪、跨度 →
dt-obs-services、dt-obs-tracing - 基础设施、主机 →
dt-obs-hosts - 日志 →
dt-obs-logs - 问题和事件 →
dt-obs-problems