RousselTMLEARNING

Article · Dynatrace : de la découverte à l’expertise

Les buckets Grail

1. Qu’est-ce qu’un bucket ? #

L’unité de stockage de Grail.

Définition #

Dans Grail, chaque enregistrement (ligne de log, span, événement, événement métier) est stocké dans un bucket. Un bucket est un conteneur logique qui a trois propriétés : la table qu'il alimente (logs, spans, events, bizevents…), sa durée de rétention en jours, et les droits qui permettent d'y lire. C'est l'outil qui permet de ne pas traiter toutes les données de la même façon.

OpenPipeline route chaque enregistrement vers un bucket.
À savoir : Les métriques ne passent pas par les buckets de la même façon : leur conservation et leur résolution sont gérées par la plateforme. Les buckets concernent surtout les logs, les spans, les événements et les événements métier.

Les buckets par défaut #

Chaque environnement dispose de buckets par défaut, qui reçoivent les données tant qu'aucune règle ne les envoie ailleurs, et de buckets système en lecture seule.

BucketTableContenu
default_logslogstous les logs non routés ailleurs
default_spansspanstraces distribuées
default_eventseventsévénements (déploiements, Davis, personnalisés)
default_bizeventsbizeventsévénements métier
dt_system_…, dt_…selon le casdonnées système (facturation, audit) : lecture seule
Selon la version : La liste exacte et la rétention par défaut (de l'ordre de 10 jours pour les spans et 35 jours pour les logs et les événements) dépendent de votre contrat et de la version de la plateforme : vérifiez-les dans Storage management.

2. Pourquoi créer ses propres buckets #

Quatre bonnes raisons.

Les motivations #

BesoinExempleBucket dédié
Rétention différenteaudit conservé 1 an, debug 7 jourslogs_audit_1y, logs_debug_7d
Droits d’accèslogs de sécurité visibles par la seule équipe sécuritélogs_security
Coûtne pas payer 35 jours de rétention pour des logs verbeuxlogs_debug_7d
Performance des requêtesinterroger un bucket ciblé plutôt que tous les logsun bucket par grand usage
Mesurer, classer, créer, router, contrôler.

Mesurer avant de découper #

Commencez par regarder d'où viennent les volumes : quelques sources représentent souvent l'essentiel des données.

// Volume ingéré par bucket et par source sur 7 jours (avant de décider d'une stratégie)
fetch logs, from: -7d
| summarize lignes = count(), by: { dt.system.bucket, log.source }
| sort lignes desc
| limit 30
Bonne pratique : Visez quelques buckets bien pensés (par durée de conservation et par public), pas un bucket par application : trop de buckets compliquent les droits, les requêtes et la maintenance, et leur nombre par environnement est limité.

3. Créer un bucket #

Interface, API ou Terraform.

Dans l’interface #

  1. Ouvrez Storage management (menu Manage ou Settings, selon la version).
  2. Choisissez Create bucket.
  3. Renseignez le nom technique (minuscules, chiffres et tirets bas, sans préfixe réservé comme dt_ ou default_), le nom affiché, la table et la rétention en jours.
  4. Enregistrez : le bucket passe à l'état actif après quelques instants.
Erreur courante : Choisir le nom à la légère : il apparaît dans les règles de routage, les politiques IAM et les requêtes, et ne peut pas être renommé. Adoptez une convention, par exemple <table>_<usage>_<durée> (logs_audit_1y).

Par l’API et en Terraform #

La gestion des buckets passe par l'API de la plateforme (apps.dynatrace.com) avec un jeton de plateforme ou un client OAuth ayant les droits sur les définitions de buckets :

curl -X POST "https://abc12345.apps.dynatrace.com/platform/storage/management/v1/bucket-definitions" \
  -H "Authorization: Bearer $DT_PLATFORM_TOKEN" -H "Content-Type: application/json" \
  -d '{
    "bucketName": "logs_audit_1y",
    "displayName": "Logs d’audit (1 an)",
    "table": "logs",
    "retentionDays": 365
  }'
