Loading...
Loading...
Diagnoses a Grafana Frontend Observability (RUM) session: whether it is healthy, what went wrong, ranked problems with timestamps and evidence, likely cause, how to fix it. Optional follow-up: zoom in on the top error, impact across sessions, Session Replay, or a Tempo trace if the user asks. Fetches telemetry with `gcx frontend sessions get --save` and reads only that dump file. Use when the user asks to explain, diagnose, analyse, RCA, or review a session; asks if a session is healthy; pastes Frontend Observability session context (app id, session id, datasource UID); or mentions Faro, user journey, Core Web Vitals, exceptions, ANR, or a web or mobile RUM session — even if they do not say "session narrator" or "frontend-session-rca". Do not use this skill to instrument an app (Faro Web, React Native, Flutter, native OpenTelemetry) — use `app-observability` for Faro Web setup instead.
npx skill4agent add grafana/skills frontend-session-rcagcx<app_id><session_id>-d<datasource_uid>lokipinot<grafana_url><from><to><…>gcx datasources list--app-type web|mobile--from--to--sinceWe will run the query for 1d for Loki and 7d for Pinot. If you want a different time range, please provide it.
gcx--since--since--fromcommand -v gcx && gcx frontend sessions get -h| Result | Action |
|---|---|
| Tell the user to install from https://github.com/grafana/gcx ( |
| Installed gcx is too old. Tell the user to upgrade gcx, then retry. |
| Command exists | Continue. |
gcx login --server <grafana_url>gcx config view -o jsongrafana.servergcx datasources get <datasource_uid>lokiloki--since 1dpinotpinot--since 7d--from--to--since--savegcx frontend sessions get <session_id> \
--app <app_id> \
-d <datasource_uid> \
--since <since> \
--save /tmp/session-<session_id>.txt-d/--datasourcelokipinot--from--to--since--since 1d--since 7d--since--from--app-type--savegcx.artifact_receiptfiles[0].pathWrote <path>=== session metadata ====== events ===--since--from--to--app--datasourcegcx logs querygcx datasources pinot querygcx traces get## Session overview
- App, session id, web or mobile, duration (`session_start` → last event as `session_end` only if `session_start` is in this dump; if that event is missing, say so — do not use the first row as start. `session_end` is not a Faro event)
- Environment: browser/OS or device/SDK, geo, app version, user id/username if present (avoid email/PII unless the user explicitly asks)
- Outcome: **healthy** | **degraded** | **error** | **unknown**
## What the user did
3–6 sentences of the journey in time order, oldest first (navigation, views, actions). No raw dump.
## Session health
One paragraph: healthy or not, and why (exceptions, failed HTTP, poor web vitals or mobile startup/jank, ANR, rage clicks).
## Problems found
Ranked list. Each item:
- Severity: critical / warning / info
- Timestamp (from the dump)
- What happened (exception type/message, HTTP status+URL, web vital or mobile cold/warm start / jank, …)
- Lead-up: the 1–3 events immediately before it
- `traceID` if that row has one (the id only — not a Tempo URL)
- Session Replay at this timestamp — only web + `session_replay_start`; convert both times to ms, then `?t=` ([grafana-links.md](references/grafana-links.md)). Omit on mobile, if there is no recording, or if `t < 0`.
## Likely cause
One or two sentences citing dump evidence. If several independent issues, say so — do not force a single root cause.
## How to fix it
Concrete next engineering steps (code, config, backend, or telemetry gaps). See [signal-catalog.md](references/signal-catalog.md).
## Follow-up
- <1–3 short questions named from this dump>traceIDhashapp_versionstatus=0page_idtraceID--appgcx logs query -d <datasource_uid> '<logql>'gcx datasources pinot query -d <datasource_uid> '<sql>'--appgcx traces get -d <tempo_uid> <trace_id>traceID-ddatasources.temporatingfaro.session_recording.startedsession_replay_startgcx frontend sessions get?t=