Détection et agrégation automatiques des lignes multiples (obsolète)

Ce document s'applique aux versions de l'Agent antérieures à la v7.65.0, ou lorsque la méthode obsolète de détection automatique des lignes multiples est explicitement activée. Pour les versions plus récentes de l'Agent, veuillez consulter la section Détection et agrégation automatiques des lignes multiples.

Agrégation automatique et globale des lignes multiples

Depuis la version 7.37 de l’Agent, vous pouvez activer auto_multi_line_detection afin de détecter automatiquement les principaux patterns à lignes multiples dans l’ensemble des intégrations de log configurées.

Activez globalement auto_multi_line_detection dans le fichier datadog.yaml :

logs_config:
  auto_multi_line_detection: true

Utilisez la variable d’environnement DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION dans le conteneur de l’Agent Datadog pour configurer une règle globale d’agrégation automatique des lignes multiples. Exemple :

DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION=true

Operator

Utilisez le paramètre spec.override.nodeAgent.env dans le manifeste de votre Operator Datadog pour définir la variable d’environnement DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION, afin de configurer une règle globale d’agrégation automatique des lignes multiples. Exemple :

spec:
  override:
    nodeAgent:
      env:
        - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION
          value: "true"

Helm

Utilisez l’option datadog.logs.autoMultiLineDetection dans le chart Helm pour configurer une règle globale d’agrégation automatique des lignes multiples. Exemple :

datadog:
  logs:
    enabled: true
    autoMultiLineDetection: true
Depuis la version 7.65 de l'Agent, vous pouvez activer l'ancien comportement en définissant la valeur true pour ce qui suit :
- logs_config.force_auto_multi_line_detection_v1 dans votre fichier datadog.yaml
OU
- LOGS_CONFIG_FORCE_AUTO_MULTI_LINE_DETECTION_V1 dans votre variable d'environnement.

Activer l’agrégation des lignes multiples pour des intégrations spécifiques

Vous avez également la possibilité d’activer ou de désactiver l’agrégation des lignes multiples pour la collecte de logs d’une intégration spécifique. Lorsque ce réglage est modifié, la configuration globale est ignorée.

Dans un environnement de host, activez auto_multi_line_detection avec la méthode de collecte de logs personnalisée. Exemple :

logs:
  - type: file
    path: /my/test/file.log
    service: testApp
    source: java
    auto_multi_line_detection: true

Dans un environnement Docker, utilisez l’étiquette com.datadoghq.ad.logs sur votre conteneur pour spécifier la configuration de log. Exemple :

 labels:
    com.datadoghq.ad.logs: >-
      [{
        "source": "java",
        "service": "testApp",
        "auto_multi_line_detection": true
      }]

Dans un environnement Kubernetes, utilisez l’annotation ad.datadoghq.com/<CONTAINER_NAME>.logs sur votre pod pour spécifier la configuration de log. Exemple :

apiVersion: apps/v1
metadata:
  name: testApp
spec:
  selector:
    matchLabels:
      app: testApp
  template:
    metadata:
      annotations:
        ad.datadoghq.com/<CONTAINER_NAME>.logs: >-
          [{
            "source": "java",
            "service": "testApp",
            "auto_multi_line_detection": true
          }]
      labels:
        app: testApp
      name: testApp
    spec:
      containers:
        - name: '<CONTAINER_NAME>'
          image: testApp:latest

Personnaliser la configuration de l’agrégation des lignes multiples

La détection automatique des lignes multiples se base sur une liste d’expressions régulières courantes pour essayer de trouver des correspondances avec les logs. Si la liste intégrée ne contient pas assez d’expressions, vous pouvez ajouter des patterns et des seuils personnalisés afin d’améliorer la détection.

Patterns personnalisés

Dans un fichier de configuration, ajoutez les patterns auto_multi_line_extra_patterns à datadog.yaml :

logs_config:
  auto_multi_line_detection: true
  auto_multi_line_extra_patterns:
   - \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
   - '[A-Za-z_]+ \d+, \d+ \d+:\d+:\d+ (AM|PM)'

Seuil personnalisé

Le paramètre auto_multi_line_default_match_threshold détermine le degré de correspondance requis entre les logs et les patterns pour que l’agrégation automatique des lignes multiples fonctionne.

Si vos logs à lignes multiples ne sont pas agrégés comme prévu, vous pouvez modifier le degré de correspondance en définissant le paramètre auto_multi_line_default_match_threshold. Ajoutez le paramètre auto_multi_line_default_match_threshold à votre fichier de configuration en le définissant sur une valeur plus basse (pour obtenir plus de correspondances) ou plus haute (pour obtenir moins de correspondances) par rapport à la valeur actuelle du seuil.

Redémarrez l’Agent Datadog pour appliquer la nouvelle valeur de seuil aux prochains logs ingérés. Pour vérifier la valeur actuelle du seuil, exécutez la commande status de l’Agent.

logs_config:
  auto_multi_line_detection: true
  auto_multi_line_extra_patterns:
   - \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
   - '[A-Za-z_]+ \d+, \d+ \d+:\d+:\d+ (AM|PM)'
  auto_multi_line_default_match_threshold: 0.1

Dans un Agent conteneurisé, ajoutez la variable d’environnement DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS :

    environment:
      - DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION=true
      - DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS=\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) [A-Za-z_]+\s\d+,\s\d+\s\d+:\d+:\d+\s(AM|PM)

Remarque : l’Agent Datadog interprète les espaces de la variable d’environnement DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS comme des séparateurs entre plusieurs patterns. Dans l’exemple suivant, les deux patterns d’expression régulière sont séparés par une espace, et \s dans le deuxième pattern correspond aux espaces.

Seuil personnalisé

Le paramètre auto_multi_line_default_match_threshold détermine le degré de correspondance requis entre les logs et les patterns pour que l’agrégation automatique des lignes multiples fonctionne.

Si vos logs à lignes multiples ne sont pas agrégés comme prévu, vous pouvez modifier le degré de correspondance en définissant le paramètre auto_multi_line_default_match_threshold.

Ajoutez le paramètre auto_multi_line_default_match_threshold à votre fichier de configuration en le définissant sur une valeur plus basse (pour obtenir plus de correspondances) ou plus haute (pour obtenir moins de correspondances) par rapport à la valeur actuelle du seuil.

Pour vérifier la valeur actuelle du seuil, exécutez la commande status de l’Agent.

    environment:
      - DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION=true
      - DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS=\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) [A-Za-z_]+\s\d+,\s\d+\s\d+:\d+:\d+\s(AM|PM)
      - DD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD=0.1

Dans Kubernetes, ajoutez la variable d’environnement DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS :

Operator

spec:
  override:
    nodeAgent:
      env:
        - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS
          value: \d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) [A-Za-z_]+\s\d+,\s\d+\s\d+:\d+:\d+\s(AM|PM)

Helm

datadog:
  env:
    - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS
      value: \d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) [A-Za-z_]+\s\d+,\s\d+\s\d+:\d+:\d+\s(AM|PM)

Remarque : l’Agent Datadog interprète les espaces de la variable d’environnement DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS comme des séparateurs entre plusieurs patterns. Dans l’exemple suivant, les deux patterns d’expression régulière sont séparés par une espace, et \s dans le deuxième pattern correspondant aux espaces.

Seuil personnalisé

Le paramètre auto_multi_line_default_match_threshold détermine le degré de correspondance requis entre les logs et les patterns pour que l’agrégation automatique des lignes multiples fonctionne.

Si vos logs à lignes multiples ne sont pas agrégés comme prévu, vous pouvez modifier le degré de correspondance en définissant le paramètre auto_multi_line_default_match_threshold. Ajoutez le paramètre auto_multi_line_default_match_threshold à votre fichier de configuration en le définissant sur une valeur plus basse (pour obtenir plus de correspondances) ou plus haute (pour obtenir moins de correspondances) par rapport à la valeur actuelle du seuil. Pour vérifier la valeur actuelle du seuil, exécutez la commande status de l’Agent.

Operator

spec:
  override:
    nodeAgent:
      env:
        - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS
          value: \d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) [A-Za-z_]+\s\d+,\s\d+\s\d+:\d+:\d+\s(AM|PM)
        - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD
          value: "0.1"

Helm

datadog:
  env:
    - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS
      value: \d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) [A-Za-z_]+\s\d+,\s\d+\s\d+:\d+:\d+\s(AM|PM)
    - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD
      value: "0.1"

Processus de détection

La détection automatique des lignes multiples identifie les logs qui commencent par les formats de date/heure suivants et les respectent :

  • ANSIC
  • RFC822
  • RFC822Z
  • RFC850
  • RFC1123
  • RFC1123Z
  • RFC3339
  • RFC3339Nano
  • Format de date Ruby
  • Format de date Unix
  • Format de date SimpleFormatter par défaut pour les logs Java

Lorsque l’agrégation des lignes multiples est activée, l’Agent tente d’abord de détecter un pattern dans chaque nouveau fichier de log. Ce processus de détection s’arrête après 30 secondes ou après les 500 premiers logs, selon la première occurrence. Lors du processus de détection initial, les logs sont envoyés sous forme de lignes uniques.

Une fois le seuil de détection atteint, tous les logs ultérieurs provenant de cette source sont agrégés avec le meilleur pattern détecté, ou transmis sous forme de lignes uniques si aucun pattern n’est détecté.

Remarque : si vous pouvez modifier le pattern utilisé pour nommer le log renouvelé, vérifiez que le fichier renouvelé remplace le fichier précédemment actif du même nom. L’Agent réutilise un pattern qui a été détecté sur le nouveau fichier, afin d’éviter d’effectuer une nouvelle fois la détection.

Pour aller plus loin