curl -H "Authorization: Bearer $DT_PLATFORM_TOKEN" \
  "https://abc12345.apps.dynatrace.com/platform/storage/management/v1/bucket-definitions"
resource "dynatrace_platform_bucket" "audit" {
  name         = "logs_audit_1y"
  display_name = "Logs d’audit (1 an)"
  table        = "logs"
  retention    = 365
}
Selon la version : Les noms exacts des points d'API, des permissions et de la ressource Terraform peuvent évoluer : vérifiez la référence de l'API Storage management et du provider Terraform Dynatrace de votre version.
Bonne pratique : Déclarez les buckets en code (Terraform ou Monaco) avec les règles OpenPipeline et les politiques IAM qui les utilisent : l'ensemble se recrée à l'identique dans un autre environnement.

4. Router les données #

OpenPipeline décide du bucket.

Les règles de stockage #

Un bucket vide ne sert à rien : il faut y envoyer des données. Dans OpenPipeline, chaque pipeline se termine par une étape de stockage qui affecte les enregistrements à un bucket selon une condition DQL. Les enregistrements qui ne correspondent à aucune règle vont dans le bucket par défaut.

// Condition de routage (OpenPipeline) : logs d'authentification Linux vers le bucket d'audit
matchesValue(log.source, "/var/log/auth.log") or matchesValue(log.source, "/var/log/secure")

// Logs de débogage d'un namespace vers le bucket court
k8s.namespace.name == "boutique" and loglevel == "DEBUG"

Détails sur les pipelines, le routage et le traitement dans Logs avancés avec OpenPipeline.

À savoir : Le routage s'applique aux données reçues après sa mise en place : les données déjà stockées restent dans leur bucket d'origine jusqu'à la fin de leur rétention.
Selon la version : Sur les environnements qui n'ont pas encore migré vers OpenPipeline pour les logs, l'affectation se fait par les règles d'attribution de bucket du traitement des logs (Log Monitoring) ; le principe est le même.

5. Interroger et contrôler #

DQL et droits IAM.

Cibler un bucket en DQL #

Chaque enregistrement porte le nom de son bucket dans le champ dt.system.bucket. Filtrer dessus réduit le volume lu, donc le temps de réponse et le coût de la requête.

// Ne lire que le bucket d'audit
fetch logs, from: -30d
| filter dt.system.bucket == "logs_audit_1y"
| filter contains(content, "sudo")
| fields timestamp, host.name, content
| sort timestamp desc
// Lister les buckets de l'environnement et leur rétention
fetch dt.system.buckets
| fields name, table, retentionDays, status
| sort name asc
Selon la version : La liste des buckets par DQL (fetch dt.system.buckets) et ses champs dépendent de la version ; l'application Storage management donne la même information.

Les droits par bucket #

Les politiques IAM peuvent limiter la lecture à certains buckets, et réserver la création et la modification des buckets aux administrateurs :

// Équipe sécurité : lecture des logs du seul bucket d'audit
ALLOW storage:logs:read, storage:buckets:read
  WHERE storage:bucket-name = "logs_audit_1y";

// Administrateurs de la plateforme : création et modification des buckets
ALLOW storage:bucket-definitions:read, storage:bucket-definitions:write;

Principes et organisation des droits : Gérer les permissions.

Erreur courante : Donner storage:logs:read sans condition : la personne lit alors tous les buckets de logs, y compris l'audit. Ajoutez la condition sur le nom du bucket.

6. Modifier, vider, supprimer #

Des opérations à manier avec soin.

Les effets #

OpérationEffet
Augmenter la rétentionles données déjà présentes sont conservées plus longtemps
Réduire la rétentionles données plus anciennes que la nouvelle durée sont supprimées
Vider le buckettoutes ses données sont supprimées, le bucket reste
Supprimer le bucketle bucket et ses données disparaissent ; les règles qui l’utilisent doivent être corrigées
Erreur courante : Réduire une rétention pour faire des économies sans vérifier les obligations légales ou contractuelles : la suppression est définitive. Documentez la durée retenue pour chaque bucket (voir La rétention des données dans Dynatrace).

