Compartir vía


Inicio rápido: Supervisión de aplicaciones de un extremo a otro

Nota:

Los planes Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retirada de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan de Consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte Migrar el consumo estándar y el plan dedicado de Azure Spring Apps a Azure Container Apps.

Este artículo se aplica a:❌ Básico o Estándar ✔️ Enterprise

En este inicio rápido se muestra cómo supervisar las aplicaciones que ejecutan el plan Enterprise de Azure Spring Apps mediante Application Insights y Log Analytics.

Nota

Puede supervisar las cargas de trabajo de Spring de un extremo a otro con la herramienta y plataforma que prefiera, incluidos App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic o Splunk. Para más información, vea Trabajo con otras herramientas de supervisión más adelante en este artículo.

Requisitos previos

Actualización de aplicaciones

Debe proporcionar manualmente la cadena de conexión de Application Insights a las aplicaciones Order Service (ASP.NET Core) y Cart Service (Python). En las instrucciones siguientes se describe cómo proporcionar esta cadena de conexión y aumentar la frecuencia de muestreo a Application Insights.

Nota

Actualmente, solo los paquetes de compilación para aplicaciones de Java y NodeJS admiten la instrumentación de Application Insights.

  1. Cree variables para contener los nombres del recurso mediante los siguientes comandos. Asegúrese de reemplazar los marcadores de posición por sus propios valores. El nombre de la instancia de servicio de Azure Spring Apps debe tener entre 4 y 32 caracteres y solo puede contener letras minúsculas, números y guiones. El primer carácter del nombre del servicio debe ser una letra y el último debe ser una letra o un número.

    export RESOURCE_GROUP="<resource-group-name>"
    export APP_INSIGHTS_NAME="<app-insights-name>"
    export KEY_VAULT_NAME="<key-vault-name>"
    export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME="<Azure-Spring-Apps-service-instance-name>"
    

    Nota:

    De manera predeterminada, el nombre APP_INSIGHTS_NAME es el mismo que AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Use los comandos siguientes para recuperar la cadena de conexión de Application Insights y establecerla en Key Vault:

    export CONNECTION_STRING=$(az monitor app-insights component show \
        --resource-group ${RESOURCE_GROUP} \
        --app ${APP_INSIGHTS_NAME} \
        --query "connectionString" \
        --output tsv)
    
    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "ApplicationInsights--ConnectionString" \
        --value ${CONNECTION_STRING}
    
  3. Use el comando siguiente para actualizar la frecuencia de muestreo del enlace de Application Insights para aumentar la cantidad de datos disponibles:

    az spring build-service builder buildpack-binding set \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --builder-name default \
        --name default \
        --type ApplicationInsights \
        --properties sampling-rate=100 connection_string=${CONNECTION_STRING}
    
  4. Use los comandos siguientes a fin de reiniciar las aplicaciones para volver a cargar la configuración:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name cart-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name order-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name catalog-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name frontend
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name payment-service
    
  5. Si ha configurado el inicio de sesión único, use los siguientes comandos para reiniciar las aplicaciones y volver a cargar la configuración de la aplicación identity-service:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name identity-service
    

    En el caso de las aplicaciones de Java y NodeJS, el reinicio permitirá que la nueva frecuencia de muestreo surta efecto. En el caso de las aplicaciones que no son de Java, el reinicio les permitirá acceder a la clave de instrumentación recién agregada desde Key Vault.

Ver registros

Hay dos maneras de ver los registros en Azure Spring Apps: streaming de registro de registros en tiempo real por instancia de aplicación o Log Analytics para registros agregados con la funcionalidad de consulta avanzada

Uso de streaming de registro

Para generar tráfico en la aplicación, recórrala, vea el catálogo y realice pedidos. Use los comandos siguientes para generar tráfico de forma continuada, hasta que se cancele:

export GATEWAY_URL=$(az spring gateway show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --query "properties.url" \
    --output tsv)

export GATEWAY_URL=https://${GATEWAY_URL} 

cd azure-spring-apps-enterprise/load-test/traffic-generator
./gradlew gatlingRun-com.vmware.acme.simulation.GuestSimulation.java

Use el comando siguiente para obtener las últimas 100 líneas de registros de consola de aplicación de la aplicación Servicio de catálogo:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --lines 100

Al agregar la opción --follow, puede obtener el streaming de registro en tiempo real de una aplicación. Use el comando siguiente para probar el streaming de registro para la aplicación Servicio de catálogo:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --follow

Sugerencia

Puede usar az spring app logs --help para explorar más parámetros y funcionalidades de flujo de registro.

Uso de Log Analytics

Vaya a Azure Portal y abra la instancia de Log Analytics que ha creado. Puede encontrar la instancia de Log Analytics en el mismo grupo de recursos donde ha creado la instancia de servicio de Azure Spring Apps.

En la página Log Analytics, seleccione el panel Registros y ejecute cualquiera de las siguientes consultas de ejemplo para Azure Spring Apps.

Escriba y ejecute la siguiente consulta Kusto para ver los registros de aplicación:

AppPlatformLogsforSpring
| where TimeGenerated > ago(24h)
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Esta consulta genera resultados similares a los que se muestran en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando una salida de ejemplo de todas las consultas de registros de aplicaciones.

