К основному содержанию
скилл CX Codex

dt-obs-frontends — скилл для Claude Code: RUM в Dynatrace

Скилл для работы с Real User Monitoring в Dynatrace: Core Web Vitals, сессии, ошибки фронтенда и связь с бэкендом через DQL.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-frontends -a claude-code
Открыть на GitHub

Что делает dt-obs-frontends

Скилл описывает модель данных RUM в Dynatrace и подсказывает агенту, откуда брать цифры. Три источника под разные вопросы: агрегированные метрики dt.frontend.* для трендов и дашбордов, fetch user.events для разбора отдельного просмотра страницы или ошибки, fetch user.sessions для bounce rate и длительности сессии. Правило простое: сначала метрики, чтобы увидеть форму проблемы, потом события, чтобы понять причину.

Внутри есть справочники по характеристикам событий, Web Vitals и анализу сессий — агент подгружает их по мере надобности, а не сразу. Фильтровать советует по frontend.name, а не через Smartscape: попытка сначала найти entity ID, а потом джойнить с user.events приведёт к лишним шагам. Для мобильных отдельные поля — app.short_version, device.model.identifier.

Часть полей помечена как sensitive и по умолчанию скрыта: client.ip и user.identifier вернут null, а запросы с фильтром по ним молча дадут пустой результат. Доступ выдаётся отдельной policy-строкой. Скилл рассчитан на RUM в новой версии Dynatrace, данные RUM Classic не подойдут. Синтетический мониторинг сюда не входит — это другой домен.

Какие задачи решает

  • разобрать, почему вырос LCP на конкретной странице
  • найти ошибки фронтенда в разрезе браузеров и версий
  • посчитать bounce rate и длительность сессий по приложению
  • отделить реальных пользователей от синтетики и роботов
  • связать всплеск ошибок на фронте с конкретным API-эндпоинтом

Примеры запросов агенту

  • Покажи Core Web Vitals по frontend.name за последние сутки, сгруппируй по device.type
  • Найди ошибки фронтенда на этой странице и разбей их по browser.name и browser.version
  • Посчитай bounce rate и среднюю длительность сессии для мобильного приложения, отфильтруй synthetic

Как установить dt-obs-frontends

1Через Skills CLI (Vercel)

npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-frontends -a claude-code

2Вручную: положить файлы

~/.claude/skills/dt-obs-frontends/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/dt-obs-frontends/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dt-obs-frontends

Как установить dt-obs-frontends в Claude?

Выполните npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-frontends -a claude-code. Файл скилла появится по пути ~/.claude/skills/dt-obs-frontends/SKILL.md.

Что делает dt-obs-frontends?

Помогает агенту строить DQL-запросы к данным Real User Monitoring в Dynatrace: Core Web Vitals, навигационные метрики, ошибки, запросы и пользовательские действия. Плюс объясняет, какой из трёх источников данных брать под конкретный вопрос.

Почему запрос по client.ip возвращает пустой результат?

client.ip и user.identifier входят в sensitive-набор builtin-sensitive-user-events-and-sessions и скрыты по умолчанию. Без выданного доступа поля возвращают null, а фильтры и группировки по ним тихо не дают строк.

Исходный текст

SKILL.md · Apache-2.0
---
name: dt-obs-frontends
description: Real User Monitoring (RUM) on Dynatrace — web and mobile frontends. Core Web Vitals, user sessions, page performance, mobile crashes, frontend errors, and frontend-backend linking. Query via `user.events`, `user.sessions`, and `dt.frontend.*` metrics. Does NOT cover synthetic monitoring (HTTP/browser/network checks) — that's a separate domain.
license: Apache-2.0
---

# Frontend Observability (RUM)

Monitor web and mobile frontends using Real User Monitoring with DQL.
Targets **RUM on the latest Dynatrace** — do not use RUM Classic data.

**Concepts and data model:** https://docs.dynatrace.com/docs/observe/digital-experience/new-rum-experience/concepts

## Data Model

Three data sources, each for a different question:

| Source | Use for | Granularity |
|--------|---------|-------------|
| `timeseries dt.frontend.*` | Trends, dashboards, alerting | Aggregated metric |
| `fetch user.events` | Root cause, individual page views / requests / clicks / errors | Per-event |
| `fetch user.sessions` | Bounce rate, session duration, session-level aggregates | Per-session |

**Rule of thumb**: start with metrics for the shape of the problem, drill into events for the why. Use sessions when the question is about user journeys, not individual interactions.

Full event model: https://docs.dynatrace.com/docs/semantic-dictionary/model/rum/user-events

**DQL language reference (functions, syntax, operators):** https://docs.dynatrace.com/docs/platform/grail/dynatrace-query-language

