Share via


Surveillance d’applications pour Azure App Service et ASP.NET

L’activation de la surveillance de vos applications Web ASP.NET exécutées sur les Azure App Service n’a jamais été aussi facile. Auparavant, vous deviez instrumenter manuellement votre application. À présent, l’extension/agent le plus récent est intégré par défaut dans l’image App Service. Cet article explique pas à pas comment activer la supervision Azure Monitor Application Insights et vous donne des conseils d’automatisation du processus pour les déploiements à grande échelle.

Notes

L’ajout manuel d’une extension de site Application Insights via Outils de développement>Extensions est une méthode dépréciée. Cette méthode d’installation de l’extension était dépendante des mises à jour manuelles pour chaque nouvelle version. La version stable la plus récente de l’extension est désormais préinstallée dans l’image App Service. Les fichiers se trouvent dans d:\Program Files (x86)\SiteExtensions\ApplicationInsightsAgent et sont automatiquement mis à jour avec chaque version stable. Si vous suivez les instructions d’instrumentation automatique pour activer la surveillance, cela a automatiquement pour effet de supprimer l’extension déconseillée.

Si les deux méthodes, la supervision d’auto-instrumentation et l’instrumentation manuelle basée sur un kit de développement logiciel (SDK), sont détectées, seuls les paramètres de l’instrumentation manuelle sont appliqués. Cette organisation empêche l’envoi de données en double. Pour plus d’informations, consultez la section Résolution des problèmes.

Notes

Le support de l’ingestion de clé d’instrumentation prendra fin le 31 mars 2025. L’ingestion de clé d’instrumentation continuera de fonctionner, mais nous ne fournirons plus de mises à jour ni de support pour la fonctionnalité. Passez aux chaînes de connexion pour tirer parti des nouvelles fonctionnalités.

Activer la surveillance de l’instrumentation automatique

Pour obtenir la liste complète des scénarios d’instrumentation automatique pris en charge, consultez Environnements, langages et fournisseurs de ressources pris en charge.

Notes

La combinaison de APPINSIGHTS_JAVASCRIPT_ENABLED et urlCompression n’est pas prise en charge. Pour plus d’informations, consultez la section de résolution des problèmes.

  1. Sélectionnez Application Insights dans le panneau de configuration Azure pour votre service d’application. Ensuite, sélectionnez Activer.

    Capture d’écran montrant l’onglet Application Insights avec Activer sélectionné.

  2. Choisissez de créer une nouvelle ressource, ou sélectionnez une ressource Application Insights existante pour cette application.

    Notes

    Quand vous sélectionnez OK pour créer la ressource, vous êtes invité à sélectionner Appliquer les paramètres de supervision. Si vous sélectionnez Continuer, votre nouvelle ressource Application Insights est liée à votre service d’application. Cela déclenche également un redémarrage de votre service d’application.

    Capture d’écran montrant la liste déroulante Changer votre ressource.

  3. Après avoir spécifié la ressource à utiliser, vous pouvez choisir la façon dont Application Insights doit collecter les données par plateforme pour votre application. La supervision des applications ASP.NET est activée par défaut avec deux niveaux de collecte différents.

    Capture d'écran de la page des extensions de site Application Insights, sur laquelle l'option Créer une ressource est sélectionnée.

    Le tableau suivant récapitule les données collectées pour chaque itinéraire.

    Données Collecte ASP.NET De base Collecte ASP.NET Recommandé
    Ajoute les tendances d’utilisation de l’UC, de la mémoire et des E/S Non Oui
    Collecte les tendances d’utilisation et permet la mise en corrélation des résultats de la disponibilité avec les transactions Oui Oui
    Collecte les exceptions non gérées par le processus hôte Oui Oui
    Améliore la précision des métriques APM avec charge, quand l’échantillonnage est utilisé Oui Oui
    Met en corrélation les microservices dans les limites de requête/dépendance Non (fonctionnalités APM à instance unique uniquement) Oui
  4. Pour configurer l’échantillonnage, que vous pouviez auparavant contrôler au moyen du fichier applicationinsights.config, vous pouvez maintenant interagir avec l’échantillonnage en définissant des paramètres d’application avec le préfixe correspondant MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor.

    • Par exemple, pour changer le pourcentage d’échantillonnage initial, créez un paramètre d’application MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage avec la valeur 100.

    • Pour désactiver l’échantillonnage, affectez à MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage la valeur 100.

    • Les paramètres pris en charge sont les suivants :

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • Pour obtenir la liste des paramètres et définition du processeur de télémétrie pris en charge pour l’échantillonnage adaptatif, consultez le code et la documentation sur l’échantillonnage.

Activer la supervision côté client

La supervision côté client est activée pour ASP.NET. Pour activer la supervision côté client :

  1. Sélectionnez Paramètres>Configuration.

  2. Sous Paramètres d’application, cliquez sur Nouveau paramètre d’application :

    • Nom : Entrez APPINSIGHTS_JAVASCRIPT_ENABLED.
    • Valeur : Entrez true.
  3. Enregistrez les paramètres, puis redémarrez votre application.

Pour désactiver la supervision côté client, supprimez la paire clé-valeur associée dans les paramètres de l’application, ou définissez la valeur sur false.

Automatiser la supervision

Pour activer la collecte de données de télémétrie avec Application Insights, il vous suffit de définir les paramètres de l’application.

Capture d’écran montrant les paramètres d’application App Service avec les paramètres Application Insights.

Définitions des paramètres d’application

Nom du paramètre d’application Définition Valeur
ApplicationInsightsAgent_EXTENSION_VERSION Extension principale, qui contrôle la supervision runtime. ~2
XDT_MicrosoftApplicationInsights_Mode Dans le mode par défaut, seules les fonctionnalités essentielles sont activées afin de garantir des performances optimales. default ou recommended
InstrumentationEngine_EXTENSION_VERSION Contrôle si le moteur de réécriture binaire InstrumentationEngine est activé. Ce paramètre impacte les performances ainsi que les temps de démarrage/démarrage à froid. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions Contrôle si le texte de tables SQL et Azure est capturé, ainsi que les appels de dépendances. Avertissement de performance : le temps de démarrage à froid de l’application sera affecté. Ce paramètre requiert InstrumentationEngine. ~1

Paramètres d’application App Service avec Azure Resource Manager

Les paramètres d’application pour Azure App Services peuvent être gérés et configurés à l’aide de modèles Azure Resource Manager. Vous pouvez utiliser cette méthode au moment de déployer de nouvelles ressources App Service avec l’automatisation Resource Manager ou modifiez les paramètres des ressources existantes.

La structure de base des paramètres d’application JSON pour une ressource App Service :

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

Pour obtenir un exemple de modèle Resource Manager où les paramètres d’application sont configurés pour Application Insights, consultez ce modèle. Plus précisément, consultez la section qui commence à la ligne 238.

Pour créer un modèle Resource Manager avec les paramètres Application Insights par défaut, commencez le processus comme si vous alliez créer une nouvelle application web avec Application Insights activé.

  1. Créez une ressource App Service avec les informations d’application web souhaitées. Activez Application Insights sous l’onglet Supervision.

  2. Sélectionnez Revoir + créer. Sélectionnez ensuite Télécharger un modèle pour automation.

    Capture d’écran montrant le menu de création d’application web App Service.

    Cette option génère le dernier modèle Resource Manager configuré avec tous les paramètres nécessaires.

    Capture d’écran montrant un modèle d’application web App Service.

Dans l’exemple suivant, remplacez toutes les instances de AppMonitoredSite par le nom de votre site :

Remarque

Si vous travaillez sous Windows, définissez ApplicationInsightsAgent_EXTENSION_VERSION sur ~2. Si vous travaillez sous Linux, définissez ApplicationInsightsAgent_EXTENSION_VERSION sur ~3.

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

Activer par le biais de PowerShell

Pour activer la supervision d’application via PowerShell, seuls les paramètres d’application sous-jacents doivent être modifiés. L’exemple suivant active la supervision d’application pour un site web appelé AppMonitoredSite dans le groupe de ressources AppMonitoredRG. Il configure les données à envoyer à la clé d’instrumentation 012345678-abcd-ef01-2345-6789abcd.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Remarque

Si vous travaillez sous Windows, définissez ApplicationInsightsAgent_EXTENSION_VERSION sur ~2. Si vous travaillez sous Linux, définissez ApplicationInsightsAgent_EXTENSION_VERSION sur ~3.

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Mettre à niveau l’extension/agent de surveillance : .NET

Mise à niveau à partir des versions 2.8.9 et ultérieures

La mise à niveau à partir de la version 2.8.9 s’effectue automatiquement, sans aucune action supplémentaire de votre part. Les nouveaux bits de surveillance sont fournis en arrière-plan au service d’application cible. Elles seront sélectionnées lors du redémarrage de l’application.

Pour connaître la version de votre extension, accédez à l’adresse https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Capture d’écran montrant le chemin de l’URL pour vérifier la version de l’extension que vous exécutez.

Mise à niveau à partir des versions 1.0.0 - 2.6.5

Depuis la version 2.8.9, l’extension de site préinstallée est utilisée. Si vous avez une version antérieure, vous pouvez la mettre à jour de deux façons :

  • Mettre à niveau en activant via le portail : même si vous avez installé l’extension Application Insights pour App Service. L’interface utilisateur affiche uniquement le bouton Activer. En arrière-plan, l’ancienne extension de site privée sera supprimée.

  • Mettre à niveau par le biais de PowerShell :

    1. Définissez les paramètres de l’application pour activer l’extension de site préinstallée ApplicationInsightsAgent. Pour plus d’informations, consultez Activer via PowerShell.
    2. Supprimez manuellement l’extension de site privée nommée extension Application Insights pour App Service.

