Partager via


Collecter des journaux à partir d’un fichier JSON avec l’agent Azure Monitor

Les journaux JSON 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 ou JSON.

De nombreuses applications et services consignent des informations dans des fichiers JSON 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

Fonctionnement de base

Le diagramme suivant montre l’opération de base pour collecter des données de journal à partir d’un fichier JSON.

  1. L’agent surveille les fichiers journaux qui correspondent à un modèle de nom spécifié sur le disque local.
  2. Chaque entrée du journal est collectée et envoyée à Azure Monitor. Le flux entrant défini par l’utilisateur est utilisé pour analyser les données de journal en colonnes.
  3. Une transformation par défaut est utilisée si le schéma du flux entrant correspond au schéma de la table cible.

Capture d’écran montrant la requête de journal retournant les résultats de la collecte de fichiers délimités par des virgules.

Exigences du fichier JSON 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.
  • Le texte JSON doit être contenu dans une seule ligne. Le format du corps JSON n’est pas pris en charge. Voir l’exemple ci-dessous.

Respectez les recommandations suivantes pour ne perdre aucune donnée et 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.

Table personnalisée

Pour collecter les données de journal d’un fichier JSON, 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 colonnes du flux entrant. Sinon, vous devez ajouter une transformation pour vous assurer que le schéma de sortie correspond à la table.

Avertissement : Vous ne devez pas utiliser une table personnalisée existante utilisée par les agents MMA. Lorsque le premier agent AMA aura écrit dans la table, vos agents MMA ne pourront plus écrire dans cette table. Pour éviter la perte de données MMA, vous devez créer une nouvelle table pour que AMA puisse l’utiliser.

Par exemple, vous pouvez utiliser le script PowerShell suivant pour créer une table personnalisée avec plusieurs colonnes.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "MyStringColumn",
                        "type": "string"
                    },
                    {
                        "name": "MyIntegerColumn",
                        "type": "int"
                    },
                    {
                        "name": "MyRealColumn",
                        "type": "real"
                    },
                    {
                        "name": "MyBooleanColumn",
                        "type": "bool"
                    },
                    {
                        "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 JSON

Remarque

L’ingestion de fichier personnalisé JSON basée sur l’agent est actuellement en préversion et n’a pas encore d’expérience d’interface utilisateur complète dans le portail. Bien que vous puissiez créer la DCR à l’aide du portail, vous devez le modifier pour définir les colonnes dans le flux entrant. Pour plus d’informations sur la création de la DCR requise, consultez l’onglet Modèle Resource Manager.

Flux entrant

Les fichiers JSON incluent un nom de propriété avec chaque valeur, et le flux entrant dans la DCR doit inclure une colonne correspondant au nom de chaque propriété. Si vous créez la DCR à l’aide du portail Azure, les colonnes du tableau suivant seront incluses dans le flux entrant et vous devez modifier manuellement la DCR ou la créer à l’aide d’une autre méthode dans laquelle vous pouvez définir explicitement le flux entrant.

Colonne Type Description
TimeGenerated DATETIME Date et heure de génération de l’enregistrement.
RawData string Cette colonne est vide pour un journal JSON.
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 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.

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 JSON 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.json
– C:\Logs\MyLog*.json
– C:\App01\AppLog.json, C:\App02\AppLog.json
– /var/mylog.json
– /var/mylog*.json
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.

Dépannage

Si vous ne collectez pas les données attendues du journal JSON, effectuez 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 du flux entrant dans la DCR correspond au schéma dans le fichier journal.
  • 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 :