Pipelines

Pipelines

Présentation

Datadog parse automatiquement les logs JSON. Lorsque les logs ne sont pas au format JSON, vous pouvez enrichir leurs données brutes en les faisant passer par un pipeline de traitement. Les pipelines traitent la grande majorité des formats de logs et les convertissent en un format commun dans Datadog. La mise en œuvre de pipelines de logs et d’une stratégie de traitement vous permet également de bénéficier d’une convention de nommage des attributs à l’échelle de votre organisation.

Avec les pipelines, les logs sont assemblés de façon séquentielle via des processeurs afin d’être parsés et enrichis. Cette étape permet d’extraire des informations ou des attributs utiles à partir de texte semi-structuré, afin de les réutiliser sous la forme de facettes. Lorsqu’un log passe par les pipelines, tous les filtres de pipeline lui sont appliqués. S’il répond aux critères d’un filtre, tous les processeurs associés lui sont appliqués de façon séquentielle. Il passe ensuite au prochain pipeline.

Les pipelines et les processeurs peuvent être appliqués à tout type de log. Vous n’avez pas besoin de modifier la configuration de votre journalisation ni de déployer des modifications dans les règles de traitement côté serveur. Vous pouvez gérer l’ensemble des paramètres depuis la page de configuration des pipelines.

Remarque : pour une utilisation optimale de la solution Log Management, Datadog recommande d’utiliser au maximum 20 processeurs par pipeline et 10 règles de parsing dans un processeur Grok. Datadog se réserve le droit de désactiver les règles de parsing, les processeurs ou les pipelines peu optimisés qui pourraient avoir une incidence sur les performances du service de Datadog.

Prétraitement

Le prétraitement des logs JSON intervient avant le traitement par le pipeline. Le prétraitement consiste à effectuer une série d’opérations basées sur des attributs réservés, tels que timestamp, status, host, service et message. Si les attributs figurant dans vos logs JSON présentent des noms différents, utilisez le prétraitement pour mapper les noms d’attribut de vos logs à ceux figurant dans la liste d’attributs réservés.

Le prétraitement des logs JSON inclut une configuration par défaut qui prend en charge les redirecteurs de log standard. Pour modifier cette configuration afin de l’adapter à une stratégie de transmission des logs personnalisée ou spécifique, procédez comme suit :

  1. Accédez à la section Pipelines de l’application Datadog, puis sélectionnez Preprocessing for JSON logs.

    Remarque : le prétraitement des logs JSON est le seul moyen de définir l’un de vos attributs de log en tant que host pour vos logs.

  2. Modifiez le mapping par défaut en fonction de l’attribut réservé :

Attribut source

Si un fichier de log au format JSON comprend l’attribut ddsource, Datadog interprète sa valeur en tant que source du log. Pour utiliser les mêmes noms de source que ceux de Datadog, consultez la bibliothèque des pipelines d’intégration.

Remarque : les logs provenant d’un environnement conteneurisé nécessitent l’utilisation d’une variable d’environnement pour remplacer les valeurs source et service par défaut.

Attribut host

Utilisez l’Agent Datadog ou le format RFC 5424 pour définir automatiquement la valeur du host sur vos logs. Cependant, si un fichier de log au format JSON comprend l’un des attributs suivants, Datadog interprète sa valeur comme host du log :

  • host
  • hostname
  • syslog.hostname

Attribut date

Par défaut, Datadog génère un timestamp et l’ajoute à un attribut de date lors de la réception des logs. Cependant, si un fichier de log au format JSON comprend l’un des attributs suivants, Datadog interprète sa valeur en tant que date officielle du log :

  • @timestamp
  • timestamp
  • _timestamp
  • Timestamp
  • eventTime
  • date
  • published_date
  • syslog.timestamp

Vous pouvez préciser des attributs alternatifs à utiliser comme source pour la date d’un log en définissant un processeur de remappage de dates de log.

Remarque : Datadog rejette un log si sa date officielle est antérieure de plus de 18 heures.

Les formats de date reconnus sont : ISO 8601, UNIX (le format EPOCH en millisecondes) et RFC 3164.

Attribut message

Par défaut, Datadog ingère la valeur du message comme corps de l’entrée du log. Cette valeur est alors mise en évidence et affichée dans le Log Explorer, où elle est indexée pour d’éventuelles recherches en texte intégral.

Vous pouvez préciser des attributs alternatifs à utiliser comme source pour le message d’un log en définissant un processeur de remappage de messages de log.

Attribut status

Chaque entrée de log peut spécifier un niveau de statut. Celui-ci peut est disponible pour la recherche à facettes au sein de Datadog. Cependant, si un fichier de log au format JSON inclut l’un des attributs suivants, Datadog interprète sa valeur en tant que statut officiel du log :

  • status
  • severity
  • level
  • syslog.severity

Pour remapper un statut existant dans l’attribut status, utilisez le remappeur de statuts de log.

Attribut service

Utilisez l’Agent Datadog ou le format RFC 5424 pour définir automatiquement la valeur du service sur vos logs. Cependant, si un fichier de log au format JSON comprend l’un des attributs suivants, Datadog interprète sa valeur comme service du log :

  • service
  • syslog.appname

Vous pouvez préciser des attributs alternatifs à utiliser comme source pour le service d’un log en définissant un processeur de remappage de services de log.

Attribut Trace ID

Par défaut, les traceurs de Datadog peuvent automatiquement injecter les ID de trace et de span dans les logs. Cependant, si un log JSON comprend les attributs suivants, Datadog interprète sa valeur en tant que trace_id du log :

  • dd.trace_id
  • contextMap.dd.trace_id

Vous pouvez préciser des attributs alternatifs à utiliser comme source pour l’ID de trace d’un log en définissant un processeur de remappage d’ID de trace.

Créer un pipeline

  1. Accédez à la section Pipelines de l’application Datadog.

  2. Sélectionnez New Pipeline.

  3. Sélectionnez un log dans l’aperçu Live Tail pour appliquer un filtre, ou utilisez votre propre filtre. Choisissez un filtre dans le menu déroulant ou créez votre propre requête de filtre avec l’icône </>. Les filtres vous permettent de limiter les types de logs qui passent par un pipeline.

    Remarque : les filtres de pipeline sont appliqués avant tout traitement par les processeurs du pipeline. Par conséquent, vous ne pouvez pas appliquer un filtre basé sur un attribut qui est extrait dans le pipeline.

  4. Attribuez un nom à votre pipeline, puis cliquez sur Save.

Voici un exemple de log converti par un pipeline :

Pipelines d’intégration

Les pipelines de traitement d’intégration sont disponibles pour certaines sources lorsqu’elles sont configurées pour recueillir les logs. Ces pipelines disposent d’un accès en lecture seule et effectuent le parsing de vos logs en tenant compte de la source en question. Un pipeline d’intégration est automatiquement installé pour les logs d’intégration, afin de prendre en charge leur parsing et d’ajouter la facette correspondante dans Log Explorer.

Pour afficher un pipeline d’intégration, accédez à la page Pipelines. Pour modifier un pipeline d’intégration, clonez-le, puis modifiez le doublon :

Consultez l’exemple de logs ELB ci-dessous :

Bibliothèque de pipelines d’intégration

Pour afficher la liste complète des pipelines d’intégration proposés par Datadog, consultez la bibliothèque de pipelines d’intégration. Elle précise également comment Datadog traite les différents formats de log par défaut.

Bibliothèque de pipelines d'intégration

Pour utiliser un pipeline d’intégration, nous vous conseillons d’installer l’intégration en configurant la source de logs correspondante. Lorsque Datadog reçoit le premier log avec cette source, l’installation se déclenche automatiquement et le pipeline d’intégration est ajouté à la liste des pipelines de traitement. Pour configurer la source de logs, consultez la documentation de l’intégration correspondante.

Il est également possible de copier un pipeline d’intégration à l’aide du bouton Clone.

Cloner un pipeline à partir de la bibliothèque

Ajouter un processeur ou un pipeline imbriqué

  1. Accédez à la section Pipelines de l’application Datadog.
  2. Passez le curseur sur un pipeline, puis cliquez sur la flèche en regard du pipeline pour développer la section relative aux processeurs pipelines imbriqués.
  3. Sélectionnez Add Processor ou Add Nested Pipeline.

Processeurs

Un processeur s’exécute dans un pipeline afin d’effectuer une action de structuration de données. Consultez la documentation relative aux processeurs pour découvrir comment ajouter et configurer chaque type de processeur, que ce soit dans l’application ou avec l’API.

Pipelines imbriqués

Les pipelines imbriqués sont des pipelines au sein d’un autre pipeline. Utilisez les pipelines imbriqués pour diviser le traitement en deux étapes. Par exemple, vous pouvez commencer par appliquer un filtre de niveau supérieur basé par exemple sur l’équipe, puis un deuxième niveau de filtrage basé sur l’intégration, le service ou tout autre tag ou attribut.

Un pipeline peut inclure des pipelines imbriqués et des processeurs, tandis qu’un pipeline imbriqué peut seulement contenir des processeurs.

Il est possible de déplacer un pipeline vers un autre pipeline pour le transformer en pipeline imbriqué :

Pour aller plus loin


*Logging without Limits est une marque déposée de Datadog, Inc.