**Key `dt.frontend.*` metrics** (all support dimensions: `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 Vitals
- `dt.frontend.web.navigation.time_to_first_byte` / `dt.frontend.web.navigation.dom_interactive` / `dt.frontend.web.navigation.load_event_end` — Navigation timing
- `dt.frontend.error.count` — Error counts
- `dt.frontend.request.count` / `dt.frontend.request.duration` — Request volume and latency
- `dt.frontend.user_action.count` / `dt.frontend.user_action.duration` — User action volume and duration
- `dt.frontend.session.active.estimated_count` / `dt.frontend.user.active.estimated_count` — Active sessions and users (cardinality metrics; use `countDistinct()` aggregation)

## Common Filters

**All sources (`user.events` + `user.sessions`):**
- `frontend.name` — frontend identifier (preferred for all filtering); array on `user.sessions` (session can span multiple frontends). `dt.smartscape.frontend` is the Smartscape entity reference — use it to access entity attributes such as tags or linked services, not for name-based filtering. Avoid querying Smartscape to resolve a name to an entity ID and then joining with `user.events` — always filter on `frontend.name` directly.
- `dt.rum.user_type` — `real_user`, `synthetic`, `robot`
- `dt.rum.application.type` — `web` or `mobile`
- `dt.rum.session.id`, `dt.rum.instance.id`
- `os.name`, `geo.country.iso_code`, `client.isp`
- `client.ip` — client IP address *(sensitive field — hidden by default; see Field Permissions below)*

**`user.events` — web only:**
- `browser.name`, `browser.version`, `device.type`

**`user.events` — mobile only:**
- `device.model.identifier`, `device.manufacturer`, `app.short_version`

**Common characteristic filters** (scope `user.events` to a specific event type — use as `| filter characteristics.has_X`):
- `characteristics.has_page_summary` — page loads (web)
- `characteristics.has_view_summary` — views (SPA + mobile screens)
- `characteristics.has_navigation` — navigation events
- `characteristics.has_user_action` — user actions
- `characteristics.has_error` — all errors

Full characteristics reference: [references/characteristics.md](references/characteristics.md)

## Field Permissions

Some fields are **sensitive** and belong to the `builtin-sensitive-user-events-and-sessions` fieldset. They are **hidden by default** on both `user.events` and `user.sessions` — users without access see `null`, and queries that filter or group by these fields silently return no results.

Sensitive fields used in this skill:

- `client.ip` — client IP address
- `user.identifier` — real user identity

Grant access with the following policy statement:

```
ALLOW storage:fieldsets:read WHERE storage:fieldset-name="builtin-sensitive-user-events-and-sessions"
```

Reference: [Field permissions](https://docs.dynatrace.com/docs/shortlink/rum-on-grail-permissions#field-permissions)

## Drill-Down Pattern

Most investigations follow this layered approach regardless of the specific problem domain (errors, performance, background activity, etc.):

**1. Identify the frontend**

Start by grouping `by: {frontend.name}` to find which application is affected. Filter by `dt.rum.application.type` (`web` or `mobile`) if you need to split web from mobile analysis upfront.

**2. Find the affected page or view**

Both fields are available on all events (not scoped to a specific characteristic):

- `page.name` — the page URL normalised to a Dynatrace entity name; **web only**
- `view.name` — the SPA route or mobile screen name; available on **web and mobile**

Both can be present on the same event. For web SPAs, `page.name` reflects the top-level document while `view.name` reflects the current route — grouping by `view.name` gives finer granularity. For mobile, use `view.name` only.

**Additional narrowing dimensions**

| Dimension | Field | Platform | When to use |
|-----------|-------|----------|-------------|
| Specific request / endpoint | `url.domain`, `url.path` | web + mobile | Performance or error pattern on a specific API call |
| Individual user session | `dt.rum.session.id` | web + mobile | Reproduce a specific user's journey; connects to session replay |
| Device form factor | `device.type` | web only | Desktop vs mobile browser vs tablet pattern |
| Browser compatibility | `browser.name`, `browser.version` | web only | Issue only on certain browsers |
| App version | `app.short_version` | mobile only | Regression introduced in a specific app release |
| Geography | `geo.country.iso_code` | web + mobile | Regional infrastructure or CDN issue |
| Synthetic vs real traffic | `dt.rum.user_type` | web + mobile | Exclude synthetic monitors before user-facing analysis |

## Workflows

Each workflow maps to one or more references. Load the reference when you start the workflow, not upfront.

| Workflow | Reference |
|----------|-----------|
| Event characteristics — types, filters, event_type derivation | [references/characteristics.md](references/characteristics.md) |
| Web Vitals (LCP, FCP, FID, INP, CLS) | [references/web-vitals.md](references/web-vitals.md) |
| Session, bounce, engagement analysis | [references/user-sessions.md](references/user-sessions.md) |
| User actions — interaction lifecycle, completion reasons, timeouts | [references/user-actions.md](references/user-actions.md) |
| Errors, exceptions, failed requests | [references/error-tracking.md](references/error-tracking.md) |
| Frontend-backend linking — mechanisms, trace coverage, `frontend.link` | [references/frontend-backend-linking.md](references/frontend-backend-linking.md) |
| CSP violations — security policy enforcement and blocked resources | [references/csp-violations.md](references/csp-violations.md) |
| Mobile app starts, crashes, ANR, native signals | [references/mobile-monitoring.md](references/mobile-monitoring.md) |
| Request latency, long tasks, JS profiling, geo performance | [references/web-performance-analysis.md](references/web-performance-analysis.md) |
| Visibility changes — tab switching, background time, engagement quality | [references/visibility-changes.md](references/visibility-changes.md) |
| Slow page load — backend vs render vs network vs JS triage | [references/slow-page-load-playbook.md](references/slow-page-load-playbook.md) |
| Diagnosing zero results, anomalies, ambiguous data | [references/troubleshooting.md](references/troubleshooting.md) |

## Performance Thresholds (quick reference)

- **LCP**: Good < 2.5 s | Poor > 4.0 s
- **INP**: Good < 200 ms | Poor > 500 ms
- **CLS**: Good < 0.1 | Poor > 0.25
- **FCP**: Good < 1.8 s | Poor > 3.0 s
- **TTFB**: Good < 800 ms | Poor > 1800 ms
- **Mobile cold start**: Good < 3 s | Poor > 5 s
- **Mobile warm start**: Good < 1.5 s | Poor > 2 s
- **Mobile hot start**: Good < 500 ms | Poor > 1 s
- **Long tasks**: > 50 ms problematic, > 250 ms severe

*Web vitals thresholds (LCP, INP, CLS, FCP, TTFB): https://web.dev/articles/vitals*

## When to Use

Use this skill for real-user web and mobile frontend telemetry — Core Web Vitals, sessions, clicks, errors, crashes, request latency from the browser/app, and frontend-backend linking.

Use a different skill for:

- Synthetic monitors / availability checks → `dt-obs-synthetic`
- Backend services, traces, spans → `dt-obs-services`, `dt-obs-tracing`
- Infrastructure, hosts → `dt-obs-hosts`
- Logs → `dt-obs-logs`
- Problems and incidents → `dt-obs-problems`

© Dynatrace · Apache-2.0 · Dynatrace/dynatrace-for-ai

Похожие скиллы

Всё по теме «Фронтенд и UI» →
dtctl Dynatrace Управляет Dynatrace через CLI: исследует инциденты, логи, трассировки и состояние сервисов. Пригодится для запросов DQL и работы с дашбордами. CX Codex +1 1 300установок Dynatrace Expert официальный github Субагент подключает наблюдаемость и безопасность Dynatrace прямо к рабочим процессам в репозитории. Он разбирает инциденты, валидирует релизы и ищет уязвимости по логам и спанам. ★ 40 418звёзд репо frontend-session-rca grafana Скилл разбирает одну сессию реального пользователя из Grafana Frontend Observability: что случилось, какие ошибки, в каком порядке и что с этим делать. CX Codex +1 1 100установок grafana-dashboards Seth Hobson Скилл помогает создавать Grafana-дашборды для метрик систем и приложений. Подойдёт для мониторинга, SLO и операционных интерфейсов наблюдаемости. CX Codex 13 097установок cargo-observability getcargo Настраивает фоновые проверки воркспейса Cargo и запускает действия агента при сбоях. Пригодится для контроля ошибок в пайплайнах и свежести данных. CX Codex +1 6 200установок redis-observability Redis, Inc. Подсказывает, какие метрики Redis держать под наблюдением и какие встроенные команды запускать при разборе инцидентов. CX Codex +1 2 300установок

Из того же набора29

dt-obs-kubernetes Скилл помогает анализировать состояние кластеров Kubernetes, сбои подов и нехватку ресурсов через запросы Dynatrace DQL. CX Codex +1 2 600установок dt-obs-services Скилл для анализа производительности сервисов в Dynatrace: RED-метрики, SLA, service mesh и рантайм-метрики Java, .NET, Node.js, Python, PHP и Go. CX Codex +1 2 600установок dt-obs-tracing Скилл для анализа распределённых трейсов Dynatrace: медленные запросы, упавшие спаны, зависимости между сервисами. Пригодится, когда копаешь вглубь одного запроса. CX Codex +1 2 600установок dt-obs-aws Помогает анализировать инфраструктуру AWS через Dynatrace Smartscape и запросы DQL: инвентарь ресурсов, топологию VPC и расходы на облако. CX Codex +1 2 500установок dt-migration Скилл помогает переписать классические и Gen2-запросы Dynatrace DQL на модель Smartscape. Полезен при миграции старых фильтров сущностей и выборок. CX Codex +1 2 400установок dt-obs-predictive-analytics Скилл для прогноза метрик Dynatrace: считает тренды, насыщение ресурсов и аномалии по хостам и сервисам. Нужен, когда планируешь ёмкость или ищешь, что изменилось. CX Codex +1 2 100установок dt-obs-gcp Скилл для работы с ресурсами Google Cloud через Dynatrace Smartscape и DQL: инвентаризация, топология, аудит доступов. Пригодится, когда нужно разобраться, что реально крутится в GCP. CX Codex +1 2 000установок dt-obs-azure Скилл учит агента анализировать ресурсы Azure через Dynatrace Smartscape и DQL. Пригодится при аудите сетевой топологии, проверке настроек безопасности и анализе инфраструктуры. CX Codex +1 2 000установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой