Supervisión de aplicaciones para Azure App Service y Java
Para la supervisión de las aplicaciones web Java 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.
Nota:
Con las aplicaciones de imagen nativa Spring Boot, use el proyecto de Aplicación Java de imagen nativa openTelemetry / Application Insights de Azure Monitor en lugar de la solución del agente java de Application Insights que se describe a continuación.
Habilitación de Application Insights
La manera recomendada de habilitar la supervisión de aplicaciones Java 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. Puede aplicar configuraciones adicionales y, en función del escenario, agregar su propia telemetría personalizada si es necesario.
Instrumentación automática desde Azure Portal
Puede activar la supervisión de las aplicaciones Java que se ejecutan en Azure App Service con una sola selección, no se requiere ningún cambio de código. La integración agrega Application Insights Java 3.x y recopila automáticamente datos de telemetría.
Para obtener una lista completa de escenarios de instrumentación automática compatibles, consulte Entornos, lenguajes y proveedores de recursos admitidos.
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.
Este último paso es opcional. Después de especificar qué recurso usar, puede configurar el agente de Java. Si no configura el agente de Java, se aplican las configuraciones predeterminadas.
El conjunto de configuraciones completo está disponible, solo tiene que pegar un archivo JSON válido. Excluya la cadena de conexión y las configuraciones que se encuentran en versión preliminar: puede agregar los elementos que actualmente se encuentran en versión preliminar a medida que estén disponibles con carácter general.
Una vez que modifique las configuraciones mediante Azure Portal, la variable de entorno APPLICATIONINSIGHTS_CONFIGURATION_FILE se rellena automáticamente y aparece en el panel de configuración de App Service. Esta variable dispone del contenido JSON completo que ha pegado en el cuadro de texto de configuración de la aplicación Java en Azure Portal.
Habilitación de la supervisión del lado cliente
Para habilitar la supervisión del lado cliente para la aplicación Java, 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_Java | Marca para controlar si se incluye el agente de Java. | 0 o 1 (solo se aplican en Windows). |
Nota
Profiler y Snapshot Debugger no están disponibles para aplicaciones de Java
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. Consulte Instalación de Azure PowerShell para empezar. 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
Use la guía paso a paso de solución de problemas para aplicaciones basadas en Java que se ejecutan en Azure App Services.
Compruebe que la configuración de la aplicación
ApplicationInsightsAgent_EXTENSION_VERSION
está establecida en un valor de "~2" en Windows y "~3" en LinuxExamine el archivo de registro para ver que el agente se ha iniciado correctamente: vaya a `https://yoursitename.scm.azurewebsites.net/ y, en SSH, cambie al directorio raíz; el archivo de registro se encuentra en LogFiles/ApplicationInsights.
Después de habilitar la supervisión de aplicaciones para la aplicación de Java, puede validar que el agente funciona si examina las métricas activas, incluso antes de implementar una aplicación en App Service verá algunas solicitudes del entorno. Recuerde que el conjunto completo de telemetría solo estará disponible cuando la aplicación esté implementada y en ejecución.
Establezca la variable de entorno APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL en "debug" si no ve ningún error y no hay telemetría.
¿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.
Implementación manual de la versión más reciente de Java de Application Insights
La versión de Java de Application Insights se actualiza automáticamente como parte de las actualizaciones de App Services.
Si se produce un problema que se ha corregido en la versión más reciente de Application Insights Java, puede actualizarlo manualmente.
Para realizar esta actualización de forma manual, siga estos pasos:
Carga del archivo .jar del agente de Java para App Service
a. En primer lugar, siga las instrucciones que se indican aquí para obtener la versión más reciente de la CLI de Azure.
b. A continuación, siga las instrucciones que se indican aquí para obtener la versión más reciente del agente de Java de Application Insights.
c. A continuación, implemente el archivo .jar del agente de Java en App Service mediante el siguiente comando:
az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}
. Como alternativa, puede usar esta guía para implementar el agente mediante el complemento Maven.Deshabilite Application Insights a través de la pestaña Application Insights de Azure Portal.
Una vez cargado el archivo .jar del agente, vaya a las configuraciones de App Service. Si necesita usar el comando de inicio para Linux, incluya argumentos JVM:
El comando de inicio no acepta
JAVA_OPTS
para JavaSE niCATALINA_OPTS
para Tomcat.Si no usa el comando de inicio, cree una nueva variable de entorno,
JAVA_OPTS
para JavaSE oCATALINA_OPTS
para Tomcat, con el valor-javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar
.Reinicie la aplicación para aplicar los cambios.
Nota
Si ha establecido la variable de entorno JAVA_OPTS
para JavaSE o CATALINA_OPTS
para Tomcat, tendrá que deshabilitar Application Insights en el portal. Como alternativa, si prefiere habilitar Application Insights desde el portal, asegúrese de no establecer la variable JAVA_OPTS
para JavaSE o CATALINA_OPTS
para Tomcat en la configuración de App Service.
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