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

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.

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:

Screenshot of Azure portal showing example output from all application logs query.

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:

Screenshot of Azure portal showing example output from Catalog Service application logs.

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:

Screenshot of Azure portal showing example output from the Ingress Logs.

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:

Screenshot of Azure portal showing example output from the Spring Cloud Gateway Logs.

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:

Screenshot of Azure portal showing example output from service registry logs.

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:

Screenshot of Azure portal showing the Application Map of Azure Application Insights.

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

Screenshot of Azure portal showing the Performance pane of 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:

Screenshot of Azure portal showing the Dependencies section of the Performance pane of 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:

Screenshot of Azure portal showing the Roles section of the Performance pane of 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:

Screenshot of Azure portal showing the end-to-end transaction of an S Q L call.

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:

Screenshot of Azure portal showing application failures graphed.

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:

Screenshot of Azure portal showing metrics over time graph.

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.

Screenshot showing custom metrics instrumented by 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:

Screenshot showing the live metrics of all applications.

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: