Ingérer des données avec le récepteur NLog dans Azure Data Explorer
NLog est une plateforme de journalisation flexible et gratuite pour différentes plateformes .NET, notamment .NET standard. NLog vous permet d’écrire dans plusieurs cibles, telles qu’une base de données, un fichier ou une console. Avec NLog, vous pouvez modifier la configuration de journalisation à la volée. Le récepteur NLog est une cible pour NLog qui vous permet d’envoyer vos messages de journal à un cluster KQL. Le plug-in est basé sur la bibliothèque Azure-Kusto-Data et offre un moyen efficace de réceptionner vos journaux d’activité sur votre cluster.
Dans cet article, vous allez apprendre à ingérer des données avec le récepteur nLog.
Pour obtenir la liste complète des connecteurs de données, veuillez consulter la vue d’ensemble des connecteurs de données.
Prérequis
- SDK .NET 6.0 ou ultérieur
- Un cluster et une base de données Azure Data Explorer
Paramétrer votre environnement
Dans cette section, vous allez préparer votre environnement pour utiliser le connecteur NLog.
Installer le package
Ajoutez le package NuGet NLog.Azure.Kusto. Utilisez la commande Install-Package en spécifiant le nom du package NuGet.
Install-Package NLog.Azure.Kusto
Créer une inscription d’application Microsoft Entra
L’authentification des applications Microsoft Entra est utilisée pour les applications qui doivent accéder à la plateforme sans la présence d’un utilisateur. Pour obtenir des données à l’aide du connecteur NLog, vous devez créer et enregistrer un principal de service Microsoft Entra, puis autoriser ce principal à obtenir des données à partir d’une base de données.
Le principal de service Microsoft Entra peut être créé dans le portail Azure ou programmatiquement, comme dans l’exemple suivant.
Ce principal de service sera l’identité utilisée par le connecteur pour écrire des données dans votre table dans Kusto. Vous accorderez ultérieurement des autorisations pour ce principal de service afin d’accéder à des ressources Kusto
Connectez-vous à votre abonnement Azure via Azure CLI. Authentifiez-vous ensuite dans le navigateur.
az login
Choisissez l’abonnement pour héberger le principal. Cette étape est nécessaire quand vous avez plusieurs abonnements.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Créez le principal de service. Dans cet exemple, le principal de service est appelé
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
À partir des données JSON retournées, copiez le
appId
,password
ettenant
pour une utilisation ultérieure.{ "appId": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn", "displayName": "my-service-principal", "name": "my-service-principal", "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn", "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn" }
Vous avez créé votre application Microsoft Entra et votre principal de service.
Enregistrez les valeurs suivantes pour les utiliser dans les étapes ultérieures : * ID d’application (client) * ID de répertoire (locataire) * valeur de la clé secrète du client
Accordez les autorisations d’application Microsoft Entra
Dans votre environnement de requête, exécutez la commande de gestion suivante en remplaçant les espaces réservés. Remplacez DatabaseName par le nom de la base de données cible et ApplicationID par la valeur précédemment enregistrée. Cette commande accorde à l’application le rôle d’ingestion de base de données. Pour en savoir plus, consultez Gérer les rôles de sécurité de bases de données.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
Remarque
Le dernier paramètre est une chaîne qui s’affiche sous la forme de notes lorsque vous interrogez les rôles associés à une base de données. Pour plus d’informations, veuillez consulter Affichage des rôles de sécurité existants.
Créez une table et un mappage d’ingestion
Créez une table cible pour les données entrantes.
Dans votre éditeur de requête, exécutez la commande de création de table suivante, en remplaçant l’espace réservé TableName par le nom de la table cible :
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
Ajout de la configuration cible à votre application
Procédez comme suit pour :
- Ajout de la configuration cible
- Générer et exécuter l’application
Ajoutez la cible dans votre fichier de configuration NLog.
<targets> <target name="targettable" xsi:type="TargetTable" IngestionEndpointUri="<Connection string>" Database="<Database name>" TableName="<Table name>" ApplicationClientId="<Entra App clientId>" ApplicationKey="<Entra App key>" Authority="<Entra tenant id>" /> </targets> ##Rules <rules> <logger name="*" minlevel="Info" writeTo="adxtarget" /> </rules>
Pour plus d’options, veuillez consulter le connecteur Nlog.
Envoyez des données à l’aide du récepteur NLog. Par exemple :
logger.Info("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); logger.Error(exceptionObj, "This was exception"); logger.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs); logger.Warn("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
Générez et exécutez l'application. Par exemple, si vous utilisez Visual Studio, appuyez sur F5.
Rassurez-vous que les données se situent dans votre cluster. Dans votre environnement de requête, exécutez la requête suivante en remplaçant l’espace réservé par le nom de la table que vous avez utilisée précédemment :
<TableName> | take 10
Exécution de l'exemple d'application
Utilisez l’application génératrice d’échantillons de journaux comme exemple pour montrer comment configurer et utiliser le récepteur NLog.
Clonez le référentiel Git du récepteur NLog à l’aide de la commande Git suivante :
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
Définissez les variables environnementales suivantes afin que le fichier de configuration NLog puisse les lire immédiatement à partir de l’environnement :
Variable Description INGEST_ENDPOINT L’URI d’ingestion pour votre cible de données. Vous avez copié cet URI dans les prérequis. DATABASE Nom de la base de données cible, respectant la casse. APP_ID L’ID client d’application requis pour l’authentification. Vous avez enregistré cette valeur dans Créer une inscription d’application Microsoft Entra. APP_KEY La clé d’application requise pour l’authentification. Vous avez enregistré cette valeur dans Créer une inscription d’application Microsoft Entra. AZURE_TENANT_ID L’identificateur du locataire où l’application est inscrite. Vous avez enregistré cette valeur dans Créer une inscription d’application Microsoft Entra. Vous pouvez définir manuellement les variables d’environnement ou à l’aide des commandes suivantes :
Dans votre terminal, naviguez jusqu’au dossier racine du référentiel cloné et exécutez la commande
dotnet
suivante pour générer l’application :cd .\NLog.Azure.Kusto.Samples\ dotnet build
Dans votre terminal, accédez au dossier des échantillons et exécutez la commande
dotnet
suivante pour exécuter l’application :dotnet run
Dans votre environnement de requête, sélectionnez la base de données cible et exécutez la requête suivante pour explorer les données ingérées.
ADXNLogSample | take 10
Votre résultat devrait ressembler à l’image suivante :