dt-alerting
End-to-end Dynatrace alerting lifecycle — anomaly detector setup and model selection (static threshold, adaptive baseline,…
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
$ npx -y skills add Dynatrace/dynatrace-for-ai --skill dt-obs-frontends --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dt-obs-frontendsContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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
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
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`):
**All sources (`user.events` + `user.sessions`):**
**`user.events` — web only:**
**`user.events` — mobile only:**
**Common characteristic filters** (scope `user.events` to a specific event type — use as `| filter characteristics.has_X`):
Full characteristics reference: [references/characteristics.md](references/characteristics.md)
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:
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)
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):
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 | |
Everything AI agents need to work with Dynatrace, starting with skills. Skills are portable knowledge packages following the Agent Skills open format. They give AI coding agents the domain-specific context to query, analyze, and interpret Dynatrace data.
End-to-end Dynatrace alerting lifecycle — anomaly detector setup and model selection (static threshold, adaptive baseline,…
Work with Dynatrace dashboards - create, modify, query, and analyze dashboard JSON including tiles, layouts, DQL queries,…
Work with Dynatrace notebooks - create, modify, query, and analyze notebook JSON including sections, DQL queries, and…
Core DQL syntax, pitfalls, query patterns, and query optimization. Load to write, build, fix, or OPTIMIZE a DQL query — prevents…
Dynatrace server-side JS runtime — function contract, runtime limits, Web APIs, Node.js modules, fetch with credential vault, and…
Migrate Dynatrace classic and Gen2 entity-based DQL to Smartscape equivalents. Covers three scenarios. (1) mass data queries…