Escriba y ejecute la siguiente consulta Kusto para ver los registros de aplicación de catalog-service:

AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Esta consulta genera resultados similares a los que se muestran en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando una salida de ejemplo de los registros de aplicaciones de Servicio del catálogo.

Escriba y ejecute la siguiente consulta Kusto para ver los errores y excepciones creados por cada aplicación:

AppPlatformLogsforSpring
| where Log contains "error" or Log contains "exception"
| extend FullAppName = strcat(ServiceName, "/", AppName)
| summarize count_per_app = count() by FullAppName, ServiceName, AppName, _ResourceId
| sort by count_per_app desc
| render piechart

Esta consulta genera resultados similares a los que se muestran en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando una salida de ejemplo de los Registros de entrada.

Escriba y ejecute la siguiente consulta Kusto para ver todas las llamadas entrantes a Azure Spring Apps:

AppPlatformIngressLogs
| project TimeGenerated, RemoteAddr, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Escriba y ejecute la siguiente consulta de Kusto para ver todos los registros de la instancia administrada de Spring Cloud Config Gateway administrada por Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log

Esta consulta genera resultados similares a los que se muestran en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando una salida de ejemplo de los Registros la puerta de enlace de Spring Cloud.

Escriba y ejecute la siguiente consulta de Kusto para ver todos los registros de la instancia administrada de Spring Cloud Service Registry administrada por Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log

Esta consulta genera resultados similares a los que se muestran en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando una salida de ejemplo de los registros de registro del servicio.

Uso del seguimiento

En Azure Portal, abra la instancia de Application Insights creada por Azure Spring Apps y empiece a supervisar las aplicaciones de Spring Boot. Puede encontrar la instancia de Application Insights en el mismo grupo de recursos donde ha creado un instancia de servicio de Azure Spring Apps.

Vaya al panel Mapa de aplicación, que será similar a la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando el Mapa de aplicación de Azure Application Insights.

Vaya al panel Rendimiento, que será similar a la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando el panel de Rendimiento de Azure Application Insights.

Vaya al panel Rendimiento/Dependencias. Aquí puede ver el número de rendimiento de las dependencias, especialmente las llamadas SQL, similar a lo que se muestra en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando la sección de Dependencias del panel de Rendimiento de Azure Application Insights.

Vaya al panel Rendimiento/Roles. Aquí puede ver las métricas de rendimiento de instancias o roles individuales, similar a lo que se muestra en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando la sección de Roles del panel de Rendimiento de Azure Application Insights.

Seleccione una llamada SQL para ver la transacción de un extremo a otro en contexto, similar a lo que se muestra en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando la transacción de extremo a extremo de una llamada SQL.

Vaya al panel Errores o excepciones. Aquí puede ver una colección de excepciones, similar a lo que se muestra en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal mostrando gráficos de errores de aplicaciones.

Visualización de métricas

Vaya al panel Métricas. Aquí puede ver las métricas aportadas por las aplicaciones de Spring Boot, los módulos de Spring Cloud y las dependencias. En el gráfico de la captura de pantalla siguiente se muestran http_server_requests y Memoria de montón usada:

Captura de pantalla de Azure Portal mostrando un gráfico de métricas a lo largo del tiempo.

Spring Boot registra un gran número de métricas principales: JVM, CPU, Tomcat, Logback, etc. La configuración automática de Spring Boot permite la instrumentación de las solicitudes que controla Spring MVC. Los controladores REST ProductController y PaymentController los ha instrumentado la anotación de Micrometer @Timed en el nivel de clase.

La aplicación acme-catalog tiene habilitadas las siguientes métricas personalizadas: @Timed: store.products

La aplicación acem-payment tiene habilitadas las siguientes métricas personalizadas: @Timed: store.payment

Puede ver estas métricas personalizadas en el panel Métricas, como se muestra en la captura de pantalla siguiente.

Captura de pantalla que muestra métricas personalizadas instrumentadas por Micrometer.

Vaya al panel Métricas en directo. Aquí puede ver las métricas en directo en pantalla con latencias < 1 segundo, como se muestra en la captura de pantalla siguiente:

Captura de pantalla que muestra las métricas activas de todas las aplicaciones.

Trabajo con otras herramientas de supervisión

El plan Enterprise de Azure Spring Apps también admite la exportación de métricas a otras herramientas, incluidas las siguientes:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Puede agregar más enlaces a un generador en Tanzu Build Service mediante el siguiente comando:

az spring build-service builder buildpack-binding create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --builder-name <builder-name> \
    --name <binding-name> \
    --type <ApplicationInsights|AppDynamics|ApacheSkyWalking|Dynatrace|ElasticAPM|NewRelic> \
    --properties <connection-properties>
    --secrets <secret-properties>

Limpieza de recursos

Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no lo necesite, elimine el grupo de recursos, que elimina los recursos que contiene. Para eliminar el grupo de recursos mediante la CLI de Azure, use estos comandos:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Pasos siguientes

Continúe con cualquiera de los siguientes artículos de inicio rápido opcionales: