Configurer la journalisation pour les applications .NET dans Amazon CloudWatch Logs à l'aide de NLog - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer la journalisation pour les applications .NET dans Amazon CloudWatch Logs à l'aide de NLog

Créée par Bibhuti Sahu (AWS) et Rob Hill (AWS) (AWS)

Environnement : Production

Technologies : gestion et gouvernance DevOps ; applications Web et mobiles

Charge de travail : Microsoft

Services AWS : Amazon CloudWatch Logs

Récapitulatif

Ce modèle décrit comment utiliser le framework de journalisation open source NLog pour enregistrer l'utilisation des applications .NET et les événements dans Amazon CloudWatch Logs. Dans la CloudWatch console, vous pouvez consulter les messages du journal de l'application quasiment en temps réel. Vous pouvez également définir des métriques et configurer des alarmes pour vous avertir en cas de dépassement d'un seuil de métrique. À l'aide CloudWatch d'Application Insights, vous pouvez consulter des tableaux de bord automatisés ou personnalisés qui indiquent les problèmes potentiels liés aux applications surveillées. CloudWatch Application Insights est conçu pour vous aider à isoler rapidement les problèmes récurrents liés à vos applications et à votre infrastructure.

Pour écrire des messages de journal dans CloudWatch Logs, vous devez ajouter le AWS.Logger.NLog NuGet package au projet .NET. Ensuite, vous mettez à jour le NLog.config fichier pour utiliser CloudWatch Logs comme cible.

Conditions préalables et limitations

Prérequis

Versions du produit

  • .NET Framework version 3.5 ou ultérieure

  • Versions .NET Core 1.0.1, 2.0.0 ou ultérieures

Architecture

Pile technologique cible

  • Nlog

  • Amazon CloudWatch Logs

Architecture cible

Schéma d'architecture de NLog écrivant des données de journal pour une application .NET sur Amazon ClodWatch Logs.
  1. L'application .NET écrit les données du journal dans le framework de journalisation NLog.

  2. NLog écrit les données du journal dans CloudWatch Logs.

  3. Vous utilisez des CloudWatch alarmes et des tableaux de bord personnalisés pour surveiller l'application .NET.

Outils

Services AWS

  • Amazon CloudWatch Application Insights vous aide à observer l'état de vos applications et des ressources AWS sous-jacentes.

  • Amazon CloudWatch Logs vous aide à centraliser les journaux de tous vos systèmes, applications et services AWS afin que vous puissiez les surveiller et les archiver en toute sécurité.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

  • Les outils AWS pour PowerShell sont un ensemble de PowerShell modules qui vous aident à créer des scripts pour des opérations sur vos ressources AWS à partir de la ligne de PowerShell commande.

Autres outils

  • Logger.nlog est une cible NLog qui enregistre les données du journal dans Logs. CloudWatch

  • NLog est un framework de journalisation open source pour les plateformes .NET qui vous permet d'écrire des données de journal sur des cibles, telles que des bases de données, des fichiers journaux ou des consoles.

  • PowerShellest un programme d'automatisation et de gestion de configuration Microsoft qui s'exécute sous Windows, Linux et macOS.

  • Visual Studio est un environnement de développement intégré (IDE) qui inclut des compilateurs, des outils de complétion de code, des concepteurs graphiques et d'autres fonctionnalités qui prennent en charge le développement de logiciels.

Bonnes pratiques

Épopées

TâcheDescriptionCompétences requises

Créez une politique IAM.

Suivez les instructions de la section Création de politiques à l'aide de l'éditeur JSON dans la documentation IAM. Entrez la politique JSON suivante, qui dispose des autorisations de moindre privilège nécessaires pour permettre à Logs de lire et d'écrire des CloudWatch journaux.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:GetLogEvents", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutRetentionPolicy" ], "Resource": [ "*" ] } ] }
Administrateur AWS, AWS DevOps

Créez un rôle IAM.

Suivez les instructions de la section Création d'un rôle pour déléguer des autorisations à un service AWS dans la documentation IAM. Sélectionnez la politique que vous avez créée précédemment. C'est le rôle que CloudWatch Logs assume pour effectuer des actions de journalisation.

Administrateur AWS, AWS DevOps

Configurez les outils AWS pour PowerShell.

  1. Suivez les instructions relatives à votre système d'exploitation dans la section Installation des outils AWS pour PowerShell.

  2. Utilisez les outils AWS pour les PowerShell applets de commande pour stocker votre clé d'accès et votre clé secrète dans un profil. Pour obtenir des instructions, consultez la section Gestion des profils dans les outils AWS pour obtenir de PowerShell la documentation.

AWS général
TâcheDescriptionCompétences requises

Installez le NuGet package.

  1. Dans Visual Studio, choisissez Fichier, puis sélectionnez Ouvrir un projet ou une solution.

  2. Choisissez le projet dans lequel vous souhaitez installer NLog.

  3. Dans Visual Studio, choisissez Outils, Gestionnaire de NuGet packages, Console du gestionnaire de packages.

  4. Installez le AWS.Logger.NLog NuGet package en saisissant la commande suivante.

    Install-Package AWS.Logger.NLog -Version 3.1.0
Développeur d'applications

Configurez la cible de journalisation.

  1. Ouvrez le fichier NLog.config.

  2. Pour la cibletype, entrezAWSTarget.

  3. Pour la ciblelogGroup, entrez le nom du groupe de journaux que vous souhaitez utiliser. Si le groupe de journaux n'existe pas déjà, un nouveau groupe de journaux portant le nom fourni est automatiquement créé.

  4. Pour la cibleregion, entrez la région AWS dans laquelle CloudWatch Logs est configuré.

  5. Pour la cibleprofile, entrez le nom du profil que vous avez créé précédemment pour stocker la clé d'accès et la clé secrète.

  6. Enregistrez et fermez le fichier NLog.config.

Pour un exemple de fichier de configuration, consultez la section Informations supplémentaires de ce modèle. Lorsque vous exécutez votre application, NLog écrit les messages du journal et les envoie à CloudWatch Logs.

Développeur d'applications
TâcheDescriptionCompétences requises

Validez la journalisation.

Suivez les instructions de la section Afficher les données de journal envoyées à CloudWatch Logs dans la documentation CloudWatch Logs. Vérifiez que les événements du journal sont enregistrés pour l'application .NET. Si les événements du journal ne sont pas enregistrés, consultez la section Dépannage de ce modèle.

AWS général

Surveillez la pile d'applications .NET.

Configurez la surveillance CloudWatch selon les besoins de votre cas d'utilisation. Vous pouvez utiliser CloudWatch Logs Insights, CloudWatch Metrics Insights et CloudWatch Application Insights pour surveiller votre charge de travail .NET. Vous pouvez également configurer des alarmes afin de recevoir des alertes, et vous pouvez créer un tableau de bord personnalisé pour surveiller la charge de travail à partir d'une vue unique.

AWS général

Résolution des problèmes

ProblèmeSolution

Les données du journal n'apparaissent pas dans CloudWatch les journaux.

Assurez-vous que la politique IAM est attachée au rôle IAM assumé par CloudWatch Logs. Pour obtenir des instructions, consultez la section Configurer l'accès et les outils dans la section Epics.

Ressources connexes

Informations supplémentaires

Voici un exemple de NLog.config fichier.

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" /> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <nlog> <extensions> <add assembly="NLog.AWS.Logger" /> </extensions> <targets> <target name="aws" type="AWSTarget" logGroup="NLog.TestGroup" region="us-east-1" profile="demo"/> </targets> <rules> <logger name="*" minlevel="Info" writeTo="aws" /> </rules> </nlog> </configuration>