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
Documentation, liens et articles supplémentaires utiles: