Collecter des journaux à partir d’un fichier texte avec l’agent Azure Monitor
Les journaux texte personnalisés constituent l’une des sources de données utilisées dans une règle de collecte de données (DCR). Les détails sur la création d’une DCR sont fournis dans Collecter des données avec l’agent Azure Monitor. Cet article fournit des informations complémentaires sur le type de journaux texte.
De nombreuses applications et services consignent des informations dans des fichiers texte au lieu des services de journalisation standard tels que le Journal des événements Windows ou Syslog. Vous pouvez collecter ces données avec l’agent Azure Monitor et les stocker dans un espace de travail Log Analytics avec des données collectées à partir d’autres sources.
Prérequis
- Un espace de travail Log Analytics dans lequel vous avez au moins des droits de contributeur.
- Un point de terminaison de collecte de données (DCE) dans la même région que l’espace de travail Log Analytics. Pour en savoir plus, consultez Comment configurer des points de terminaison de collecte de données en fonction de votre déploiement.
- Une DCR nouvelle ou existante, comme décrit dans Collecter des données avec l’agent Azure Monitor.
Fonctionnement de base
Le diagramme suivant montre l’opération de base pour collecter des données de journal à partir d’un fichier texte.
- L’agent surveille les fichiers journaux qui correspondent à un modèle de nom spécifié sur le disque local.
- Chaque entrée du journal est collectée et envoyée à Azure Monitor. Le flux entrant inclut l’intégralité de l’entrée de journal dans une même colonne.
- Si vous utilisez la transformation par défaut, l’intégralité de l’entrée de journal est envoyée dans une même colonne de la table cible.
- Si vous utilisez la transformation personnalisée, l’entrée de journal peut être analysée dans plusieurs colonnes de la table cible.
Exigences du fichier texte et meilleures pratiques
Le fichier que l’agent Azure Monitor surveille doit répondre aux exigences suivantes :
- Vous devez stocker le fichier sur le lecteur local de la machine contenant l’agent Azure Monitor du répertoire en cours de surveillance.
- Chaque enregistrement doit être délimité par une fin de ligne.
- Le fichier doit utiliser un encodage ASCII ou UTF-8. D’autres formats, tel UTF-16, ne sont pas pris en charge.
- Vous devez ajouter les nouveaux enregistrements à la fin du fichier et ne pas remplacer les anciens enregistrements. Le remplacement entraîne une perte de données.
Respectez les recommandations suivantes pour ne perdre aucune donnée et de ne rencontrer aucun problème de performances :
- Créez un fichier journal tous les jours pour pouvoir supprimer facilement les anciens fichiers.
- Nettoyez tous les fichiers journaux du répertoire surveillé de façon continue. Le suivi de nombreux fichiers journaux peut entraîner une augmentation de l’utilisation de la mémoire et du processeur de l’agent. Patientez au moins 2 jours afin d’allouer le temps nécessaire au traitement des journaux.
- Ne renommez pas un fichier qui correspond au modèle d’analyse de fichier en utilisant un autre nom qui correspond également au modèle d’analyse de fichier. Cette opération entraîne l’ingestion de données en double.
- Ne renommez ni ne copiez pas de fichiers journaux volumineux qui correspondent au modèle d’analyse de fichier dans le répertoire surveillé. Si vous devez l’effectuer, ne dépassez pas 50 Mo par minute.
Flux entrant
Remarque
La prise en charge multiligne qui utilise un horodatage pour les événements délimités est maintenant disponible. Vous devez utiliser un déploiement de modèle de gestion des ressources jusqu’à ce que la prise en charge soit ajoutée dans l’interface utilisateur du portail.
Le flux entrant de données inclut les colonnes du tableau suivant.
Colonne | Type | Description |
---|---|---|
TimeGenerated |
DATETIME | Date et heure de génération de l’enregistrement. Cette valeur est automatiquement renseignée lorsque l’enregistrement est ajouté à l’espace de travail Log Analytics. Vous pouvez remplacer cette valeur en utilisant une transformation pour définir TimeGenerated sur une autre valeur. |
RawData |
string | Intégralité de l’entrée de journal dans une même colonne. Vous pouvez utiliser une transformation pour décomposer ces données en plusieurs colonnes avant de les envoyer à la table. |
FilePath |
string | Si vous ajoutez cette colonne au flux entrant dans la DCR, le chemin du fichier journal est renseigné dans cette dernière. Cette colonne n’est pas créée automatiquement. Vous ne pouvez pas l’ajouter avec le portail. Vous devez modifier la DCR créée par le portail ou créer une DCR manuellement en utilisant une autre méthode permettant de définir explicitement le flux entrant. |
Computer |
string | Si vous ajoutez cette colonne au flux entrant dans la DCR, le nom de l’ordinateur y sera renseigné avec le nom du journal. Cette colonne n’est pas créée automatiquement. Vous ne pouvez pas l’ajouter avec le portail. Vous devez modifier la DCR créée par le portail ou créer une DCR manuellement en utilisant une autre méthode permettant de définir explicitement le flux entrant. |
Table personnalisée
Pour collecter les données de journal d’un fichier texte, vous devez créer une table personnalisée dans votre espace de travail Log Analytics pour recevoir les données. Le schéma de table doit correspondre aux données que vous collectez. Sinon, vous devez ajouter une transformation pour vous assurer que le schéma de sortie correspond à la table.
Avertissement
Pour éviter les pertes de données, il est important de ne pas utiliser une table de journal personnalisée existante que les agents MMA utilisent actuellement. Une fois qu’un agent AMA a écrit dans une table de journal personnalisée existante, les agents MMA ne peuvent plus écrire dans cette table. Au lieu de cela, vous devez créer une table spécifiquement pour les agents AMA afin de permettre une transition fluide d’un agent à l’autre.
Par exemple, vous pouvez utiliser le script PowerShell suivant pour créer une table personnalisée avec RawData
, FilePath
et Computer
. Vous n’avez pas besoin de transformation avec cette table, car le schéma correspond au schéma par défaut du flux entrant.
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "RawData",
"type": "String"
},
{
"name": "FilePath",
"type": "String"
},
{
"name": "Computer",
"type": "String"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Créer une règle de collecte de données pour un fichier texte
Créez une règle de collecte de données, comme décrit dans Collecter des données avec l’agent Azure Monitor. Dans l’étape Collecter et livrer, sélectionnez Journaux texte personnalisés dans la liste déroulante Type de source de données.
Setting | Description |
---|---|
Modèle de fichier | Identifie l’emplacement et le nom des fichiers journaux sur le disque local. Utilisez un caractère générique pour les noms de fichiers qui varient, par exemple lorsque vous créez un nouveau fichier chaque jour avec un nouveau nom. Vous pouvez entrer plusieurs modèles de fichiers séparés par des virgules. Exemples : - C:\Logs\MyLog.txt - C:\Logs\MyLog*.txt - C:\App01\AppLog.txt, C:\App02\AppLog.txt - /var/mylog.log - /var/mylog*.log |
Nom de table | Nom de la table cible dans l’espace de travail Log Analytics. |
Séparateur d’enregistrements | Actuellement inutilisé, mais réservé à une potentielle utilisation future visant à autoriser les délimiteurs autres que la fin de ligne actuellement prise en charge (/r/n ). |
Transformation | Transformation de la durée d’ingestion en vue de filtrer les enregistrements ou de mettre en forme les données entrantes pour la table cible. Utilisez source pour laisser les données entrantes en l’état. |
Fichiers journaux délimités
De nombreux fichiers journaux texte comportent des entrées délimitées par un caractère (comme une virgule). Pour analyser ces données en plusieurs colonnes, utilisez une transformation avec la fonction split.
Par exemple, étudiez le fichier texte avec les données délimitées par des virgules ci-dessous. Ces champs peuvent être décrits comme suit : Time
, Code
, Severity
, Module
et Message
.
2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.
La transformation suivante analyse les données en plusieurs colonnes. split
retourne des données dynamiques : vous devez utiliser des fonctions comme tostring
et toint
pour convertir les données dans le type scalaire qui convient. Vous devez également indiquer un nom pour chaque entrée correspondant au nom de colonne dans la table cible. Notez que cet exemple fournit une valeur TimeGenerated
. Si ce n’était pas le cas, la durée d’ingestion serait utilisée.
source | project d = split(RawData,",") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])
La récupération de ces données avec une requête de journal retourne les résultats suivants.
Dépannage
Si vous ne collectez pas les données attendues, appliquez les étapes suivantes.
- Vérifiez que les données sont écrites dans le fichier journal en cours de collecte.
- Vérifiez que le nom et l’emplacement du fichier journal correspondent au modèle de fichier spécifié.
- Vérifiez que le schéma de la table cible correspond au flux entrant ou que vous utilisez une transformation qui convertit le flux entrant dans le schéma qui convient.
- Pour vérifier que l’agent est opérationnel et que les données sont reçues, consultez Vérifier l’opération.
Étapes suivantes
Pour en savoir plus :