Activer et configurer la journalisation des applications App Service

Effectué

Dans cette unité, nous découvrons comment la journalisation des applications facilite le travail avec vos applications web et vous montrons comment activer ces journaux.

Qu’est-ce que les journaux d’application ?

Azure fournit des diagnostics intégrés avec la journalisation des applications. Les journaux d’application sont les sorties des instructions de trace de l’exécution dans le code d’une application. Par exemple, vous pouvez vouloir vérifier la logique de votre code en y ajoutant un suivi pour afficher le moment auquel une fonction particulière est traitée. Ou bien, vous souhaitez peut-être afficher un message journal uniquement lorsqu’un niveau d’erreur particulier se produit. La journalisation des applications s’applique surtout aux applications en préproduction et pour résoudre des problèmes gênants, car une journalisation excessive peut avoir un impact sur les performances et consommer rapidement du stockage. pour cette raison, la journalisation dans le système de fichiers est automatiquement désactivée au bout de 12 heures.

La journalisation des applications est soumise à certaines limitations de taille, principalement parce que des fichiers sont utilisés pour enregistrer la sortie journalisée. Si vous avez plusieurs instances d’une application et qu’un seul et même stockage est partagé entre toutes les instances, les messages générés par ces différentes instances risquent de se recouper, ce qui complique la résolution des problèmes. Si chaque instance a un fichier journal distinct, beaucoup de journaux sont générés, compliquant là aussi le débogage des problèmes propres à une instance.

Les types de journalisations disponibles dans Azure App Service dépendent du framework du code de l’application, mais aussi si l’application est exécutée sur un hôte d’application Windows ou Linux.

ASP.NET

Les applications ASP.NET s’exécutent uniquement sur des services d’application Windows. Pour enregistrer des informations dans le journal de diagnostic des applications, utilisez la classe System.Diagnostics.Trace. Il existe quatre niveaux de trace possibles. Ceux-ci correspondent aux niveaux de journalisation error, warning, information et verbose montrés dans le portail Azure :

  • Trace.TraceError("Message"); // Écrit un message d’erreur
  • Trace.TraceWarning("Message"); // Écrit un message d’avertissement
  • Trace.TraceInformation("Message"); // Écrit un message d’information
  • Trace.WriteLine("Message"); // Écrit un message détaillé

Applications ASP.NET Core

Les applications ASP.NET Core peuvent s’exécuter sur Windows ou Linux. Pour enregistrer des informations dans les journaux d’applications Azure, utilisez la classe logger factory, puis utilisez un des six niveaux de journalisation :

  • logger.LogCritical("Message"); // Écrit un message critique au niveau de journalisation 5
  • logger.LogError("Message"); // Écrit un message d’erreur au niveau de journalisation 4
  • logger.LogWarning("Message"); // Écrit un message d’avertissement au niveau de journalisation 3
  • logger.LogInformation("Message"); // Écrit un message d’information au niveau de journalisation 2
  • logger.LogDebug("Message"); // Écrit un message de débogage au niveau de journalisation 1
  • logger.LogTrace("Message"); // Écrit un message de trace détaillé au niveau de journalisation 0

Pour les applications ASP.NET Core sur Windows, ces messages sont corrélés aux filtres dans le portail Azure de cette façon :

  • Les niveaux 4 et 5 sont des messages d’erreur.
  • Le niveau 3 est un message d’avertissement.
  • Le niveau 2 est un message d’information.
  • Les niveaux 0 et 1 sont des messages détaillés.

Pour les applications ASP.NET Core sur Linux, seuls les messages d’erreur (niveaux 4 et 5) sont journalisés.

Applications Node.js

Pour les applications web basées sur des scripts, comme les applications Node.js sur Windows ou Linux, vous activez la journalisation des applications en utilisant la méthode console() :

  • console.error("Message") ; //Écrit un message vers STDERR.
  • console.log("Message") ; //Écrit un message vers STDOUT.

Ces deux types de messages sont écrits dans les journaux de niveau d’erreur Azure App Service.

Différences dans la journalisation entre les hôtes Windows et Linux

Pour router les messages vers les fichiers journaux, les applications web Azure utilisent le serveur web (processus IIS). Étant donné que les applications web sur Windows constituent un service Azure bien établi et que l’envoi des messages pour les applications ASP.NET est entièrement intégré au service IIS sous-jacent, les applications Windows bénéficient d’une infrastructure de journalisation complète. Pour les autres applications, les options de journalisation sont limitées par la plateforme de développement, même lorsque les applications sont exécutées sur un service d’application Windows.