7. Coûts #

Ce que la rétention coûte.

Ce qui est facturé #

Avec la licence DPS, les données Grail sont facturées à l'ingestion, à la rétention (volume conservé multiplié par la durée) et aux requêtes (volume lu). Le choix du bucket agit donc directement sur la facture (voir Licences Dynatrace et Licensing et FinOps).

  • Envoyez les logs verbeux dans un bucket court plutôt que de les garder 35 jours.
  • Pour un indicateur de long terme, extrayez une métrique dans OpenPipeline et gardez le log brut peu de temps.
  • Supprimez à l'ingestion ce qui ne sert jamais (sondes de santé, logs de bibliothèques bavardes).
Selon la version : Selon le contrat, certaines offres de rétention incluent une partie des requêtes : comparez les options de votre abonnement avant de fixer les durées.

8. Commandes à connaître et TP #

L’aide-mémoire et un exercice guidé.

Commandes à connaître #

ActionCommande ou écran
Voir les buckets et leur rétentionStorage management, ou fetch dt.system.buckets
Créer un bucketPOST /platform/storage/management/v1/bucket-definitions
Mesurer le volume par bucketfetch logs | summarize count(), by: { dt.system.bucket }
Lire un seul bucket| filter dt.system.bucket == "…"
Router vers un bucketOpenPipeline, étape de stockage avec une condition DQL
Restreindre la lectureWHERE storage:bucket-name = "…"

TP : un bucket d’audit #

  1. Mesurez le volume des logs d'authentification Linux sur 7 jours (log.source contenant auth.log ou secure).
  2. Créez le bucket logs_audit_1y (table logs, 365 jours), dans l'interface ou par l'API.
  3. Dans OpenPipeline, ajoutez une règle de stockage qui envoie ces logs vers le nouveau bucket.
  4. Provoquez quelques connexions SSH sur un hôte supervisé, puis vérifiez avec la requête de la section 5 que les nouvelles lignes arrivent dans logs_audit_1y.
  5. Créez une politique IAM qui réserve la lecture de ce bucket au groupe sécurité, et testez avec un compte qui n'en fait pas partie.

Résultat attendu : les logs d'authentification sont conservés un an, lisibles par la seule équipe sécurité, et les autres logs gardent la rétention par défaut.

📄 Les buckets Grail dans Dynatrace : création, routage, rétention, droits et coûts →

Mon suivi

  • ⏱ Durée estimée : ≈ 15 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Discussions récentes de la formation

Poser une question sur cette leçon →Voir toutes les discussions de la formation

Glossaire de la formation

Observabilité

La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...

CI/CD

Intégration Continue et Déploiement Continu. Pratiques DevOps visant à automatiser les tests et le déploiement des applications pour livrer plus rapid...

Dynatrace

Plateforme d'observabilité complète basée sur l'intelligence artificielle (Davis), offrant la surveillance applicative (APM), d'infrastructure et l'ex...

APM (Application Performance Monitoring)

Surveillance des performances applicatives pour identifier, diagnostiquer et résoudre les problèmes complexes liés aux performances et à la disponibil...

SLA (Service Level Agreement)

Contrat officiel conclu entre un fournisseur de services et son client, définissant le niveau de service attendu (disponibilité, temps de réponse, etc...

SLO (Service Level Objective)

Objectif interne chiffré défini par l'équipe technique (SRE) concernant le niveau de fiabilité d'un service (ex: 99.9% de disponibilité). Relation : L...

SLI (Service Level Indicator)

Métrique quantitative réelle mesurant le niveau de service fourni en production (ex: taux de réussite des requêtes, latence moyenne). Relation : Le SL...

DEM (Digital Experience Monitoring)

Surveillance de l'expérience numérique. Englobe les technologies permettant de suivre et d'optimiser l'expérience des utilisateurs finaux sur les appl...

RUM (Real User Monitoring)

Surveillance des utilisateurs réels. Technique d'observabilité passive qui capture et analyse chaque interaction des utilisateurs avec une application...

Synthetic Monitoring

Surveillance synthétique. Technique d'observabilité active utilisant des scripts automatisés (robots) pour simuler le parcours des utilisateurs et vér...

Traces distribuées

Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...

Métriques

Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...

AIOps (Artificial Intelligence for IT Operations)

Utilisation de l'intelligence artificielle et de l'apprentissage automatique pour automatiser et améliorer les opérations informatiques (ex: détection...

NoOps

Concept où l'environnement informatique est tellement automatisé et abstrait (ex: Serverless, PaaS) qu'il ne nécessite quasiment plus d'équipe opérati...

OpenTelemetry

Framework open source fournissant des standards, APIs et SDKs pour collecter et exporter des données d'observabilité (traces, métriques, logs) de mani...

Core Web Vitals

Ensemble de trois métriques définies par Google pour mesurer l'expérience réelle d'une page web : le chargement (LCP (Largest Contentful Paint)), la r...

LCP (Largest Contentful Paint)

Temps écoulé jusqu'à l'affichage du plus grand élément visible de la page (image, vidéo ou bloc de texte) : il indique quand le contenu principal appa...

INP (Interaction to Next Paint)

Latence des interactions (clic, tap, touche) observée pendant toute la visite : délai entre l'action de l'utilisateur et l'affichage suivant. La valeu...

CLS (Cumulative Layout Shift)

Mesure de la stabilité visuelle : somme des décalages inattendus de mise en page (un bouton qui se déplace au moment du clic, un texte poussé par une ...

FCP (First Contentful Paint)

Temps écoulé jusqu'à l'affichage du premier contenu (texte, image, SVG) : le moment où l'utilisateur voit que la page commence à charger. Ce n'est pas...

TTFB (Time to First Byte)

Temps entre le début de la navigation et la réception du premier octet de la réponse : il additionne redirections, DNS, connexion TCP/TLS et temps de ...

FID (First Input Delay)

Ancienne métrique de réactivité des Core Web Vitals : délai avant que le navigateur commence à traiter la première interaction (bon ≤ 100 ms). Elle ig...

TBT (Total Blocking Time)

Métrique de laboratoire (Lighthouse) : somme, entre FCP (First Contentful Paint) et la fin du chargement, de la part de chaque tâche longue (plus de 5...

CrUX (Chrome UX Report)

Base publique de Google qui agrège les Core Web Vitals mesurées chez les vrais utilisateurs de Chrome (au 75e percentile, par origine et par URL, sur ...

Lighthouse

Outil d'audit libre de Google, intégré aux DevTools de Chrome et à PageSpeed Insights : il charge la page dans un environnement simulé et note perform...

Apdex

Application Performance Index : score de satisfaction entre 0 et 1 calculé à partir d'un seuil de temps T. Les requêtes sous T sont « satisfaisantes »...

Articles recommandés

Logs avancés avec OpenPipeline : traitement, masquage, buckets et rétention

Gérer les logs dans Dynatrace avec OpenPipeline : ingestion, routage, traitement DQL (parsing, en...

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éne...

La rétention des données dans Dynatrace : Grail, buckets et durées par type de données

Comprendre combien de temps Dynatrace conserve logs, traces, métriques, sessions et événements, g...

Grail et DQL avancés : performance, parse, jointures, séries temporelles, entités et corrélation

Écrire des requêtes DQL rapides et peu coûteuses, analyser du texte avec DPL et JSON, combiner de...

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, arb...

DQL en pratique : explorer logs et événements, notebooks, tableaux de bord et performance

Utiliser le Dynatrace Query Language au quotidien : explorer logs et événements, enchaîner les co...

Sécurité et gouvernance Dynatrace : IAM avancé, politiques, SSO, audit et protection des données

Sécuriser et gouverner Dynatrace : SSO et SCIM, groupes, politiques IAM avec conditions, contexte...

Guide des Bonnes Pratiques Dynatrace : Vers une Observabilité Mature

Optimisez votre plateforme Dynatrace grâce à nos recommandations d'experts : automatisation du ta...

Différences entre Technologies et Services dans Dynatrace

Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organiser et surveiller l...

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 !