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
Sélectionnez Application Insights dans le volet gauche de votre service d’application. Ensuite, sélectionnez Activer.
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.
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é.
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 :
Sélectionnez Paramètres>Configuration.
Sous Paramètres de l’application, créez un Nouveau paramètre d’application avec les informations suivantes :
- Nom :
APPINSIGHTS_JAVASCRIPT_ENABLED
- Valeur :
false
- Nom :
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.
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.
Automatisez la création d’une ressource Application Insights et créez un lien vers votre nouvelle ressource App Service
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é.
Créez une ressource App Service avec les informations d’application web souhaitées. Activez Application Insights sous l’onglet Supervision.
Sélectionnez Revoir + créer. Sélectionnez ensuite Télécharger un modèle pour automation.
Cette option génère le dernier modèle Resource Manager configuré avec tous les paramètres nécessaires.
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
.
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 :
- 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. - Supprimez manuellement l’extension de site privée nommée extension Application Insights pour Azure App Service.
- Définissez les paramètres de l’application pour activer l’extension de site préinstallée
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.
Vérifiez que le paramètre d’application
ApplicationInsightsAgent_EXTENSION_VERSION
défini a la valeur~2
.Accédez à
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.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 estFalse
, ajoutezAPPINSIGHTS_INSTRUMENTATIONKEY
etAPPLICATIONINSIGHTS_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.
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
- Exécuter le profileur dans votre application dynamique.
- Surveiller Azure Functions avec Application Insights.
- Autorisation de l’envoi de diagnostics Azure vers Application Insights.
- Analyse des mesures d’intégrité du service pour vous assurer que votre service est disponible et réactif.
- Réceptions de notifications d’alerte lorsque des événements opérationnels se produisent ou que des mesures dépassent un seuil.
- Utiliser Application Insights pour les pages web et les applications JavaScript pour obtenir les données de télémétrie client à partir des navigateurs qui consultent une page web.
- Disponibilité