Supervision des applications pour Azure App Service et ASP.NET Core

L’activation de la supervision dans vos applications web ASP.NET Core s’exécutant sur 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 vous guide tout au long du processus d’activation de la supervision Application Insights d’Azure Monitor. Il fournit également des conseils préliminaires pour automatiser le processus pour les déploiements à grande échelle.

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.

Important

Seul le Support à long terme de .NET Core est pris en charge pour l’instrumentation automatique sur Windows.

Le modèle Réduire les déploiements autonomes n’est pas pris en charge. Optez plutôt pour uneinstrumentation manuelle via un code.

Notes

L’instrumentation automatique était précédemment appelée « attachement sans code » avant octobre 2021.

Pour commencer à configurer Application Insights avec votre ressource App Service, consultez la section suivante Activer la supervision.

Activer la supervision

  1. Sélectionnez Application Insights dans le volet gauche de votre service d’application. Ensuite, sélectionnez Activer.

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

  2. Créez une ressource ou sélectionnez une ressource Application Insights existante pour cette application.

    Notes

    Quand vous sélectionnez OK pour créer une ressource, vous êtes invité à Appliquer les paramètres de supervision. Si vous sélectionnez Continuer, votre nouvelle ressource Application Insights est liée à votre service d’application. Votre service d’application redémarre.

    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. Les options de collecte d’ASP.NET Core sont Recommandé ou Désactivé.

     Capture d’écran montrant la section d’instrumentation de votre application.

Activer la supervision côté client

La supervision côté client est activée par défaut pour les applications ASP.NET Core avec le niveau de collecte Recommandé, que le paramètre d’application APPINSIGHTS_JAVASCRIPT_ENABLED soit présent ou non.

Si vous voulez désactiver la supervision côté client :

  1. Sélectionnez Paramètres>Configuration.

  2. Sous Paramètres de l’application, créez un Nouveau paramètre d’application avec les informations suivantes :

    • Nom : APPINSIGHTS_JAVASCRIPT_ENABLED
    • Valeur : false
  3. Enregistrez les paramètres. Redémarrez votre application.

Automatiser la supervision

Pour permettre la collecte de données de télémétrie avec Application Insights, seuls les paramètres de l’application doivent être définis.

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 pour Windows ou ~3 pour Linux
XDT_MicrosoftApplicationInsights_Mode Dans le mode par défaut, seules les fonctionnalités essentielles sont activées afin de garantir des performances optimales. disabled ou recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Pour les applications ASP.NET Core uniquement. Active la technologie interop (interopérabilité) avec le kit SDK Application Insights. Charge l’extension côte à côte avec le kit SDK et l’utilise pour envoyer les données de télémétrie. (Désactive le kit SDK Application Insights.) 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

Pour mettre à niveau l’extension/agent de supervision, suivez les étapes décrites dans les sections suivantes.

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, et sont collectés au 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 Azure App Service.

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

Dépannage

Notes

Quand vous créez une application web avec les runtime ASP.NET Core 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 le modèle par défaut. Déployez une application avant de résoudre un problème.

Vous trouverez ci-dessous notre guide de résolution des problèmes pas à pas concernant la supervision basée sur l’agent/extension pour les applications ASP.NET Core s’exécutant 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 le lien au-dessus de la page de résultats.

    • Vérifiez que l’État de l’extension Application Insights est Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Si l’état n’est pas « running », suivez les instructions dans la section Activer la supervision 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 la valeur est False, ajoutez APPINSIGHTS_INSTRUMENTATIONKEY et APPLICATIONINSIGHTS_CONNECTION_STRING avec votre GUID iKey aux paramètres de votre application.

    • Si votre application fait référence à des packages Application Insights, l’activation de l’intégration d’App Service peuvent ne pas prendre effet et les données risquent de pas apparaître dans Application Insights. C’est le cas par exemple si vous avez déjà instrumenté ou tenté d’instrumenter votre application avec le kit SDK ASP.NET Core. Pour résoudre le problème, sur le portail, activez Interopérabilité avec le kit SDK Application Insights. Les données commenceront alors à s’afficher dans Application Insights.

      Important

      Cette fonctionnalité n’existe qu’en version préliminaire.

       Capture d’écran montrant le paramètre d’interopérabilité activé.

      Les données sont alors envoyées avec une approche sans code, même si le SDK Application Insights a été initialement utilisé ou a fait l’objet d’une tentative d’utilisation.

      Important

      Si l’application a utilisé le SDK Application Insights pour envoyer des données de télémétrie, la télémétrie est désactivée. En d’autres termes, la télémétrie personnalisée (par exemple, les méthodes Track*()) et les paramètres personnalisés (comme l’échantillonnage) sont désactivés.

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 runtimes 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. Ce comportement permet de tester la supervision côté serveur sans code, mais ne prend pas en charge la supervision automatique côté client.

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

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. Pour 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 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 à Microsoft.ApplicationInsights.AspNetCore 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. Versions plus ancienne de la référence Visual Studio Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Cette valeur peut aussi être due à la présence de DLL Microsoft.ApplicationsInsights dans le dossier de l’application en lien avec un déploiement précédent. Supprimez ces DLL du dossier de l’application. Vérifiez le répertoire bin de votre application locale et le répertoire wwwroot sur l’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).
IKeyExists:false Cette valeur indique que la clé d’instrumentation n’est pas présente dans le paramètre d’application APPINSIGHTS_INSTRUMENTATIONKEY. Cela peut s’expliquer par la suppression accidentelle des valeurs ou par l’oubli de définition des valeurs dans le script d’automatisation. Vérifiez que le paramètre est défini dans les paramètres d’application App Service.

Notes de publication

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

Étapes suivantes