Uso del agente In-Process de Java de Application Insights en Azure Spring Apps

Nota:

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

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 del agente java de Application Insights.

Este artículo se aplica a: ✔️ Consumo y dedicado estándar (versión preliminar) ✔️ Básico/Estándar ✔️ Enterprise

En este artículo se explica cómo supervisar las aplicaciones mediante el agente Java de Application Insights en Azure Spring Apps.

Con esta característica, puede:

  • Buscar datos de seguimiento con distintos filtros.
  • Vea un mapa de dependencias de aplicaciones de Spring.
  • Comprobar el rendimiento de la solicitud.
  • Supervisar las métricas en directo en tiempo real.
  • Comprobar los errores de solicitud.
  • Comprobar las métricas de aplicación.
  • Compruebe los registros de la aplicaciones.

Application Insights puede proporcionar muchas perspectivas observables, entre las que se incluyen las siguientes:

  • Mapa de aplicación
  • Rendimiento
  • Errores
  • Métricas
  • Live Metrics
  • Disponibilidad
  • Registros

Uso de la característica Application Insights

Cuando está habilitada la característica Application Insights, puede hacer lo siguiente:

  • En el panel de navegación, seleccione Application Insights para ver la página Información general de Application Insights. En la página Información general se muestra un resumen de todas las aplicaciones en ejecución.

  • Seleccione Mapa de aplicación para ver el estado de las llamadas entre las aplicaciones.

    Captura de pantalla de Azure Portal que muestra la página Mapa de aplicaciones de Application Insights.

  • Seleccione el vínculo entre el servicio para los clientes y petclinic para ver más detalles, como una consulta de SQL.

  • Seleccione un punto de conexión para ver todas las aplicaciones que realizan solicitudes al punto de conexión.

  • En el panel de navegación, seleccione Rendimiento para ver los datos de rendimiento de las operaciones de todas las aplicaciones, así como las dependencias y los roles.

    Captura de pantalla de Azure Portal que muestra la página Rendimiento de Application Insights.

  • En el panel de navegación, seleccione Errores para ver los errores o excepciones inesperados de las aplicaciones.

    Captura de pantalla de Azure Portal que muestra la página Errores de Application Insights.

  • En el panel de navegación, seleccione Métricas y elija el espacio de nombres para ver las métricas de Spring Boot y las personalizadas, si las hay.

    Captura de pantalla de Azure Portal que muestra la página Métricas de Application Insights.

  • En el panel de navegación, seleccione Live Metrics para ver las métricas en tiempo real de las distintas dimensiones.

    Captura de pantalla de Azure Portal que muestra la página Métricas dinámicas de Application Insights.

  • En el panel de navegación, seleccione Disponibilidad para supervisar la disponibilidad y la capacidad de respuesta de las aplicaciones web mediante la creación de Pruebas de disponibilidad en Application Insights.

    Captura de pantalla de Azure Portal que muestra la página Disponibilidad de Application Insights.

  • En el panel de navegación, seleccione Registros para ver todos los registros de las aplicaciones o uno de ellos si filtra por cloud_RoleName.

    Captura de pantalla de Azure Portal que muestra la página Registros de Application Insights.

Administración de Application Insights mediante Azure Portal

Habilite el agente In-Process de Java mediante el procedimiento siguiente.

  1. Vaya a la página servicio | Información general de la instancia del servicio y seleccione Application Insights en la sección Supervisión.

  2. Seleccione Habilitar Application Insights para habilitar Application Insights en Azure Spring Apps.

  3. Seleccione una instancia existente de Application Insights o cree una.

  4. Cuando Application Insights está habilitada, puede configurar una frecuencia de muestreo opcional (valor predeterminado del 10,0 %).

    Captura de pantalla de Azure Portal que muestra la página Application Insights para Azure Spring Apps con la casilla Habilitar Application Insights resaltada.

  5. Seleccione Guardar para guardar el cambio.

Nota:

No use la misma instancia de Application Insights en otras instancias de Azure Spring Apps, o verá datos mezclados.

Puede usar el portal para comprobar o actualizar la configuración actual en Application Insights.

Habilitación de Application Insights mediante Azure Portal

  1. Haga clic en Application Insights.

  2. Para habilitar Application Insights, seleccione Editar enlace o el hipervínculo Sin enlazar.

    Captura de pantalla de Azure Portal de Azure que muestra la instancia de Azure Spring Apps con la página Application Insights y la opción

  3. Edite Application Insights o Frecuencia de muestreo y, luego, seleccione Guardar.

Deshabilitación de Application Insights

  1. Haga clic en Application Insights.

  2. Seleccione Unbind binding (Desenlazar enlace) para deshabilitar Application Insights.

    Captura de pantalla de Azure Portal que muestra la instancia de Azure Spring Apps con la página Application Insights y la opción Desenlace de enlace.

Cambio de la configuración de Application Insights

Seleccione el nombre en la columna Application Insights para abrir la sección Application Insights.

Captura de pantalla de Azure Portal que muestra la instancia de Azure Spring Apps con la página Application Insights.

Edición de enlaces de paquete de compilación de Application Insights en el servicio de compilación

Para comprobar y actualizar la configuración actual de los enlaces de paquete de compilación de Application Insights en el servicio de compilación, siga estos pasos:

  1. Seleccione Build Service (Servicio de compilación).
  2. Elija el generador.
  3. Seleccione Editar en la columna Enlaces.

La configuración de Application Insights se encuentra en el elemento ApplicationInsights que aparece en la columna Tipo de enlace.

  1. Seleccione el hipervínculo Enlazado o Editar enlace en el botón de puntos suspensivos para abrir y editar los enlaces de paquete de compilación de Application Insights.

    Captura de pantalla de Azure Portal que muestra el panel Editar enlaces para el generador predeterminado.

  2. Edite la configuración de enlace y, luego, seleccione Guardar.

    Captura de pantalla de Azure Portal que muestra el panel Editar enlace.

Administración de Application Insights mediante la CLI de Azure

Puede administrar Application Insights mediante comandos de la CLI de Azure. En los siguientes comandos, asegúrese de reemplazar el texto del <marcador de posición> por los valores descritos. El marcador de posición <service-instance-name> hace referencia al nombre de la instancia de Azure Spring Apps.

Habilitación de Application Insights

Para configurar Application Insights al crear una instancia de Azure Spring Apps, use el siguiente comando. Para el argumento app-insights, puede especificar un nombre de Application Insights o un identificador de recurso.

az spring create \
    --resource-group <resource-group-name> \
    --name "service-instance-name" \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate>
az spring create \
    --resource-group <resource-group-name> \
    --name "service-instance-name" \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate> \
    --sku Enterprise

También puede usar una cadena de conexión (preferida) o una clave de instrumentación de Application Insights, como se muestra en el ejemplo siguiente.

az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate>
az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate> \
    --sku Enterprise

Deshabilitación de Application Insights

Para deshabilitar Application Insights al crear una instancia de Azure Spring Apps, use el siguiente comando:

az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable-app-insights
az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable-app-insights \
    --sku Enterprise

Comprobación de la configuración de Application Insights

Para comprobar la configuración de Application Insights de una instancia de Azure Spring Apps existente, use el siguiente comando:

az spring app-insights show \
    --resource-group <resource-group-name> \
    --name <service-instance-name>

Actualización de Application Insights

Para actualizar Application Insights para que use una cadena de conexión (preferida) o una clave de instrumentación, utilice el siguiente comando:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate>

Para actualizar Application Insights para que use el nombre o el identificador del recurso, use el siguiente comando:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate>

Deshabilitación de Application Insights con el comando de actualización

Para deshabilitar Application Insights en una instancia de Azure Spring Apps, use el siguiente comando:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable

Administración de enlaces de paquete de compilación de Application Insights

Esta sección solo se aplica al plan Enterprise y proporciona instrucciones que complementan la sección anterior.

