Supervisión de aplicaciones para Azure App Service y Node.js
Para la supervisión de las aplicaciones web Node.js que se ejecutan en Azure App Services no es necesario modificar el código. En este artículo, se describe como habilitar la supervisión de Application Insights para Azure Monitor y se proporcionan instrucciones preliminares a fin de automatizar el proceso para implementaciones a gran escala.
Habilitación de Application Insights
La manera más fácil de habilitar la supervisión de aplicaciones Node.js que se ejecutan en Azure App Services es mediante Azure Portal. Al activar la supervisión de aplicaciones en Azure Portal, la aplicación se instrumentará automáticamente con Application Insights y no requerirá ningún cambio de código.
Nota:
Puede configurar el agente asociado automáticamente mediante la variable de entorno APPLICATIONINSIGHTS_CONFIGURATION_CONTENT en la hoja variable de App Service Environment. Para obtener más información sobre las opciones de configuración que se pueden pasar a través de esta variable de entorno, consulte Configuración de Node.js.
Nota:
Si se detectan tanto la instrumentación automática como la instrumentación manual basada en SDK, solo se respeta la configuración de la instrumentación manual. Esto es para evitar que se envíen datos duplicados. Para obtener más información, consulte la sección Solución de problemas en este artículo.
Instrumentación automática desde Azure Portal
Para obtener una lista completa de escenarios de instrumentación automática compatibles, consulte Entornos, lenguajes y proveedores de recursos admitidos.
Puede activar la supervisión de las aplicaciones Node.js que se ejecutan en Azure App Service con un solo clic, no se requiere ningún cambio de código. Application Insights para Node.js se integra con Azure App Service en Linux, en los contenedores basados en código y los personalizados, y con App Service en Windows para las aplicaciones basadas en código. La integración se encuentra en versión preliminar pública. La integración agrega el SDK de Node.js, que se encuentra en la fase de disponibilidad general.
Seleccione Application Insights en el panel de control de Azure del servicio de aplicaciones y, después, seleccione Habilitar.
Cree un nuevo recurso o seleccione un recurso de Application Insights existente para esta aplicación.
Nota
Al seleccionar Aceptar para crear el recurso, se le pedirá Aplicar la configuración de supervisión. Con la selección de Continuar se vinculará el nuevo recurso de Application Insights a su servicio de aplicaciones. Al hacerlo, también se desencadenará un reinicio del servicio de aplicaciones.
Una vez que haya especificado qué recurso usar ya estará listo para continuar.
Configuración
El agente Node.js se puede configurar mediante JSON. Establezca la variable de entorno APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
en la cadena JSON o establezca la variable de entorno APPLICATIONINSIGHTS_CONFIGURATION_FILE
en la ruta de acceso del archivo que contiene el JSON.
"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
El conjunto de configuraciones completo está disponible, solo tiene que usar un archivo JSON válido.
Habilitación de la supervisión del lado cliente
Para habilitar la supervisión del lado cliente para la aplicación de Node.js, debe agregar manualmente el SDK de JavaScript del lado cliente a la aplicación.
Automatización de la supervisión
Para habilitar la recopilación de datos de telemetría con Application Insights, solo es necesario configurar los valores siguientes de la aplicación:
Definiciones de los valores de configuración de la aplicación
Nombre del valor de configuración de la aplicación | Definición | Value |
---|---|---|
ApplicationInsightsAgent_EXTENSION_VERSION | Extensión principal; controla la supervisión en el entorno en tiempo de ejecución. | ~2 en Windows o ~3 en Linux. |
XDT_MicrosoftApplicationInsights_NodeJS | Marca para controlar si el agente de Node.js está incluido. | 0 o 1 (solo se aplican en Windows). |
Nota
Profiler y Snapshot Debugger no están disponibles para aplicaciones de Node.js.
Configuración de aplicaciones de App Service con Azure Resource Manager
La configuración de las aplicaciones de Azure App Service se puede administrar y definir con plantillas de Azure Resource Manager. Use este método para implementar nuevos recursos de App Service con la automatización de Resource Manager o para modificar la configuración de los recursos actuales.
La estructura básica de JSON de la configuración de la aplicación para un recurso de 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"
}
}
]
Para ver un ejemplo de una plantilla de Resource Manager con la configuración de la aplicación establecida para Application Insights, le puede resultar útil esta plantilla. En concreto, vea la sección que comienza en la línea 238.
Automatización de la creación de un recurso de Application Insights y vínculo al recurso de App Service recién creado
Para crear una plantilla de Resource Manager con la configuración predeterminada de Application Insights, comienza el proceso como si fueses a crear una aplicación web con Application Insights habilitado.
Cree un nuevo recurso de App Service con la información de la aplicación web deseada. Habilite Application Insights en la pestaña Supervisión.
Seleccione Revisar + crear. Seleccione Descargar una plantilla para la automatización.
Esta opción genera la plantilla de Azure Resource Manager más reciente con toda la configuración necesaria establecida.
En el ejemplo siguiente, reemplace todas las instancias de AppMonitoredSite
por el nombre del sitio:
Nota:
Si usas Windows, establece ApplicationInsightsAgent_EXTENSION_VERSION
en ~2
. Si usas Linux, establece ApplicationInsightsAgent_EXTENSION_VERSION
en ~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"
}
Habilitación mediante Powershell
Para habilitar la supervisión de la aplicación a través de PowerShell, solo debe cambiar la configuración de la aplicación subyacente. En el ejemplo siguiente, se habilita la supervisión de aplicaciones para un sitio web denominado AppMonitoredSite
en el grupo de recursos AppMonitoredRG
. Configura los datos que se enviarán a la clave de instrumentación 012345678-abcd-ef01-2345-6789abcd
.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Nota:
Si usas Windows, establece ApplicationInsightsAgent_EXTENSION_VERSION en ~2
. Si usas Linux, establece ApplicationInsightsAgent_EXTENSION_VERSION en ~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
Solución de problemas
A continuación, se muestra nuestra guía paso a paso de solución de problemas para la supervisión basada en extensiones o agentes para aplicaciones basadas en Node.js que se ejecutan en Azure App Services.
Compruebe que la configuración de la aplicación
ApplicationInsightsAgent_EXTENSION_VERSION
se establece en un valor de "~2".Vaya a
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Confirme que el
Application Insights Extension Status
esPre-Installed Site Extension, version 2.8.x.xxxx, is running.
.Si no se está ejecutando, siga las instrucciones para habilitar la supervisión de Application Insights.
Vaya a D:\local\Temp\status.json y abra status.json.
Confirme que
SDKPresent
está establecido en false,AgentInitializedSuccessfully
en true y queIKey
tiene un iKey válido.A continuación se muestra un ejemplo del archivo JSON:
"AppType":"node.js", "MachineName":"c89d3a6d0357", "PID":"47", "AgentInitializedSuccessfully":true, "SDKPresent":false, "IKey":"00000000-0000-0000-0000-000000000000", "SdkVersion":"1.8.10"
Si
SDKPresent
es true, indica que la extensión ha detectado que algún aspecto del SDK ya está presente en la aplicación y se interrumpirá.
¿Cuál es la diferencia entre las métricas estándar de Application Insights y las métricas de Azure App Service?
Application Insights recopila datos de telemetría de las solicitudes que se enviaron a la aplicación. Si el error se produjo en Web Apps o en el servidor web, y la solicitud no llegó a la aplicación de usuario, Application Insights no tendrá ningún dato de telemetría sobre él.
La duración de serverresponsetime
calculada por Application Insights no coincidirá necesariamente con el tiempo de respuesta del servidor observado por Web Apps. Esto se debe a que Application Insights solo cuenta la duración cuando la solicitud llega realmente a la aplicación de usuario. Si la solicitud se bloquea o se pone en cola en el servidor web, ese tiempo de espera se incluirá en las métricas de Web Apps, pero no en las métricas de Application Insights.
Prueba de la conectividad entre el host de la aplicación y el servicio de ingesta
Los SDK y agentes de Application Insights envían telemetría para ingerirse como llamadas REST a nuestros puntos de conexión de ingesta. Puede probar la conectividad desde el servidor web o la máquina host de la aplicación a los puntos de conexión del servicio de ingesta mediante clientes REST sin procesar con comandos de PowerShell o curl. Consulte Solución de problemas de telemetría de aplicaciones que faltan en Azure Monitor Application Insights.
Notas de la versión
Para obtener las actualizaciones y correcciones de errores más recientes, consulte las notas de la versión.
Pasos siguientes
- Supervisión de Azure Functions con Application Insights.
- Microsoft Azure Diagnostics para enviar este tipo de información a Application Insights.
- Supervise las métricas del estado del servicio para asegurarse de que el servicio está disponible y responde adecuadamente.
- Reciba notificaciones de alerta cada vez que se produzcan eventos de operaciones o las métricas traspasen un umbral.
- Use aplicaciones y páginas web de Application Insights para JavaScript para obtener la telemetría del cliente de los exploradores que visitan una página web.
- Información general de disponibilidad
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios