RousselTMLEARNING

Observabilité

Analyser l'expérience utilisateur dans Dynatrace : sessions, traces, analyses et USQL

Exploiter les données d'expérience utilisateur (DEM) : Apdex et Core Web Vitals, sessions utilisateur, flux de services, traces distribuées, analyse des appelants, analyse multidimensionnelle, USQL et entonnoirs.

1. Mesurer l'expérience #

Apdex et Core Web Vitals.

Indicateurs #

IndicateurCe qu'il mesure
ApdexScore de 0 à 1 : part d'actions satisfaisantes (sous un seuil), tolérables et frustrantes
Core Web Vitals (LCP, INP, CLS)Standards du web : affichage, réactivité, stabilité visuelle
Taux d'erreurs JavaScriptErreurs vues par les utilisateurs
Taux de rebond, conversionImpact métier
Bonne Pratique : L'Apdex se règle par application et par action : un seuil de 3 s pour une recherche n'a pas de sens pour un paiement. Les Core Web Vitals, eux, sont comparables d'un site à l'autre.

2. De la session à la ligne de code #

Les vues d'analyse.

Parcours d'analyse #

VueUsage
Application frontendVue d'ensemble : actions clés, géographie, navigateurs, erreurs
User sessionsChronologie d'une session : actions, erreurs, cascade de chargement (waterfall), replay si activé
Service flowEnchaînement des appels entre services pour une transaction
Distributed traces (PurePath)Trace détaillée d'une requête jusqu'au code et aux requêtes SQL
BacktraceQui appelle ce service ou cette base de données, depuis quelle action utilisateur
Multidimensional analysisDécouper temps de réponse et erreurs par n'importe quelle dimension (URL, méthode, exception)

Le parcours type : une action lente → ses traces → le service responsable dans le service flow → la méthode ou la requête SQL dans le PurePath.

3. USQL #

Interroger les sessions comme en SQL.

Requêtes #

-- Les 10 actions les plus lentes d'une application
SELECT useraction.name, AVG(useraction.duration), COUNT(*)
FROM useraction
WHERE useraction.application = "boutique"
GROUP BY useraction.name
ORDER BY AVG(useraction.duration) DESC
LIMIT 10

-- Sessions avec erreur par navigateur
SELECT browserFamily, COUNT(*) FROM usersession
WHERE totalErrorCount > 0 GROUP BY browserFamily

-- Entonnoir de conversion
SELECT FUNNEL(useraction.name = "Accueil" AS "Accueil",
              useraction.name = "Ajouter au panier" AS "Panier",
              useraction.name = "Payer" AS "Paiement")
FROM usersession
À savoir : Les données RUM les plus récentes sont aussi stockées dans Grail et interrogeables en DQL ; USQL reste le langage des données de session classiques.

Articles liés

ActiveGate et network zones : architecture, routage et haute disponibilité

Comprendre et déployer ActiveGate dans Dynatrace : rôles (routage, API, intégrations cloud, extensions, empla…

Dynatrace Operator sur Kubernetes : DynaKube, modes de supervision et dépannage

Superviser Kubernetes avec le Dynatrace Operator : installation Helm, ressource DynaKube, modes cloudNativeFu…

OpenTelemetry et Dynatrace : OTLP, collecteur et instrumentation

Intégrer OpenTelemetry à Dynatrace : endpoint OTLP et jetons, Dynatrace OTel Collector, traces, métriques (te…

Pour aller plus loin