Surveillance des applications pour Azure App Service et Node.js
La surveillance de vos applications Web Node.js qui s’exécutent sur Azure App Services ne nécessite aucune modification du code. Cet article explique pas à pas comment activer la supervision Azure Monitor Application Insights et vous donne des conseils préliminaires sur l’automatisation du processus pour les déploiements à grande échelle.
Activer Application Insights
Le moyen le plus simple d’activer le monitoring pour les applications Node.js s’exécutant sur Azure App Services consiste à utiliser le portail Azure. L’activation du monitoring des applications dans le portail Azure instrumente automatiquement votre application avec Application Insights et ne nécessite aucune modification du code.
Remarque
Vous pouvez configurer l’agent attaché automatiquement à l’aide de la variable d’environnement APPLICATIONINSIGHTS_CONFIGURATION_CONTENT dans le volet de la variable App Service Environment. Pour plus d’informations sur les options de configuration qui peuvent être transmises via cette variable d’environnement, consultez Configuration node.js.
Remarque
Si à la fois l’instrumentation automatique et l’instrumentation manuelle basée sur un kit SDK sont détectées, seuls les paramètres de l’instrumentation manuelle sont appliqués. Cela évite que des données en double soient envoyées. Pour plus d’informations, consultez la section sur la résolution des problèmes de cet article.
Instrumentation automatique à travers le Portail Azure
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.
Vous pouvez activer le monitoring de vos applications Node.js exécutées dans Azure App Service tout simplement en un seul clic, sans avoir à modifier le code. Application Insights pour Node.js est intégré à Azure App Service sur Linux (conteneurs basés sur du code et conteneurs personnalisés) et à App Service sur Windows (applications basées sur du code). L’intégration est en préversion publique. L’intégration ajoute le Kit de développement logiciel (SDK) Node.js, qui est en disponibilité générale.
Sélectionnez Application Insights dans le panneau de configuration Azure de votre service d’application, puis sélectionnez Activer.
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é à Appliquer les paramètres de supervision. Si vous sélectionnez Continuer, votre nouvelle ressource Application Insights est liée à votre service d’application et déclenche un redémarrage de votre service d’application.
Une fois la ressource à utiliser spécifiée, vous êtes prêt à vous lancer.
Configuration
L’agent Node.js peut être configuré à l’aide de JSON. Définissez la variable d’environnement APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
sur la chaîne JSON ou définissez la variable d’environnement APPLICATIONINSIGHTS_CONFIGURATION_FILE
sur le chemin d’accès du fichier contenant le code JSON.
"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
L’ensemble complet de configurations étant disponible, vous n’avez qu’à utiliser un fichier json valide.
Activer la supervision côté client
Pour activer la supervision côté client pour votre application Node.js, vous devez ajouter manuellement le SDK JavaScript côté client à votre application.
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 suivants de l’application :
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 sous Windows ou ~3 sous Linux. |
XDT_MicrosoftApplicationInsights_NodeJS | Indicateur pour contrôler si l’agent Node.js est inclus. | 0 ou 1 (applicable uniquement sous Windows). |
Notes
Le profileur et le débogueur d’instantané ne sont pas disponibles pour les applications Node.js
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
Dépannage
Vous trouverez ci-après les étapes à suivre pas à pas pour résoudre les problèmes rencontrés avec la supervision basée sur un agent/une extension pour les applications Node.js exécutées sur Azure App Services.
Vérifiez que le paramètre d’application
ApplicationInsightsAgent_EXTENSION_VERSION
est défini à une valeur « ~2 ».Accédez à
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Vérifiez que l’extension est en cours d’exécution (
Application Insights Extension Status
affichePre-Installed Site Extension, version 2.8.x.xxxx, is running.
)Si elle ne l’est pas, suivez les instructions pour Activer la surveillance d’Application Insights.
Accédez à D:\local\Temp\status.json et ouvrez status.json.
Vérifiez que la valeur
SDKPresent
est définie sur false, la valeurAgentInitializedSuccessfully
sur true et que la valeurIKey
dispose d’une iKey valide.Voici un exemple du fichier JSON :
"AppType":"node.js", "MachineName":"c89d3a6d0357", "PID":"47", "AgentInitializedSuccessfully":true, "SDKPresent":false, "IKey":"00000000-0000-0000-0000-000000000000", "SdkVersion":"1.8.10"
Si la valeur
SDKPresent
est true, cela indique que l’extension a détecté que certains éléments du SDK sont déjà présents dans l’application, et va s’interrompre.
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 télémétrie d’application manquante dans Azure Monitor Application Insights.
Notes de publication
Pour obtenir les mises à jour et correctifs de bogues les plus récents, consultez les notes de publication.
Étapes suivantes
- 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.
- Utilisation d’Application Insights pour les pages Web et les applications JavaScript pour obtenir les données de télémétrie du client à partir des navigateurs qui consultent une page web.
- Vue d’ensemble de la disponibilité