El plan Enterprise de Azure Spring Apps usa enlaces de paquete de compilación para integrar Azure Application Insights con el tipo ApplicationInsights. Para más información, consulte Cómo configurar la integración de APM y los certificados de CA.

Para crear un enlace de paquete de compilación de Application Insights, use el siguiente comando:

az spring build-service builder buildpack-binding create \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name> \
    --type ApplicationInsights \
    --properties sampling-percentage=<your-sampling-percentage> \
                 connection-string=<your-connection-string>

Para enumerar todos los enlaces de paquete de compilación y encontrar los enlaces de Application Insights de tipo ApplicationInsights, use el siguiente comando:

az spring build-service builder buildpack-binding list \
    --resource-group <your-resource-group-name> \
    --service <your-service-resource-name> \
    --builder-name <your-builder-name>

Para reemplazar un enlace de paquete de compilación de Application Insights, use el siguiente comando:

az spring build-service builder buildpack-binding set \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name> \
    --type ApplicationInsights \
    --properties sampling-percentage=<your-sampling-percentage> \
                 connection-string=<your-connection-string>

Para obtener un enlace de paquete de compilación de Application Insights, use el siguiente comando:

az spring build-service builder buildpack-binding show \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name>

Para eliminar un enlace de paquete de compilación de Application Insights, use el siguiente comando:

az spring build-service builder buildpack-binding delete \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name>

Automation

En las secciones siguientes se describe cómo automatizar la implementación mediante Bicep, plantillas de Azure Resource Manager (plantillas de ARM) o Terraform.

Bicep

Para realizar la implementación mediante un archivo de Bicep, copie el contenido siguiente en un archivo main.bicep. Para obtener más información, consulte Microsoft.AppPlatform Spring/monitoringSettings.

param springName string
param location string = resourceGroup().location

resource spring 'Microsoft.AppPlatform/Spring@2020-07-01' = {
  name: springName
  location: location
  properties: {}
}

resource monitorSetting 'Microsoft.AppPlatform/Spring/monitoringSettings@2020-11-01-preview' = {
  parent: spring
  name: 'default'
  properties: {
    appInsightsInstrumentationKey: '00000000-0000-0000-0000-000000000000'
    appInsightsSamplingRate: 88
  }
}

Plantillas de ARM

Para realizar la implementación con una plantilla de ARM, copie el siguiente contenido en un archivo azuredeploy.json. Para obtener más información, consulte Microsoft.AppPlatform Spring/monitoringSettings.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "springName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.AppPlatform/Spring",
      "apiVersion": "2020-07-01",
      "name": "[parameters('springName')]",
      "location": "[parameters('location')]",
      "properties": {}
    },
    {
      "type": "Microsoft.AppPlatform/Spring/monitoringSettings",
      "apiVersion": "2020-11-01-preview",
      "name": "[format('{0}/{1}', parameters('springName'), 'default')]",
      "properties": {
        "appInsightsInstrumentationKey": "00000000-0000-0000-0000-000000000000",
        "appInsightsSamplingRate": 88
      },
      "dependsOn": [
        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springName'))]"
      ]
    }
  ]
}

Terraform

Para una implementación de Terraform, use la plantilla siguiente. Para más información, consulte azurerm_spring_cloud_service.

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_application_insights" "example" {
  name                = "tf-test-appinsights"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  application_type    = "web"
}

resource "azurerm_spring_cloud_service" "example" {
  name                = "example-springcloud"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  sku_name            = "S0"

  config_server_git_setting {
    uri          = "https://github.com/Azure-Samples/piggymetrics"
    label        = "config"
    search_paths = ["dir1", "dir2"]
  }

  trace {
    connection_string = azurerm_application_insights.example.connection_string
    sample_rate       = 10.0
  }

  tags = {
    Env = "staging"
  }
}

La automatización en el plan Enterprise está pendiente de soporte técnico. La documentación se agregará en cuanto esté disponible.

Actualización del agente de Java

El agente de Java se actualiza periódicamente con el JDK, lo que puede afectar a los escenarios siguientes.

Nota:

