RousselTMLEARNING

Observabilité

Grail : le data lakehouse de Dynatrace et le langage DQL

Grail stocke toutes les données d'observabilité de Dynatrace SaaS (logs, métriques, traces, événements, entités) sans schéma imposé. Buckets et rétention, requêtes DQL, applications qui les exploitent, droits d'accès et coûts.

Grail : le data lakehouse de Dynatrace et le langage DQL

1. Qu’est-ce que Grail ? #

Un lakehouse pour toutes les données.

Le principe #

Un data lakehouse combine le stockage peu coûteux d'un data lake et les requêtes rapides d'un entrepôt de données. Grail est celui de Dynatrace : les données sont stockées sans schéma imposé ni index préparé à l'avance, et leur structure est interprétée au moment de la requête (schema on read).

Sources, OpenPipeline, Grail et applications.
Type de donnéesExemplesCommande DQL
Logsjournaux applicatifs, système, conteneursfetch logs
MétriquesCPU, temps de réponse, métriques personnaliséestimeseries
Traces (spans)requêtes distribuées, appels de base de donnéesfetch spans
Événementsproblèmes Davis, déploiements, événements métier, facturationfetch events, fetch bizevents, fetch dt.system.events
Entitéshôtes, services, process groups (topologie)fetch dt.entity.host
Selon la version : Grail est disponible sur Dynatrace SaaS (nouvelle plateforme), pas sur Dynatrace Managed. Les environnements SaaS les plus anciens peuvent encore utiliser la gestion des logs classique tant qu'ils n'ont pas migré.

2. Collecte, buckets et rétention #

Où vont les données.

De la collecte au stockage #

Les données arrivent par le OneAgent, OpenTelemetry (OTLP), l'API d'ingestion, les extensions et les intégrations cloud. OpenPipeline les traite avant stockage : analyse des champs, masquage des données sensibles, extraction de métriques, routage vers un bucket (voir Logs avancés avec OpenPipeline).

Les buckets #

Grail range les données dans des buckets, chacun avec sa durée de rétention. Les buckets par défaut (par exemple default_logs) peuvent être complétés par des buckets dédiés : logs d'audit conservés un an, logs de debug conservés quelques jours.

Bonne pratique : Créez des buckets selon la durée de conservation et le public (équipe, sensibilité) : la rétention, les droits et le coût se pilotent alors par bucket. Détails dans La rétention des données dans Dynatrace.

3. Le langage DQL #

Des commandes enchaînées.

La syntaxe #

Une requête DQL est une suite de commandes séparées par une barre verticale | : chaque commande reçoit le résultat de la précédente. On commence par une source (fetch, timeseries), on filtre tôt, puis on transforme et on agrège.

fetch logs, from: -2h
| filter k8s.namespace.name == "boutique" and loglevel == "ERROR"
| parse content, "LD 'status=' INT:status"
| summarize erreurs = count(), by: { dt.entity.service, status }
| sort erreurs desc
| limit 10

Cette requête lit deux heures de logs, garde les erreurs du namespace boutique, extrait le code de statut avec parse (motif DPL), compte les erreurs par service et par statut, puis garde les dix plus fréquentes.

timeseries cpu = avg(dt.host.cpu.usage), by: { dt.entity.host }, from: -24h
| fieldsAdd hote = entityName(dt.entity.host)
| sort arrayAvg(cpu) desc
| limit 5

timeseries interroge les métriques ; entityName() remplace l'identifiant de l'hôte par son nom.

Commandes à connaître #

CommandeRôle
fetchlire une source : logs, spans, events, bizevents, entités
timeseriesinterroger des métriques sous forme de séries temporelles
filter / filterOutgarder ou exclure des enregistrements
parseextraire des champs d’un texte (motifs DPL)
fields / fieldsAdd / fieldsRemovechoisir, calculer ou retirer des champs
summarizeagréger : count(), avg(), percentile()… avec by: {}
makeTimeseriestransformer des enregistrements (logs, événements) en série temporelle
lookup / joinenrichir avec une autre requête
sort / limittrier et limiter le résultat

Pour aller plus loin : DQL en pratique et Grail et DQL avancés.

4. Exploiter les données #

Notebooks, tableaux de bord, applications, workflows.

Où utiliser une requête DQL #

ApplicationUsage
Notebooksexplorer, documenter une analyse, partager une enquête
Dashboardssuivre des indicateurs dans des tuiles alimentées par DQL
Applications (Logs, Services, Kubernetes…)analyses prêtes à l’emploi, chacune s’appuyant sur Grail
Workflowsexécuter une requête planifiée ou déclenchée par un événement, puis agir (notification, ticket, API)

Exemple FinOps : un workflow hebdomadaire calcule l'utilisation moyenne du CPU et de la mémoire des machines virtuelles sur 30 jours et ouvre une demande de réduction de taille pour celles qui restent sous 30 % (voir Workflows et AutomationEngine).

5. Droits d’accès et coûts #

Gouverner Grail.

Qui voit quoi #

L'accès aux données de Grail se règle avec des politiques IAM (par exemple lecture des logs, lecture de certains buckets), éventuellement restreintes par des conditions ou des limites de politique (policy boundaries). Les segments, eux, servent à filtrer les vues, pas à donner des droits (voir Gérer les permissions).

Ce qui est facturé #

Avec la licence DPS, Grail est facturé à l'ingestion, à la rétention et aux requêtes (volume de données lu). Une requête mal ciblée sur des mois de logs coûte cher (voir Licences Dynatrace).

Erreur courante : Lancer fetch logs sans filtre de temps ni filtre précoce sur toute la rétention : le résultat est lent et la requête lit inutilement des volumes importants. Réduisez la période, filtrez dès la deuxième ligne et ciblez le bucket.

Articles liés

L'app QuickStart de Dynatrace : obtenir ses premières données en quelques minutes

Découvrir l'app QuickStart : ajouter des données avec Auto Discovery ou une tuile dédiée, lire les Findings, …

L'app Investigations de Dynatrace : mener une enquête sur les données de Grail

Découvrir l'app Investigations : requêtes DQL, extraction avec DPL Architect, enrichissement, arbre de requêt…

Site Reliability Guardian dans Dynatrace

Valider automatiquement une mise en production avec des objectifs de disponibilité, de performance et de capa…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !