Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
Log parsing transforme les données de logs non structurées en attributs interrogeables que vous pouvez utiliser pour obtenir des informations plus approfondies à partir de vos logs. Ces attributs vous permettent de filtrer, facetter et créer des alertes sur vos données avec précision.
Choisissez votre stratégie d'analyse
Décidez si vous souhaitez analyser les données au moment de l'ingestion ou lors de l'exécution d'une requête :
Type d'analyse
Description
Idéal pour
Analyse au moment de la requête
Crée des attributs temporaires à l'aide de NRQL qui n'existent que pendant l'exécution de la requête. Idéal pour l'analyse instantanée des données existantes sans attendre l'arrivée de nouveaux logs. En savoir plus sur le parsing au moment de la requête.
Dépannage et investigations ad hoc
Analyse exploratoire sur de petits jeux de données
Investigations ponctuelles
Extraction d'attributs à partir de logs déjà stockés dans NRDB
Analyse au moment de l'ingestion
Crée des attributs permanents stockés dans NRDB. Deux façons de créer des règles d'analyse au moment de l'ingestion :
Règles de parsing intégrées : Patterns préconfigurés pour les sources de logs courantes (Apache, NGINX, CloudFront, MongoDB, etc.). Ajoutez simplement un attribut logtype lors du transfert de logs. Consultez la liste complète des règles intégrées.
Règles d'analyse personnalisées : Lorsque vos logs sont spécifiques à votre application, les règles d'analyse personnalisées vous permettent de définir précisément les champs qui comptent pour votre activité.
No Code Log Parsing: Détecte des motifs dans vos échantillons de logs. Idéal pour les utilisateurs qui souhaitent extraire des champs par pointer-cliquer.
Grok/Regex: personnalisé Saisie manuelle de code pour les formats de logs très complexes.
Volumes importants de logs
Attributs analysés nécessaires pour les alertes, les dashboards et le monitoring continu
Vous pouvez également créer, interroger et gérer vos règles d'analyse des logen utilisant NerdGraph, notre API GraphQL . Un outil utile pour cela est notre explorateur d'API Nerdgraph. Pour plus d'informations, consultez notre tutoriel NerdGraph pour l'analyse.
/ Here's a 5-minute video about log parsing: <Video id="xPWM46yw3bQ" type="youtube" /> /
Comment fonctionne l'analyse personnalisée au moment de l'ingestion
L'analyse personnalisée vous permet de définir exactement comment New Relic structure vos logs entrants. Avant de créer des règles, il est important de comprendre les contraintes techniques du pipeline d'ingestion.
analyser des logs
Comment ça marche
Quoi
Les règles d'analyse sont très ciblées. Lorsque vous créez une règle, vous définissez :
Le champ ciblé : L'analyse est appliquée à un champ spécifique à la fois.
La logique de correspondance : Utilisez une clause NRQL WHERE pour filtrer précisément les logs que cette règle doit évaluer.
La méthode d'extraction : Vous pouvez utiliser No Code Log Parsing pour une expérience de détection automatique et guidée des motifs, ou écrire manuellement Grok/Regex pour des structures de logs complexes et hautement personnalisées.
Quand
New Relic traite les logs de manière séquentielle. Cela affecte les conditions qui peuvent être mises en correspondance.
L'analyse s'effectue lors de l'ingestion des données. Une fois qu'un log est écrit dans la NRDB, les modifications apportées sont définitives.
Une fois une règle enregistrée et activée, les règles commencent immédiatement à traiter les logs entrants.
L'analyse s'effectue avant l'enrichissement des données (tel que la synthèse d'entités), leur rejet ou leur partitionnement.
Validation
Pour vous assurer que vos règles fonctionnent avant qu'elles n'affectent les données ingérées, vous pouvez prévisualiser le résultat sur 10 échantillons de logs récemment stockés dans la partition « Log ». Ces échantillons représentent les données reçues au cours des 30 dernières minutes, plutôt qu'un flux en direct en temps réel.
Créer une règle personnalisée
Vous pouvez créer des règles de parsing en contexte lors de l'investigation d'un log. Cela évite le changement de contexte et réduit le temps moyen de détection (MTTD). Sinon, vous pouvez créer des règles à partir de zéro lors de l'intégration d'une nouvelle application ou d'un nouveau service.
No Code Log Parsing
Utilisez No Code Log Parsing pour détecter et extraire des champs de vos échantillons de logs. New Relic analyse vos exemples de logs et suggère des modèles que vous pouvez configurer.
Pour créer une règle en contexte, allez dans one.newrelic.com > Logs et appliquez un filtre (ou sélectionnez une entité disposant de logs, telle que APM, Browser ou Mobile, et accédez à Logs in Context).
Pour créer une règle sans contexte, accédez à one.newrelic.com > Logs sans définir de filtre, ou accédez à Logs > Parsing et cliquez sur Create a parsing rule.
Dans le processus de création de règles contextuelles :
Cliquez sur un log pour l'ouvrir Log details
Sélectionnez l'attribut de log que vous souhaitez parser (par exemple, message)
Cliquez sur Create ingest time parsing rule et donnez un nom à votre règle
Si vous avez appliqué un filtre dans l'interface Logs avant de créer la règle, une condition de correspondance est automatiquement renseignée en fonction de ce filtre.
Dans le flux sans contexte, donnez un nom à votre règle et définissez une condition de filtre NRQL ou collez un exemple de log.
Si vous définissez un filtre de logs, cliquez sur Run your query, sélectionnez le champ que vous souhaitez analyser et cliquez sur Next.
Si vous collez un exemple de log, vous devez définir la clause NRQL WHERE pour correspondre à vos logs, sélectionner le champ que vous souhaitez analyser et cliquer sur Next.
Examinez le Patterns we detected dans l'exemple de log sélectionné et la règle qui a été créée. Cliquez sur un motif mis en évidence pour afficher et modifier sa configuration.
Note
Lorsque vous nommez des attributs, utilisez des minuscules avec des tirets bas. Évitez les caractères spéciaux à l'exception des traits de soulignement et ne commencez pas un nom d'attribut par un chiffre.
Pour les sous-chaînes que vous souhaitez éviter d'analyser et qui incluent des valeurs dynamiques, assurez-vous de les définir comme sous-chaînes dynamiques en les sélectionnant et en modifiant leur configuration sur Yes.
Pour un contrôle plus granulaire des champs à extraire, cliquez et faites glisser pour mettre en surbrillance l'exemple de log.
Vous pouvez interagir avec les motifs de la façon suivante :
Auto detect patterns: Pour détecter des motifs dans n'importe quelle partie de l'exemple de log qui n'est pas déjà mise en surbrillance, cliquez et faites glisser pour mettre cette sous-chaîne en surbrillance, puis cliquez sur Auto detect patterns. New Relic trouvera et mettra en évidence des motifs dans la portion sélectionnée. Pour une liste des noms de modèles Grok pris en charge, consultez Noms de modèles Grok pris en charge.
Select text to parse: Sélectionnez ce mode pour l'expérience de création de règles guidée. Ce mode offre une configuration motif par motif. Une fois les configurations de motifs définies, cliquez sur Add pattern to rule pour afficher la règle mise à jour et prévisualiser la sortie.
Si les motifs détectés ne sont pas pertinents ou extraient des données indésirables, vous pouvez les supprimer de la règle créée en :
Surlignez le motif indésirable dans la fenêtre d'exemple de log et cliquez sur Remove selected patterns, ou
Cliquez sur un motif et sélectionnez Remove.
Examinez le panneau Preview output. Vérifiez que les exemples de logs affichent une coche verte, indiquant qu'ils correspondent à votre règle et que les champs seront extraits lors de l'ingestion.
Pour modifier votre échantillon, développez un log dans le volet Preview output et cliquez sur Use as sample.
Si vous avez sélectionné un log sans correspondance : l'échantillon sélectionné s'affichera dans la fenêtre de l'échantillon de log, de nouveaux motifs seront détectés et une nouvelle règle sera créée.
Si vous avez sélectionné un log correspondant : l'échantillon sélectionné s'affichera dans la fenêtre des logs d'échantillon.
Cliquez sur Save rule pour activer immédiatement, ou sur Save as draft pour activer plus tard.
Pour les formats uniques, les utilisateurs avancés peuvent cliquer sur Write your own rule sur la page Create a parsing rule pour basculer vers l'éditeur de code et modifier les modèles directement dans l'éditeur de règles.
Une fois la modification de la règle terminée, cliquez sur Preview pour afficher la sortie d'aperçu mise à jour et cliquez sur Save rule pour l'activer.
Note
Pour passer à l'ancien éditeur, cliquez sur Switch to original editor en haut à droite de la page Create a parsing rule.
Modèles de données pris en charge
New Relic prend en charge l'analyse de divers types et formats de données à l'aide de modèles Grok. Les modèles d'analyse sont spécifiés à l'aide de Grok, un standard de l'industrie pour l'analyse des messages de log. Grok est un sur-ensemble d'expressions régulières qui ajoute des motifs nommés intégrés à utiliser à la place d'expressions régulières complexes littérales.
Les règles de parsing peuvent inclure un mélange d'expressions régulières et de noms de patterns Grok dans votre chaîne de correspondance. Cliquez sur ce lien pour obtenir la liste des patterns Grok pris en charge, et ici pour la liste des types Grok pris en charge.
PATTERN_NAME est l'un des modèles Grok pris en charge. Le nom du motif est juste un nom convivial représentant des expressions régulières. Elles sont exactement égales aux expressions régulières correspondantes.
OPTIONAL_EXTRACTED_ATTRIBUTE_NAME, s'il est fourni, est le nom de l'attribut qui sera ajouté à votre message de log avec la valeur correspondant au nom du modèle. Cela équivaut à utiliser un groupe de capture nommé à l’aide d’expressions régulières. Si cela n'est pas fourni, la règle d'analyse correspondra simplement à une région de votre chaîne, mais n'extrairea pas un attribut avec sa valeur.
OPTIONAL_TYPE spécifie le type de valeur d'attribut à extraire. Si elles sont omises, les valeurs sont extraites sous forme de chaînes. Par instance, pour extraire la valeur 123 de "File Size: 123" sous forme de nombre dans l'attribut file_size, utilisez value: %{INT:file_size:int}.
OPTIONAL_PARAMETER spécifie un paramètre facultatif pour certains types. Actuellement, seul le type datetime prend un paramètre, voir ci-dessous pour plus de détails.
Le champ OPTIONAL_TYPE spécifie le type de valeur d'attribut à extraire. Si elles sont omises, les valeurs sont extraites sous forme de chaînes.
Les types pris en charge sont :
Type spécifié dans Grok
Type stocké dans la base de données New Relic
boolean
boolean
byteshortintinteger
integer
long
long
float
float
double
double
string (défaut) text
string
datedatetime
Le temps comme un long
Par défaut, il est interprété comme ISO 8601. Si OPTIONAL_PARAMETER est présent, il spécifie la chaîne de motif de date et d'heureà utiliser pour interpréter le datetime.
Si vous avez un log multiligne, sachez que le modèle Grok GREEDYDATA ne correspond pas aux nouvelles lignes (il est équivalent à .*).
Ainsi, au lieu d'utiliser %{GREEDYDATA:some_attribute} directement, vous devrez ajouter l'indicateur multiligne devant lui : (?s)%{GREEDYDATA:some_attribute}
Le pipeline de logs New Relic analyse vos messages de log JSON par défaut, mais il arrive parfois que vous ayez des messages de log JSON mélangés à du texte brut. Dans cette situation, vous souhaiterez peut-être pouvoir les analyser, puis filtrer à l'aide des attributs JSON. Dans ce cas, vous pouvez utiliser le type Grokjson, qui analysera le JSON capturé par le motif Grok. Ce format repose sur 3 parties principales : la syntaxe Grok, le préfixe que vous souhaitez attribuer aux attributs JSON analysés et le type Grokjson. En utilisant le type Grokjson, vous pouvez extraire et analyser du JSON à partir de logs qui ne sont pas correctement formatés ; par exemple, si vos logs sont préfixés par une chaîne de date/heure :
Vous pouvez définir la liste des attributs à extraire ou à supprimer avec les options keepAttributes ou dropAttributes. Par exemple, avec l'expression Grok suivante :
Si vous souhaitez omettre le préfixe my_attribute_prefix et conserver uniquement l'attribut status , vous pouvez inclure "noPrefix": true et "keepAttributes: ["status"] dans la configuration.
Si votre JSON a été échappé, vous pouvez utiliser l'option isEscaped pour pouvoir l'analyser. Si votre JSON a été échappé puis cité, vous devez également faire correspondre les guillemets, comme indiqué ci-dessous. Par exemple, avec l'expression Grok suivante :
Pour configurer le type Grokjson , utilisez :json(_CONFIG_):
json({"dropOriginal": true}): Supprimez le snippet JSON qui a été utilisé dans l'analyse. Lorsqu'elle est définie sur true (valeur par défaut), la règle d'analyse supprimera le snippet JSON d'origine. Notez que l’attribut JSON restera dans le champ de message.
json({"dropOriginal": false}):Cela affichera la charge utile JSON qui a été extraite. Lorsqu'il est défini sur false, la charge utile complète uniquement JSON sera affichée sous un attribut nommé dans my_attribute_prefix ci-dessus. Notez que l'attribut JSON restera également dans le champ de message ici, donnant à l'utilisateur 3 vues différentes des données JSON. Si le stockage des trois versions est un problème, il est recommandé d'utiliser la valeur par défaut de true ici.
json({"depth": 62}): Niveaux de profondeur auxquels vous souhaitez analyser la valeur JSON (par défaut 62).
json({"keepAttributes": ["attr1", "attr2", ..., "attrN"]}):Spécifie quel attribut sera extrait du JSON. La liste fournie ne peut pas être vide. Si cette option configuration n'est pas définie, tous les attributs sont extraits.
json({"dropAttributes": ["attr1", "attr2", ..., "attrN"]}):Spécifie l'attribut à supprimer du JSON. Si cette option de configuration n'est pas définie, aucun attribut n'est supprimé.
json({"noPrefix": true}): Définissez cette option sur true pour supprimer le préfixe de l'attribut extrait du JSON.
json({"isEscaped": true}): Définissez cette option sur true pour analyser le JSON qui a été échappé (ce que vous voyez généralement lorsque le JSON est transformé en chaîne, par exemple {\"key\": \"value\"})
Si votre système envoie un log de valeurs séparées par des virgules (CSV) et que vous devez les analyser dans New Relic, vous pouvez utiliser le type Grokcsv , qui analyse le CSV capturé par le modèle Grok. Ce format repose sur 3 parties principales : la syntaxe Grok, le préfixe que vous souhaitez attribuer à l'attribut CSV analysé et le type Grokcsv . En utilisant le type Grokcsv , vous pouvez extraire et analyser le CSV du log.
Étant donné la ligne log CSV suivante à titre d’exemple :
Il est obligatoire d'indiquer les colonnes dans la configuration de type CSV Grok (qui doit être un JSON valide).
Vous pouvez ignorer n'importe quelle colonne en définissant « _ » (trait de soulignement) comme nom de colonne pour la supprimer de l'objet résultant.
Options de configuration facultatives :
Bien que la configuration des « colonnes » soit obligatoire, il est possible de modifier l'analyse du CSV avec les paramètres suivants.
dropOriginal: (La valeur par défaut est true) Supprimez le snippet CSV utilisé dans l'analyse. Lorsque la valeur est true (valeur par défaut), la règle d'analyse supprime le champ d'origine.
noPrefix: (La valeur par défaut est false) N'inclut pas le nom du champ Grok comme préfixe sur l'objet résultant.
separator: (Par défaut ,) Définit le caractère/la chaîne qui divise chaque colonne.
Un autre scénario courant est celui des valeurs séparées par des tabulations (TSV), pour cela vous devez indiquer \t comme séparateur, ex. %{GREEDYDATA:log:csv({"columns": ["timestamp", "status", "method", "url", "time", "bytes"], "separator": "\t"})
quoteChar: (Par défaut ") Définit le caractère qui entoure éventuellement le contenu d'une colonne.
Si votre système envoie un log contenant des adresses IPv4, New Relic peut les localiser géographiquement et enrichir l'événement de log avec l'attribut spécifié. Vous pouvez utiliser le type Grokgeo , qui trouve la position d'une adresse IP capturée par le modèle Grok. Ce format peut être configuré pour renvoyer un ou plusieurs champs liés à l'adresse, tels que la ville, le pays et la latitude/longitude de l'IP.
Étant donné la ligne log suivante à titre d'exemple :
Il est obligatoire de spécifier les champs lookup souhaités renvoyés par l'action geo . Au moins un élément est requis parmi les options suivantes.
city: Nom de la ville
countryCode: Abréviation du pays
countryName: Nom du pays
latitude: Latitude
longitude: Longitude
postalCode: Code postal, code zip ou similaire
region:Abréviation d'État, de province ou de territoire
regionName: Nom de l'État, de la province ou du territoire
Le pipeline New Relic Logs analyse votre message de log par défaut, mais parfois vous avez des messages de log formatés sous forme de paires valeur/clé. Dans cette situation, vous souhaiterez peut-être pouvoir les analyser, puis pouvoir filtrer à l'aide de l'attribut valeur clé.
Dans ce cas, vous pouvez utiliser le type Grokkeyvalue, qui analysera les paires clé-valeur capturées par le motif Grok. Ce format repose sur 3 parties principales : la syntaxe Grok, le préfixe que vous souhaitez attribuer aux attributs clé-valeur analysés et le keyvaluetype Grok. En utilisant le type Grokkeyvalue, vous pouvez extraire et analyser des paires clé-valeur à partir de logs qui ne sont pas correctement formatés ; par exemple, si vos logs sont préfixés par une chaîne date/heure :
"my_attribute_prefix.message": "'This message contains information with spaces",
"my_attribute_prefix.nbn_demo": "INFO",
"my_attribute_prefix.sessionId": "abc123"
Paramètres du modèle Grok
Vous pouvez personnaliser le comportement de l'analyse avec les options suivantes en fonction de vos formats log :
délimiteur
Description : Chaîne séparant chaque paire de valeur clé.
Valeur par défaut :, (virgule)
Remplacement : définissez le champ delimiter pour modifier ce comportement.
Séparateur de valeur clé
Description : Chaîne utilisée pour attribuer des valeurs aux clés.
Valeur par défaut :=
Remplacement : définissez le champ keyValueSeparator pour l'utilisation d'un séparateur personnalisé.
citationChar
Description : Caractère utilisé pour entourer des valeurs avec des espaces ou des caractères spéciaux.
Valeur par défaut :" (guillemets doubles)
Remplacement : définissez un caractère personnalisé à l’aide de quoteChar.
dropOriginal
Description : Supprime le message d'origine du log après analyse. Utile pour réduire le stockage log .
Valeur par défaut :true
Remplacement : définissez dropOriginal sur false pour conserver le message d'origine du log.
pas de préfixe
Description : Lorsque true, exclut le nom du champ Grok comme préfixe dans l'objet résultant.
Valeur par défaut :false
Remplacement : activer en définissant noPrefix sur true.
échapperChar
Description : Définissez un caractère d'échappement personnalisé pour gérer les caractères log spéciaux.
Valeur par défaut : « » (barre oblique inverse)
Remplacer : Personnaliser avec escapeChar.
trimValeurs
Description : permet de supprimer les valeurs contenant des espaces.
Valeur par défaut :false
Remplacement : définissez trimValues sur true pour activer le rognage.
touches de finition
Description : Permet de rogner les clés contenant des espaces.
Valeur par défaut :true
Remplacement : définissez trimKeys sur true pour activer le rognage.
New Relic prend en charge les patterns Grok suivants :
IP
TIMESTAMP_ISO8601
HTTPDATE
TIME
UUID
MONTH
SPACE
DATESTAMP
DATE
COMBINEDAPACHELOG
ISO8601_TIMEZONE
MAC
DATE_EU
TZ
DATE_US
DAY
LOGLEVEL
NUMBER
INT
QUOTEDSTRING
SYSLOGTIMESTAMP
PATH
SYSLOGBASE
COMMONAPACHELOG
IPV6
COMMONMAC
DATESTAMP_OTHER
ISO8601_SECOND
DATESTAMP_EVENTLOG
SYSLOGBASE2
HAPROXYHTTP
RUBY_LOGGER
WINDOWSMAC
WORD
DATA
GREEDYDATA
NOTSPACE
BASE16FLOAT
QS
BASE10NUM
USER
IPORHOST
USERNAME
IPV4
MONTHDAY
YEAR
HOSTNAME
POSINT
URIPATHPARAM
URI
URIPATH
MONTHNUM
NONNEGINT
MINUTE
SECOND
HOUR
URIHOST
URIPROTO
URIPARAM
SYSLOGHOST
BASE16NUM
SYSLOGPROG
HÔTE
HOSTPORT
JAVACLASS
PROG
UNIXPATH
WINPATH
MONTHNUM2
RUBY_LOGLEVEL
SYSLOGFACILITY
CRON_ACTION
HAPROXYCAPTUREDREQUESTHEADERS
HAPROXYCAPTUREDRESPONSEHEADERS
HAPROXYDATE
CISOMAC
Gérer les règles d'analyse
Après avoir créé des règles d'analyse, vous pouvez les gérer depuis Logs > Parsing. Les règles brouillon sont enregistrées mais pas encore activées. Vous pouvez les activer lorsque vous êtes prêt à les appliquer aux logs entrants.
Pour modifier une règle d'analyse :
Dans votre liste de règles de parsing, cliquez sur le nom de la règle ou cliquez sur ... > Edit et effectuez les modifications nécessaires. Pour basculer vers l'éditeur de code, cliquez sur Write your own rule pour écrire ou modifier directement des modèles Grok/Regex.
Cliquez sur Save rule (ou Save as draft si vous souhaitez le laisser désactivé).
Les modifications s'appliquent aux logs ingérés après la mise à jour. Pour activer, désactiver ou supprimer une règle de parsing :
Trouvez la règle dans votre liste de règles de parsing et cliquez sur le menu ....
Choisissez une action :
Enable: Active la règle brouillon (s'applique immédiatement aux logs nouvellement ingérés)
Disable: Met temporairement en pause la règle active
Delete: Supprime complètement la règle
Limites
L'analyse est gourmande en ressources de calcul. Pour garantir la stabilité de la plateforme, New Relic applique ce qui suit :
Limite par message: Une règle dispose de 100 ms pour analyser un seul message. Si cette limite est dépassée, l'analyse s'arrête pour ce message.
Limite par compte: Le temps de traitement total est plafonné par minute. Si vous atteignez cette limite, les logs restent non analysés (stockés dans leur format d'origine).
Chronologie du pipeline: L'analyse s'effectue avant l'enrichissement. Vous ne pouvez pas faire correspondre une règle de parsing à un attribut qui n'a pas encore été ajouté (comme un tag ajouté plus tard dans le pipeline).
La règle de la première correspondance: Les règles d'analyse ne sont pas ordonnées. Si plusieurs règles correspondent à un même log, New Relic en applique une au hasard. Assurez-vous que vos clauses NRQL WHERE sont suffisamment spécifiques pour éviter les correspondances qui se chevauchent.
Conseil
Pour vérifier facilement si vos limites de débit ont été atteintes, accédez à la page Limits de votre système dans l'interface utilisateur de New Relic.
Dépannage
Si l'analyse ne fonctionne pas comme prévu, cela peut être dû à :
Logic: La logique de correspondance de la règle d'analyse ne correspond pas au log souhaité.
Timing: Si votre règle de correspondance d'analyse cible une valeur qui n'existe pas encore, elle échouera. Cela peut se produire si la valeur est ajoutée plus tard dans le pipeline dans le cadre du processus d’enrichissement.
Limits: Il y a une quantité de temps fixe disponible chaque minute pour traiter le log via l'analyse, les modèles, les filtres de suppression, etc. Si le temps maximum a été écoulé, l'analyse sera ignorée pour les enregistrements d'événements de log supplémentaires.