La versión de JDK se actualiza trimestralmente cada año.

  • Las aplicaciones existentes que usan el agente de Java antes de la actualización no se ven afectadas.
  • Las aplicaciones creadas después de la actualización usan la nueva versión del agente de Java.
  • Las aplicaciones existentes que previamente no usaban el agente de Java necesitan un reinicio o una nueva implementación para usar la nueva versión del agente de Java.

El agente de Java se actualiza cuando se actualiza el paquete de compilación.

Carga activa de la configuración del agente de Java

Azure Spring Apps tiene un mecanismo de carga frecuente para ajustar la configuración del agente sin reiniciar las aplicaciones.

Nota:

El mecanismo de carga activa tiene un retraso en minutos.

  • Si el agente de Java ya está habilitado, los cambios realizados en la instancia de Application Insights o el valor SamplingRate no necesitan el reinicio de la aplicación.

  • Si habilita el agente de Java, debe reiniciar las aplicaciones.

  • Al deshabilitar el agente de Java, las aplicaciones dejan de enviar todos los datos de supervisión después de un retraso en minutos. Puede reiniciar las aplicaciones para quitar el agente del entorno en tiempo de ejecución de Java.

Coincidencia de conceptos entre Azure Spring Apps y Application Insights

Azure Spring Apps Application Insights
App * Mapa de aplicación/Rol
* Live Metrics/Rol
* Errores/Roles/Rol en la nube
* Rendimiento/Roles/Rol en la nube
App Instance * Mapa de aplicación/Instancia de rol
* Live Metrics/Nombre del servicio
* Errores/Roles/Instancia en la nube
* Rendimiento/Roles/Instancia en la nube

El nombre App Instance de Azure Spring Apps se cambia o se genera en los escenarios siguientes:

  • Creación de una aplicación.
  • Implementación de un archivo JAR o un código fuente en una aplicación existente.
  • Inicio de una implementación azul-verde.
  • Reinicio de la aplicación.
  • Detención de la implementación de una aplicación y posterior reinicio.

Cuando los datos se almacenan en Application Insights, este contiene el historial de las instancias de aplicación de Azure Spring Apps creadas o implementadas desde que se habilitó el agente de Java. Por ejemplo, en el portal de Application Insights, puede ver los datos de aplicación creados ayer, pero que se eliminaron luego durante un intervalo de tiempo específico, por ejemplo, las últimas 24 horas. En los escenarios siguientes, se muestra el funcionamiento:

  • Ha creado una aplicación alrededor de las 8:00 de hoy desde Azure Spring Apps con el agente de Java habilitado y, después, ha implementado un archivo JAR en esta aplicación alrededor de las 8:10 de hoy. Después de algunas pruebas, cambia el código e implementa un nuevo archivo JAR en esta aplicación a las 8:30 de hoy. A continuación, se toma un respiro y, cuando vuelve a ello alrededor de las 11:00, comprueba algunos datos de Application Insights. Se ve lo siguiente:
    • Tres instancias de Application Map con intervalos de tiempo en las últimas 24 horas, así como información de errores, rendimiento y métricas.
    • Una instancia de Application Map con un intervalo de tiempo en la última hora, así como información de errores, rendimiento y métricas.
    • Una instancia de Live Metrics.
  • Ha creado una aplicación alrededor de las 8:00 de hoy desde Azure Spring Apps con el agente de Java habilitado y, después, ha implementado un archivo JAR en esta aplicación alrededor de las 8:10 de hoy. Alrededor de las 8:30 de hoy, probará una implementación azul-verde con otro archivo JAR. Actualmente, tiene dos implementaciones para esta aplicación. Después de un descanso, alrededor de las 11:00 de hoy, quiere comprobar algunos datos de Application Insights. Se ve lo siguiente:
    • Tres instancias de Application Map con intervalos de tiempo en las últimas 24 horas, así como información de errores, rendimiento y métricas.
    • Dos instancias de Application Map con intervalos de tiempo en la última hora, así como información de errores, rendimiento y métricas.
    • Dos instancias de Live Metrics.

Pasos siguientes