đĄ Dynatrace â APM, Observability & IA (Davis)
Guide complet IDEO-Lab sur la plateforme d'observabilité "Full-Stack" et son IA causale.
Concept : Observabilité
Software Intelligence Platform, MELT (Metrics, Logs, Traces).
Observability SaaS MELTPiliers (OneAgent, Davis)
OneAgent (Collecte), Grail (Stockage), Davis (IA).
OneAgent Davis AI Grailvs. Datadog / New Relic
Comparaison (Automatisé vs Toolset).
Datadog New Relic ComparatifOneAgent (Collecte)
Agent unique (Infra+APM+Logs+RUM). Auto-injection.
OneAgent Auto-injectionActiveGate (Gateway)
Proxy/Gateway de collecte (Routage, K8s, Cloud).
ActiveGate ProxySmartscape (Topologie)
Cartographie visuelle des dépendances (temps réel).
Smartscape TopologieAPM (Application)
Application Performance Monitoring. (CĆur de Dynatrace).
APM PerformanceAPM : PurePath
Technologie de Distributed Tracing (Trace + Spans).
PurePath Distributed TracingAPM : BDD & Services
Identification des requĂȘtes lentes (N+1), appels externes.
Slow Queries N+1Browser (RUM)
Real User Monitoring (Front-End, Core Web Vitals, JS Errors).
RUM Front-endSession Replay
Relecture vidéo des sessions utilisateur (Débogage).
Session Replay RUMSynthetics
Monitoring Proactif (Ping, Scripted Browser, API).
Synthetics UptimeInfrastructure (Hosts)
Monitoring Serveurs (CPU, RAM, Disque, Processus, Réseau).
Infrastructure CPUKubernetes (K8s)
Monitoring K8s (Operator, Pods, NĆuds, Pixie eBPF).
Kubernetes eBPFLog Management (Grail)
Logs "powered by Grail". "Logs in Context" (corrélation).
Logs Grail Logs in ContextDavis AI (Causal AI)
Moteur d'IA (Causation vs Corrélation).
Davis AI IA CausationDavis : Root Cause Analysis
Analyse de cause racine automatique (RCA).
RCA Davis AIDavis : Auto-Baselining
Détection d'anomalies (seuils dynamiques).
Anomalie BaselineGrail (Data Lakehouse)
Stockage (Metrics, Logs, Traces) pour DQL.
Grail TSDBDQL (Query Language)
Dynatrace Query Language (fetch, timeseries, filter).
Application Security
Détection de vulnérabilités (Runtime, RAS, SCA).
AppSec SécuritéQu'est-ce que Dynatrace ?
Dynatrace est une plateforme d'observabilité "Full-Stack", fournie en mode SaaS (aussi en "Managed" On-premise). Elle est conçue pour la supervision des environnements cloud hybrides et complexes (ex: Microservices, Kubernetes).
Sa philosophie est l'automatisation et l'IA causale. L'objectif est de réduire massivement le travail manuel de configuration et de diagnostic.
Les 3 Piliers de l'Observabilité (MELT)
L'observabilité (capacité à "comprendre" l'état interne d'un systÚme) repose sur la corrélation de 3 (parfois 4) types de données de télémétrie :
| Pilier | Anglais | Description | Question Répondue |
|---|---|---|---|
| Métriques | Metrics | Mesure numérique agrégée (ex: CPU=80%). | "Quoi ?" (Quoi est en panne ?) |
| ĂvĂ©nements | Events | Action ponctuelle (ex: "DĂ©ploiement"). | "Quand ?" |
| Logs | Logs | Enregistrement texte (ex: "User login failed"). | "Pourquoi ?" (Le contexte) |
| Traces | Traces | Trajet d'une requĂȘte (ex: API -> DB -> Cache). | "OĂč ?" (OĂč est le goulot d'Ă©tranglement ?) |
La force de Dynatrace est de corréler automatiquement ces 4 types de données via son IA (Davis).
La plateforme Dynatrace repose sur 4 composants clés :
| Composant | RĂŽle | Description |
|---|---|---|
| OneAgent | Collecte (Auto) | L'agent "tout-en-un" qui découvre et instrumente (APM, Infra, Logs) automatiquement. |
| Smartscape | Topologie (Map) | La visualisation en temps réel des dépendances (App <-> Service <-> HÎte). |
| PurePath | Traçage (Trace) | La technologie de "Distributed Tracing" qui suit 100% des transactions de bout en bout. |
| Grail | Stockage (Database) | Le "Data Lakehouse" (base de données Time-Series) qui stocke tous les MELT sans échantillonnage. |
| Davis AI | Analyse (IA Causale) | Le moteur d'IA qui analyse les données de Grail pour trouver la cause racine (RCA) des problÚmes. |
Les "3 Grands" de l'observabilité SaaS. Ils convergent, mais ont des philosophies différentes.
| CritĂšre | Dynatrace | Datadog | New Relic |
|---|---|---|---|
| Philosophie | Automatisé (AI-Core). (IA causale "Davis" centrale). | Intégré (Toolbox). (TrÚs large, "couteau suisse"). | Ouvert (Data-Platform). (TrÚs bon APM, NRDB/NRQL). |
| Point Fort | Analyse Cause Racine (RCA) auto, OneAgent (zĂ©ro config). | Infrastructure, Logs, ĂcosystĂšme d'intĂ©grations (+500). | APM (Tracing), RUM (Front-end), NRQL. |
| Installation | TrĂšs simple (OneAgent). | Plusieurs agents (Infra, APM, Logs...). | Plusieurs agents (Infra, APM...). |
| Stockage | Grail (Lakehouse) | (Propriétaire) | NRDB (Time-Series DB) |
| Langage Query | DQL | (Langage propriétaire) | NRQL (SQL-like) |
OneAgent est le "point de vente" n°1 de Dynatrace. C'est un agent logiciel unique que vous installez sur un hĂŽte (Serveur, VM, NĆud K8s).
Fonctionnement (Auto-Instrumentation)
Une fois installé, OneAgent fait tout, automatiquement :
- Monitoring OS : Il collecte les métriques de l'Infrastructure (CPU, RAM, Disque, Réseau).
- Découverte : Il scanne les Processus qui tournent sur l'hÎte (ex: il trouve un process "Java", "Nginx", "MySQL").
- Auto-Injection (Magie) : Il s'injecte automatiquement (au niveau binaire/bytecode) dans les processus supportés (Java, .NET, PHP, Node.js...) pour activer l'APM (Distributed Tracing).
- Collecte Logs : Il détecte et collecte les fichiers logs (
.log). - Injection RUM : Si c'est un serveur web, il injecte l'agent Browser (RUM) (JavaScript) dans le HTML.
Avantage : Zéro configuration (ou presque). 1 agent = 5 types de monitoring (Infra, APM, Logs, RUM, Topologie).
L'ActiveGate est un composant (installé sur un serveur dédié dans votre réseau) qui sert de proxy/gateway sécurisé entre vos agents et le cluster Dynatrace (SaaS ou Managed).
RĂŽles de l'ActiveGate
- Proxy (Sécurité) : (Usage principal) Au lieu que 1000 OneAgents parlent à Internet, seul l'ActiveGate parle à Dynatrace (SaaS). Les OneAgents (internes) parlent uniquement à l'ActiveGate.
- Collecteur (Cloud) : C'est lui qui exécute le "polling" des APIs Cloud (AWS, Azure) ou VMware, car il est "dans" votre réseau.
- Collecteur (K8s) : L'ActiveGate tourne dans Kubernetes pour collecter les métriques du cluster.
- Collecteur (Synthetics) : Peut exécuter des tests Synthetics "privés" (depuis votre LAN).
- Buffer : Met en cache les données si la connexion au cluster Dynatrace est perdue.
Smartscape est la carte topologique (visualisation) en temps réel de Dynatrace. C'est le résultat de l'auto-découverte du OneAgent.
Flux de Dépendance
Il montre toutes les dépendances (verticales et horizontales) de votre application :
[ Application (MonApp) ]
â
⌠(DĂ©pend de)
[ Service (Frontend-API) ] <ââ (Communique avec) âââș [ Service (Backend-Auth) ]
â â
⌠(Tourne sur) ⌠(Tourne sur)
[ Processus (Node.js) ] [ Processus (Java) ]
â â
⌠(Tourne sur) ⌠(Tourne sur)
[ HĂŽte (Serveur 1) ] [ HĂŽte (Serveur 2) ]
â â
⌠(Tourne sur) ⌠(Tourne sur)
[ Data Center (AWS eu-west-1) ] [ Data Center (AWS eu-west-1) ]
Avantage : C'est cette cartographie qui permet Ă l'IA (Davis) de comprendre qu'un "CPU ĂlevĂ©" (HĂŽte 2) est la cause d'une "Erreur 500" (Frontend-API).
L'APM est le produit phare historique de Dynatrace. C'est un outil (Couche 7) qui analyse la performance de votre code de l'intérieur.
Objectif : Répondre à la question "Pourquoi cette page est-elle lente ?".
Auto-Instrumentation (OneAgent)
L'agent APM (ex: pour Java, .NET, PHP, Node.js, Python, Go) s'attache au runtime de votre application. Il "observe" (instrumente) automatiquement les fonctions clés :
- Frameworks Web (Spring, Symfony, Express)
- Appels de Base de Données (JDBC, PDO)
- Appels Externes (API REST, gRPC)
- BibliothĂšques (Redis, Kafka)
Métriques Clés (Dashboard APM)
- Response Time (Temps de réponse) : (ex: 200ms) Le temps moyen d'une transaction.
- Throughput (DĂ©bit) : (ex: 1000 rpm) RequĂȘtes par minute.
- Error Rate (Taux d'erreur) : (ex: 0.5%) Pourcentage de requĂȘtes Ă©chouĂ©es (5xx, Exceptions).
- Apdex Score : Score de satisfaction (0-1).
PurePath (Trace de bout en bout)
PurePath est la technologie (et la marque) de Distributed Tracing de Dynatrace. C'est l'équivalent des "Traces" de New Relic ou Datadog, mais avec une capture de 100% (sans sampling au début).
Il capture le trajet complet (Trace) d'une requĂȘte (Transaction) Ă travers les diffĂ©rents services (Microservices).
Trace vs. Span
- Trace : L'ensemble du "trajet" (l'ID de la requĂȘte globale, ex:
abc-123). - Span (Ătendue) : Une "Ă©tape" (une opĂ©ration) dans ce trajet (ex: l'appel Ă l'API Paiement).
Visualisation (Waterfall)
(Trace ID: abc-123. Temps Total: 800ms)
[API Gateway (Span 1 - 800ms)]
â
ââ [Service Auth (Span 2 - 50ms)]
â
ââ [Service Commande (Span 3 - 750ms)]
â
âââ [DB Query (Span 4 - 300ms)]
â
âââ [Service Paiement (Span 5 - 400ms)]
(Diagnostic : Le goulot d'étranglement est le Service Paiement)Visibilité Niveau Code (Method Hotspots)
La force de PurePath (grĂące Ă l'auto-injection de OneAgent) est qu'il ne montre pas seulement les appels "Service A -> Service B".
Il montre le détail à l'intérieur du service (Code-Level Visibility) :
- Method Hotspots : "Dans le Service Paiement (400ms), 350ms ont été passés dans la fonction
calculerTVA()." - Stack Traces : Permet de voir la pile d'appels exacte.
L'agent APM (ex: php_newrelic) instrumente les pilotes de BDD (PDO, MySQLi) pour chronomĂ©trer chaque requĂȘte.
Rapports Disponibles (APM -> Databases)
- Response Time : Temps moyen de réponse de la BDD.
- Throughput : RequĂȘtes BDD par minute.
- Slowest Queries (RequĂȘtes Lentes) : Le rapport le plus utile. Liste les requĂȘtes (ex:
SELECT * ...) qui prennent le plus de temps (ex: > 500ms). - ProblÚme N+1 : Dynatrace détecte les "N+1 Query Problems" (ex: une boucle
foreachqui exĂ©cute 100 requĂȘtesSELECTau lieu d'un seulJOIN).
RUM répond à la question : "Comment mes utilisateurs réels (Real Users) perçoivent-ils la performance (cÎté client) ?"
Fonctionnement (Agent Browser)
L'agent APM (back-end) injecte automatiquement (via OneAgent) un snippet JavaScript dans le <head> des pages HTML.
Ce JS s'exécute dans le navigateur du client et collecte des métriques (LCP, INP, Erreurs JS) puis les envoie aux Collectors Dynatrace.
Métriques Clés (Front-End)
- Core Web Vitals : (Voir 4.2) LCP, INP, CLS.
- Temps de chargement de page (Page Load Time) : Décomposé (Network, DOM Processing, Page Rendering).
- Erreurs JavaScript (JS Errors) : Agrégation des erreurs (ex:
TypeError: 'null' is not an object) avec stack trace. - RequĂȘtes AJAX : Suivi des appels
fetch()(Temps de réponse, Erreurs). - Corrélation : Connecte la trace Front-end (RUM) à la trace Back-end (PurePath) pour une vue "full-stack".
Session Replay (Relecture de Session) est une fonctionnalité avancée du RUM. Elle capture visuellement la session d'un utilisateur (mouvements de souris, clics, défilement) et la transforme en "vidéo" de débogage.
Usage (Diagnostic)
ProblÚme : Un client se plaint : "J'ai cliqué sur Payer et rien ne s'est passé !". L'erreur JS dit "Bouton indéfini".
Solution : L'équipe N2/N3 regarde le "Session Replay" de ce client. Ils voient que l'utilisateur a cliqué 10 fois sur le bouton *avant* que le script de paiement ne soit chargé (condition de course), ce qui a causé l'erreur.
Attention (RGPD/ConfidentialitĂ©) : Cette fonction capture tout. Dynatrace doit ĂȘtre configurĂ© pour masquer (mask) automatiquement les champs sensibles (mots de passe, cartes de crĂ©dit, noms) pendant l'enregistrement.
ProblÚme : L'APM et le RUM sont réactifs (ils attendent un utilisateur pour détecter une panne). Que se passe-t-il si votre site tombe à 3h du matin (zéro trafic) ?
Solution : Synthetics. C'est un monitoring proactif (robotisé). Dynatrace utilise des "locations" (robots) depuis des datacenters mondiaux pour tester votre site 24/7 (ex: toutes les 5 min).
Checks Simples (Uptime)
- HTTP Monitor (API Test) : Fait un appel
GET/POSTà une API (ex:/api/health) et vérifie que le code de statut est 200 et que la réponse (JSON) contient "status: ok".
Checks Scriptés (Browser Clickpaths)
Utilise un navigateur Chrome "headless" (similaire Ă Selenium/Playwright) pour simuler un parcours utilisateur complet.
(Exemple de script Clickpath) 1. Aller sur /login 2. Entrer "user@test.com" 3. Entrer "password" 4. Cliquer sur "Connexion" 5. Vérifier que le texte "Tableau de bord" est présent 6. Cliquer sur "Ajouter au Panier" 7. Vérifier que le panier contient "1" (Si l'étape 5 échoue -> Alerte !)
Permet de tester le bon fonctionnement des tunnels de conversion critiques.
Le produit New Relic Infrastructure (NRI) (inclus dans OneAgent) supervise l'HĂŽte (Host) : le serveur (VM, bare-metal, ou conteneur) sur lequel tourne votre application.
Métriques Collectées (Exemples)
- SystĂšme : Load Average (1, 5, 15 min), Uptime.
- CPU : % Utilisation (Total, User, System, I/O Wait).
- Mémoire : % Utilisation (RAM totale, utilisée, cache).
- Disque : % Utilisation (Espace disque), I/O (opérations/sec).
- Réseau : Trafic (Octets entrants/sortants), Erreurs.
- Processus : Liste des processus (ex:
nginx) et leur consommation CPU/RAM.
Le monitoring de Kubernetes est une brique essentielle de l'observabilité moderne. New Relic fournit une intégration K8s complÚte (généralement installée via un Helm Chart).
Composants
- OneAgent Operator : Un "opĂ©rateur" K8s qui gĂšre le dĂ©ploiement de OneAgent (en mode DaemonSet) sur chaque NĆud (Node) du cluster.
- Intégration API K8s : RécupÚre les métriques du Control Plane (état des Deployments, Pods, Services...).
- Pixie (eBPF) : (Acquisition récente) Utilise eBPF (au niveau Kernel Linux) pour tracer toutes les communications (Réseau, HTTP, DNS) entre les Pods, sans avoir besoin d'installer un agent APM dans chaque application (Auto-instrumentation).
C'est la solution de Log Aggregation (type ELK/Splunk) de Dynatrace. Les logs sont stockés dans la base Grail.
Ingestion (Forwarding)
- OneAgent (Défaut) : L'agent (via config YAML) "tail" (suit) les fichiers (ex:
/var/log/nginx/access.log) et envoie les nouvelles lignes. - OpenTelemetry (OTel) : Support natif du standard OTel.
- Plugins (Fluentd, Logstash) : Vous pouvez configurer vos pipelines de logs existants pour "forwarder" les logs vers l'API d'ingestion Dynatrace.
Logs in Context (La "Magie")
C'est la fonctionnalité la plus puissante. L'agent APM (OneAgent) enrichit automatiquement les logs (ex: Monolog) en y injectant l'ID de la Trace (PurePath).
Log (Standard) : [2025-11-08] ERROR: Failed to process payment. Log (Enrichi par Dynatrace) : [2025-11-08] ERROR: Failed to process payment. (dt.trace_id=abc-123, dt.span_id=def-456)
Résultat : Lorsque vous regardez une Trace PurePath (abc-123) qui a échoué, l'interface vous montre automatiquement tous les logs (ERROR, INFO...) qui ont été générés pendant cette transaction spécifique.
Davis est le moteur d'IA (Causal AI) au cĆur de Dynatrace. C'est le diffĂ©renciateur n°1 de la plateforme.
Causation vs. Corrélation
La plupart des outils (Monitoring classique) font de la CorrĂ©lation (Ex: "TempĂȘte d'alertes" : 50 alertes en mĂȘme temps -> CPU, RAM, Erreurs, Latence...). L'humain (N2/N3) doit trier pour trouver la cause.
Davis (IA Causale) utilise la topologie (Smartscape) et les dépendances (PurePath) pour trouver la Causation (Root Cause Analysis - RCA).
Alerte "CorrĂ©lation" (Classique) : (100 ALERTES) - Erreur 500 sur /api/login - Latence Ă©levĂ©e sur API Gateway - CPU 100% sur HĂŽte A - CPU 100% sur HĂŽte B - Erreurs "Timeout" sur Service Auth Alerte "Causation" (Davis) : (1 ALERTE) ProblĂšme #123: Augmentation Taux Erreur CAUSE RACINE (RCA) : Un "Bad Deployment" (ĂvĂ©nement) sur le Service Auth a introduit une boucle (N+1) dans la BDD (Trace), causant une saturation CPU (Infra).
L'Analyse de Cause Racine (RCA) est le produit final de l'IA Davis. Au lieu de vous donner 100 alertes, Davis les consolide en 1 seul "ProblĂšme" actionnable.
Processus d'Analyse (Simplifié)
- Détection (Baseline) : Davis détecte une Anomalie (ex: le temps de réponse de
/logindĂ©vie de la norme). - CorrĂ©lation (Smartscape) : Davis analyse toutes les mĂ©triques (MELT) de tous les composants liĂ©s Ă
/login(via Smartscape/PurePath). (ex: L'HÎte, le Pod K8s, les appels BDD, les appels API externes...). - Causation (IA) : Davis utilise son IA causale pour trouver l'événement (ex: un déploiement) ou la métrique (ex: une saturation CPU) qui est la cause la plus probable de l'anomalie.
- Rapport (ProblÚme) : Davis génÚre 1 ticket "ProblÚme" (au lieu de 100 alertes) indiquant la cause racine.
ProblÚme (Seuils Statiques) : Une alerte CPU > 90% est inutile si elle se déclenche toutes les nuits à 2h du matin (pendant la sauvegarde), mais elle est critique si elle se déclenche à 10h du matin (pics de trafic).
Solution : Baselining Dynamique (Davis)
Dynatrace (via Davis AI) apprend automatiquement le comportement "normal" (Baseline) de chaque métrique, pour chaque heure du jour et chaque jour de la semaine.
Résultat : La détection d'anomalies n'est pas basée sur un seuil fixe, mais sur une déviation par rapport à la "norme" attendue.
Baseline (Apprise par Davis) : "Le Lundi à 14h, le CPU est normalement entre 30% et 50%." Alerte Statique (Bruyante) : `CPU > 60%` (Se déclenche souvent) Alerte Davis (Intelligente) : `CPU > 55% (Déviation de la Baseline)` (Se déclenche Lundi 14h) (Ne se déclenche pas à 2h du matin si la baseline est de 70%)
Grail est le nom de la base de données (Data Lakehouse) propriétaire de Dynatrace. C'est le "backend" de stockage unifié pour toutes les données (MELT).
Avantages
- Massivement Scalable : Conçu pour ingérer des pétaoctets de données de télémétrie.
- Sans Schéma (Schemaless) : Peut ingérer n'importe quel type de log ou d'événement.
- Index-less : (Surtout pour les logs) Ne nĂ©cessite pas d'indexation lourde (comme Elasticsearch), permettant des requĂȘtes rapides sur des volumes massifs (stockage "froid" rapide).
- DQL : C'est le moteur qui exécute le DQL (Dynatrace Query Language).
DQL est le langage de requĂȘte (similaire Ă NRQL ou PromQL) utilisĂ© pour explorer (ObservabilitĂ©) les donnĂ©es stockĂ©es dans Grail.
Il est utilisé pour créer des Dashboards et des Alertes personnalisées.
Syntaxe (Pipe-based)
DQL utilise une syntaxe "pipe" (|), similaire Ă Splunk ou KQL (Azure).
-- 1. Récupérer les logs fetch logs | filter log.level == "ERROR" | summarize count() by bin(timestamp, 1h), host.name -- 2. Récupérer les spans (traces) fetch spans | filter http.status_code == 500 | summarize avg(duration), p90(duration) by http.target -- 3. Métriques (TIMESERIES) fetch metrics, from: "builtin:host.cpu.usage" | filter dt.entity.host == "HOST-123" | timeseries avg(value), by: [dt.entity.host]
Dynatrace Application Security est un module (intégré au OneAgent) qui combine l'APM avec la sécurité (similarité avec Datadog Cloud Security Management).
Fonctionnalités
- SCA (Software Composition Analysis) : L'agent (APM) scanne vos dépendances (
package.json,pom.xml) et les compare à des bases de données (CVEs) pour trouver les librairies vulnérables (ex: "Log4j"). - RASP (Runtime Application Self-Protection) : L'agent (APM) surveille activement l'exécution du code (via PurePath) pour détecter et (optionnellement) bloquer les attaques L7 (ex: Injection SQL, OS Command Injection) en temps réel.
RequĂȘtes de Base
-- Sélectionner les 10 derniers logs fetch logs | limit 10 -- Sélectionner les métriques (CPU) fetch metrics, from:"builtin:host.cpu.usage" -- Sélectionner les traces (Spans) fetch spans -- Sélectionner les événements (RUM) fetch events, from:"com.dynatrace.synthetic.event"
Filtrage & Agrégation
-- Filtrer (Filter) fetch logs | filter log.level == "ERROR" and host.name == "srv-1" -- Agréger (Summarize) (Group By) fetch logs | summarize count() by log.level -- Agréger (Timeseries) fetch metrics, from:"builtin:host.cpu.usage" | timeseries avg(value), by:[dt.entity.host] -- Agréger (Statistiques) fetch spans | summarize avg(duration), p90(duration), count()