L’image Docker utilisée pour le conteneur de l’application détermine la disponibilité des fonctionnalités de journalisation pour les applications Linux basées sur des scripts, comme Node. La journalisation de base, dont l’utilisation de redirections vers STDERR ou STDOUT, utilise les journaux Docker. Les fonctionnalités de journalisation plus riches sont dépendantes de l’image sous-jacente, notamment si elle exécute PHP, Perl, Ruby, etc. Pour télécharger des fonctionnalités de journalisation web équivalentes à celles fournies par le service IIS pour les applications Windows, vous devrez peut-être vous connecter à votre conteneur à l’aide de SSH.

Le tableau suivant récapitule les fonctionnalités de journalisation prises en charge pour les hôtes et environnements d’application courants.

Environnement d’application Hôte Niveaux de journalisation Emplacement d’enregistrement
ASP.NET Windows Erreur, Avertissement, Information, Détaillé Système de fichiers, Stockage Blob
ASP.NET Core Windows Erreur, Avertissement, Information, Détaillé Système de fichiers, Stockage Blob
ASP.NET Core Linux Erreur Système de fichiers
Node.js Windows Erreur (STDERR), Information (STDOUT), Avertissement, Détaillé Système de fichiers, Stockage Blob
Node.js Linux Erreur Système de fichiers
Java Linux Erreur Système de fichiers

Alternatives au diagnostics d’application

Azure Application Insights est une extension de site qui fournit plus de fonctionnalités de supervision de performance, dont des données détaillées d’utilisation et de performance. Ce service est conçu pour les déploiements d’applications de production. C’est donc un outil de développement potentiellement utile. Application Insights fonctionne dans de nombreux environnements de développement d’applications, et fournit les mêmes données de télémétrie et de performance complètes pour les applications ASP.NET ou Node. Toutefois, pour utiliser Application Insights, vous devez ajouter du code spécifique dans votre application, à l’aide du SDK Application Insights. Application Insights est également un service facturable. Il est donc conseillé de prévoir le paiement de frais courants en fonction de la taille de vos déploiements d’applications et du volume de données collectées.

Vous pouvez également consulter les Métriques de votre application pour vous aider à profiler la façon dont s’exécute votre application. ces compteurs sont utiles pour la production et le développement. Vous pouvez ainsi superviser l’utilisation du processeur, de la mémoire, du réseau et du système de fichiers, et configurer des alertes qui se déclenchent quand un compteur atteint un seuil spécifié. La facturation des métriques est établie sur la base du niveau du plan App Service.

Activer la journalisation dans le portail Azure

Dans le portail, la journalisation des applications est gérée à partir du volet Journaux de diagnostic de l’application web.

Screenshot of Diagnostics logs pane in the Azure portal.

Pour activer la journalisation des applications dans le système de fichiers d’une application web, définissez Journal des applications (Système de fichiers) sur Activé, puis définissez le Niveau sur Erreur, Avertissement, Information ou Détaillé. La journalisation dans le système de fichiers est automatiquement réinitialisée sur Désactivé au bout de 12 heures.

Pour activer la journalisation des applications dans un conteneur de Stockage Blob, définissez le Journal des applications (Blob) sur Activé, puis sélectionnez un conteneur et un compte de stockage. Le compte de stockage et l’application web doivent être créés dans la même région Azure. Ensuite, définissez l’option Niveau sur Erreur, Avertissement, Information ou Détaillé.

Notes

Il n’est pas possible d’enregistrer les journaux d’applications Linux dans Stockage Blob.

Si vous enregistrez les journaux d’applications dans un stockage Blob, vous devez également définir une période de conservation. Contrairement aux journaux du système de fichiers, les journaux blob ne sont jamais supprimés par défaut. L’option de période de rétention signifie que tout journal vieux d’un certain nombre de jours est supprimé.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

Quand vous avez terminé la configuration des journaux, sélectionnez Enregistrer.

Activer la journalisation à l’aide d’Azure CLI

Pour activer la journalisation des applications dans le système de fichiers, exécutez cette commande.

az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>

Par exemple, pour activer la journalisation dans le système de fichiers pour une application appelée contosofashions123 en capturant tous les messages, exécutez cette commande.

az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG

Il n’existe actuellement aucun moyen de désactiver la journalisation des applications à l’aide de commandes Azure CLI. Toutefois, la commande suivante réinitialise la journalisation du système de fichiers exclusivement au niveau d’erreur.

az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>

Pour connaître l’état actuel de la journalisation d’une application, utilisez cette commande.

az webapp log show --name <app-name> --resource-group <resource-group-name>

Vérifiez vos connaissances

1.

Quels types d’applications web peuvent enregistrer des journaux dans le stockage Blob Azure ?

2.

Pourquoi la journalisation dans le système de fichiers est automatiquement désactivée au bout de 12 heures ?