Si vous réalisez la mise à niveau à partir d’une version antérieure à 2.5.1, vérifiez que les DLL Application Insigths sont supprimées du dossier bin de l’application. Pour plus d’informations, consultez les étapes de la section Résolution des problèmes.

Dépannage

Notes

Quand vous créez une application web avec les runtime ASP.NET dans App Service, elle déploie une seule page HTML statique en tant que site web de démarrage. Nous vous déconseillons de résoudre un problème avec un modèle par défaut. Déployez une application avant de résoudre un problème.

Voici les étapes à suivre pas à pas pour résoudre les problèmes rencontrés avec la surveillance basée sur un agent/une extension pour les applications ASP.NET exécutées sur App Service.

  1. Vérifiez que le paramètre d’application ApplicationInsightsAgent_EXTENSION_VERSION défini a la valeur ~2.

  2. Accédez à https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Capture d’écran montrant la page des résultats du lien précédent.

    • Vérifiez que est Application Insights Extension Status et Pre-Installed Site Extension, version 2.8.x.xxxx est en cours d’exécution.

      Si elle ne l’est pas, suivez les instructions pour Activer la surveillance d’Application Insights.

    • Vérifiez que la source d’état existe et qu’elle ressemble à Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      S’il n’y en a pas, cela signifie que l’application n’est pas en cours d’exécution ou n’est pas prise en charge. Pour vérifier que l’application est en cours d’exécution, essayez d’accéder manuellement à l’URL ou aux points de terminaison de l’application, ce qui exposera les informations d’exécution.

    • Vérifiez que IKeyExists a la valeur true. Si ce n’est pas le cas, ajoutez APPINSIGHTS_INSTRUMENTATIONKEY et APPLICATIONINSIGHTS_CONNECTION_STRING avec votre GUID de clé d'instrumentation aux paramètres de votre application.

    • Vérifiez qu’il n’y a pas d’entrées AppAlreadyInstrumented, AppContainsDiagnosticSourceAssembly et AppContainsAspNetTelemetryCorrelationAssembly.

      S’il y en a, supprimez les packages suivants de votre application : Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSource et Microsoft.AspNet.TelemetryCorrelation.

Le site web par défaut déployé avec les applications web ne prend pas en charge le monitoring automatique côté client

Quand vous créez une application web avec les runtime ASP.NET dans App Service, elle déploie une seule page HTML statique en tant que site web de démarrage. La page web statique charge aussi un composant web managé ASP.NET dans IIS. Cette page permet de tester la surveillance côté serveur sans code, mais ne prend pas en charge la surveillance automatique côté client.

Si vous souhaitez tester la supervision côté client et côté serveur sans code pour ASP.NET dans une application web App Service, nous vous recommandons de suivre les guides officiels pour la création d’une application web ASP.NET Framework. Utilisez ensuite les instructions de l’article actuel pour activer la surveillance.

APPINSIGHTS_JAVASCRIPT_ENABLED et urlCompression ne sont pas pris en charge

Si vous utilisez APPINSIGHTS_JAVASCRIPT_ENABLED=true là où du contenu est encodé, vous pouvez voir ce type d’erreur :

  • Erreur de réécriture d’URL 500.
  • Erreur du module de réécriture d’URL 500.53 avec un message indiquant que les règles de réécriture sortantes ne peuvent pas être appliquées quand le contenu de la réponse HTTP est encodé (« gzip »).

Une erreur se produit parce que le paramètre d’application APPINSIGHTS_JAVASCRIPT_ENABLED est défini sur true et que l’encodage de contenu est présent en même temps. Ce scénario n’est pas encore pris en charge. La solution de contournement consiste à supprimer APPINSIGHTS_JAVASCRIPT_ENABLED de vos paramètres d’application. Malheureusement, si l’instrumentation JavaScript côté client/navigateur est toujours requise, des références manuelles au SDK sont nécessaires pour vos pages web. Suivez les instructions pour activer l’instrumentation manuelle avec le kit de développement logiciel (SDK) JavaScript.

Pour avoir les toutes dernières informations sur l’extension/agent Application Insights, consultez les notes de publication.

Quelles sont les différences entre les métriques standard d’Application Insights et les métriques d’Azure App Service ?

Application Insights collecte des données de télémétrie pour les requêtes qui les ont transmises à l’application. Si l'échec se produit dans WebApps/WebServer et que la requête n'a pas atteint l'application utilisateur, Application Insights n'a aucune télémétrie à ce sujet.

La durée calculée pour serverresponsetime par Application Insights ne correspond pas nécessairement au temps de réponse du serveur observé par Web Apps. Ce comportement est dû au fait qu’Application Insights compte uniquement la durée nécessaire à la requête pour atteindre l’application utilisateur. Si la requête est bloquée ou mise en file d'attente dans WebServer, le temps d'attente est inclus dans les indicateurs de performance Web Apps mais pas dans les métriques Application Insights.

Tester la connectivité entre votre hôte d’application et le service d’ingestion

Les SDK et les agents Application Insights envoient de la télémétrie à ingérer en tant qu’appels REST à nos points de terminaison d’ingestion. Vous pouvez tester la connectivité de votre serveur web ou de votre machine hôte d’application vers les points de terminaison de service d’ingestion en utilisant des clients du Representational State Transfer (REST) bruts à partir de commandes PowerShell ou curl. Consultez Résoudre les problèmes de données de télémétrie d’application manquantes dans Azure Monitor Application Insights.

PHP et WordPress ne sont pas pris en charge

Les sites PHP et WordPress ne sont pas pris en charge. Il n’existe actuellement aucun SDK/agent officiellement pris en charge pour la surveillance côté serveur de ces charges de travail. Vous pouvez instrumenter manuellement des transactions côté client sur un site PHP ou WordPress en ajoutant le JavaScript côté client à vos pages web, utilisez le SDK JavaScript.

Le tableau suivant explique plus en détail la signification de ces valeurs d’erreur, leurs causes sous-jacentes et les corrections conseillées.

Valeur du problème Explication Fix
AppAlreadyInstrumented:true Cette valeur indique que l’extension a détecté que certains éléments du SDK sont déjà présents dans l’application et qu’ils seront abandonnés. Une référence à System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelation ou Microsoft.ApplicationInsights peut en être la cause. Supprimez la référence. Certaines de ces références sont ajoutées par défaut à partir de certains modèles Visual Studio. Les versions antérieures de Visual Studio peuvent ajouter des références à Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Cette valeur peut également être due à la présence des DLL précédentes, d’un déploiement précédent, dans le dossier de l’application. Supprimez ces DLL du dossier de l’application. Vérifiez le répertoire bin de votre application locale et le répertoire wwwroot sur la ressource App Service. (Pour vérifier le répertoire wwwroot de votre application web App Service, sélectionnez Outils avancés (Kudu)>Console de débogage>CMD>home\site\wwwroot).
AppContainsAspNetTelemetryCorrelationAssembly: true Cette valeur indique que l’extension a détecté la présence de références à Microsoft.AspNet.TelemetryCorrelation dans l’application et qu’elle sera mise en back-off. Supprimez la référence.
AppContainsDiagnosticSourceAssembly**:true Cette valeur indique que l’extension a détecté la présence de références à System.Diagnostics.DiagnosticSource dans l’application et qu’elle sera mise en back-off. Pour ASP.NET, supprimez la référence.
IKeyExists:false Cette valeur indique que la clé d’instrumentation n’est pas présente dans le paramètre d’application APPINSIGHTS_INSTRUMENTATIONKEY. Les causes possibles peuvent être que les valeurs ont été supprimées accidentellement ou que vous avez oublié de définir les valeurs dans le script d’automatisation. Vérifiez que le paramètre est défini dans les paramètres d’application App Service.

System.IO.FileNotFoundException après la mise à niveau 2.8.44

La version 2.8.44 de l’instrumentation automatique met à niveau le kit de développement logiciel (SDK) Application Insights vers la version 2.20.0. Le SDK Application Insights a une référence indirecte à System.Runtime.CompilerServices.Unsafe.dll via System.Diagnostics.DiagnosticSource.dll. Si l’application a une redirection de liaison pour System.Runtime.CompilerServices.Unsafe.dll et si cette bibliothèque n’est pas présente dans le dossier d’application, elle peut lever une exception System.IO.FileNotFoundException.

Pour résoudre ce problème, supprimez l’entrée de redirection de liaison pour System.Runtime.CompilerServices.Unsafe.dll dans le fichier web.config. Si l’application voulait utiliser System.Runtime.CompilerServices.Unsafe.dll, définissez la redirection de liaison comme présenté ici :

<dependentAssembly>
	<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
	<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>

Comme solution de contournement temporaire, vous pouvez définir le paramètre d’application ApplicationInsightsAgent_EXTENSION_VERSION sur une valeur de 2.8.37. Ce paramètre fait qu’App Service va utiliser l’ancienne extension Application Insights. Les résolutions temporaires ne doivent être utilisées que comme des solutions intermédiaires.

Notes de publication

Pour obtenir les mises à jour et correctifs de bogues les plus récents, consultez les notes de publication.

Étapes suivantes