Share via


Transmisión de registros de componentes administrados de Azure Spring Apps en tiempo real

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 artículo se describe cómo usar la CLI de Azure para obtener registros en tiempo real de los componentes administrados para solucionar problemas. También puede usar la configuración de diagnóstico para analizar datos de diagnóstico en Azure Spring Apps. Para obtener más información, consulte Análisis de registros y métricas con la configuración de diagnóstico.

Para obtener registros de streaming de aplicaciones en Azure Spring Apps, consulte Transmisión de registros de consola de aplicaciones de Azure Spring Apps en tiempo real.

Requisitos previos

  • CLI de Azure con la extensión de Azure Spring Apps, versión 1.19.0 o superior. Para instalar esta extensión, puede usar el comando siguiente: az extension add --name spring.

Componentes administrados admitidos

En la tabla siguiente se enumeran los componentes administrados que se admiten actualmente, junto con sus subcomponentes:

Componente administrado Subcomponentes
Servicio de configuración de aplicaciones application-configuration-service
flux-source-controller (compatible con la versión de ACS Gen2)
Spring Cloud Gateway spring-cloud-gateway
spring-cloud-gateway-operator

Puede usar el siguiente comando para enumerar todos los subcomponentes:

az spring component list
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name>

Asignación de un rol de Azure

Para transmitir registros de componentes administrados, debe tener asignados los roles de Azure pertinentes. En la tabla siguiente se enumeran los roles necesarios y las operaciones para las que se conceden permisos a estos roles:

Componente administrado Rol necesario Operations
Servicio de configuración de aplicaciones Rol lector de registro del servicio de configuración de aplicaciones de Azure Spring Apps Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action
Spring Cloud Gateway Rol de lector de registros de Spring Cloud Gateway de Azure Spring Apps Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action

Siga estos pasos para asignar un rol de Azure mediante Azure Portal:

  1. Abra Azure Portal.

  2. Abra su instancia de servicio de Azure Spring Apps.

  3. En el panel de navegación izquierdo, seleccione Control de acceso (IAM).

  4. En la página Control de acceso (IAM), seleccione Agregar y, a continuación, seleccione Agregar asignación de roles.

    Captura de pantalla de Azure Portal que muestra la página Control de acceso (IAM) con la opción Agregar asignación de roles resaltada.

  5. En la página Agregar asignación de roles, en la lista Nombre, busque y seleccione el rol de destino y, a continuación, seleccione Siguiente.

    Captura de pantalla de Azure Portal que muestra la página Agregar asignación de roles con el nombre del rol lector de registro del servicio de configuración de aplicaciones resaltado.

  6. Seleccione Miembros y busque y seleccione su nombre de usuario.

  7. Seleccione Revisar y asignar.

Enumerar todas las instancias de un componente

Use el comando siguiente para enumerar todas las instancias de un componente:

az spring component instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --component <component-name>

Por ejemplo, para enumerar todas las instancias de flux-source-controller en la versión de ACS Gen2, use el siguiente comando:

az spring component instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --component flux-source-controller

Visualización de los registros finales

En esta sección se proporcionan ejemplos de uso de la CLI de Azure para producir registros finales.

Visualización de los registros finales de una instancia específica

Para ver los registros finales de una instancia específica, use el comando az spring component logs con el argumento -i/--instance, como se muestra en la sección siguiente.

Visualización de los registros finales de una instancia de application-configuration-service

Use el siguiente comando para ver los registros finales de application-configuration-service:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name application-configuration-service \
    --instance <instance-name>

Para ACS Gen2, el comando devuelve registros similares al ejemplo siguiente:

...
2023-12-18T07:09:54.020Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8090 (https)
2023-12-18T07:09:54.116Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting service [Tomcat]
2023-12-18T07:09:54.117Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-12-18T07:09:54.522Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Initializing Spring embedded WebApplicationContext
2023-12-18T07:09:54.524Z  INFO  16715 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 14100 ms
2023-12-18T07:09:56.920Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8090 (https) with context path ''
2023-12-18T07:09:57.528Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2023-12-18T07:09:57.529Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting service [Tomcat]
2023-12-18T07:09:57.529Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-12-18T07:09:57.629Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Initializing Spring embedded WebApplicationContext
2023-12-18T07:09:57.629Z  INFO  16715 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 603 ms
2023-12-18T07:09:57.824Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2023-12-18T07:09:58.127Z  INFO  16715 --- [main] o.springframework.boot.StartupInfoLogger : Started ReconcilerApplication in 21.005 seconds (process running for 22.875)
...

Visualización de los registros finales de una instancia de flux-source-controller

Use el siguiente comando para ver los registros finales de flux-source-controller:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name flux-source-controller \
    --instance <instance-name>

El comando devuelve un registro similar al ejemplo siguiente:

...
{"level":"info","ts":"2023-12-18T07:07:54.615Z","logger":"controller-runtime.metrics","msg":"Metrics server is starting to listen","addr":":8080"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","logger":"setup","msg":"starting manager"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","msg":"Starting server","path":"/metrics","kind":"metrics","addr":"[::]:8080"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","msg":"Starting server","kind":"health probe","addr":"[::]:9440"}
{"level":"info","ts":"2023-12-18T07:07:54.817Z","logger":"runtime","msg":"attempting to acquire leader lease flux-system/source-controller-leader-election...\n"}
{"level":"info","ts":"2023-12-18T07:07:54.830Z","logger":"runtime","msg":"successfully acquired lease flux-system/source-controller-leader-election\n"}
...

Visualización de los registros finales de una instancia de spring-cloud-gateway

Use el siguiente comando para ver los registros finales de spring-cloud-gateway:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name spring-cloud-gateway \
    --instance <instance-name>

El comando devuelve un registro similar al ejemplo siguiente:

...
2023-12-11T14:13:40.310Z  INFO 1 --- [           main] i.p.s.c.g.s.SsoDeactivatedConfiguration  : SSO is deactivated, setting up default security filters
2023-12-11T14:13:40.506Z  INFO 1 --- [           main] .h.HazelcastReactiveSessionConfiguration : Configuring Hazelcast as a session management storage
2023-12-11T14:13:51.008Z  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8443
2023-12-11T14:13:51.810Z  INFO 1 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 7 endpoint(s) beneath base path '/actuator'
2023-12-11T14:13:52.410Z  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8090
2023-12-11T14:13:52.907Z  INFO 1 --- [           main] i.p.s.c.g.r.h.HazelcastRateLimitsRemover : Removing Hazelcast map 'GLOBAL_RATE_LIMIT' with rate limit information
2023-12-11T14:13:52.912Z  INFO 1 --- [           main] i.p.s.cloud.gateway.GatewayApplication   : Started GatewayApplication in 36.084 seconds (process running for 38.651)
...

Visualización de los registros finales de una instancia de spring-cloud-gateway-operator

Use el siguiente comando para ver los registros finales de spring-cloud-gateway-operator:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name spring-cloud-gateway-operator \
    --instance <instance-name>

El comando devuelve un registro similar al ejemplo siguiente:

...
2023-12-01T08:37:05.080Z  INFO 1 --- [           main] c.v.t.s.OperatorApplication              : Starting OperatorApplication v2.0.6 using Java 17.0.7 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2023-12-01T08:37:05.157Z  INFO 1 --- [           main] c.v.t.s.OperatorApplication              : No active profile set, falling back to 1 default profile: "default"
2023-12-01T08:37:14.379Z  INFO 1 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 1 endpoint(s) beneath base path '/actuator'
2023-12-01T08:37:15.274Z  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080
2023-12-01T08:37:15.366Z  INFO 1 --- [           main] c.v.t.s.OperatorApplication              : Started OperatorApplication in 11.489 seconds (process running for 12.467)
...

Visualización de los registros finales de todas las instancias en un comando

Para ver los registros finales de todas las instancias, use el argumento --all-instances, como se muestra en el comando siguiente. El nombre de instancia es el prefijo de cada línea de registro. Cuando hay varias instancias, los registros se imprimen por lotes para cada instancia, por lo que los registros de una instancia no se intercalan con los registros de otra instancia.

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --all-instances

Transmisión continua de nuevos registros

De manera predeterminada, az spring component logs imprime solo los registros existentes transmitidos a la consola y, a continuación, se cierra. Si desea transmitir nuevos registros, agregue el argumento -f/--follow.

Cuando se usa la opción -f/--follow para seguir registros instantáneos, el servicio de streaming de registro de Azure Spring Apps envía registros de latido al cliente cada minuto, a menos que el componente escriba registros constantemente. Los mensajes de registro de latido usan el siguiente formato: 2023-12-18 09:12:17.745: No log from server.

Transmisión de registros para una instancia específica

Use el siguiente comando para transmitir registros para una instancia específica:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --instance <instance-name> \
    --follow

Transmisión de registros para todas las instancias

Use el siguiente comando para transmitir registros para todas las instancias:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --all-instances \
    --follow

Al transmitir registros para varias instancias de un componente, los registros de una instancia se intercalarán con registros de otras.

Transmisión de registros en una instancia de inserción de red virtual

En el caso de una instancia de Azure Spring Apps implementada en una red virtual personalizada, puede acceder al streaming de registro de forma predeterminada desde una red privada. Para más información, consulte Implementación de Azure Spring Apps en una red virtual

Azure Spring Apps también le permite acceder a los registros de componentes administrados en tiempo real desde una red pública.

Nota:

Al habilitar el punto de conexión de streaming de registro en la red pública, se agrega una dirección IP de entrada pública a la red virtual. Asegúrese de tener cuidado si esto es una preocupación para usted.

Siga estos pasos para habilitar un punto de conexión de streaming de registro en la red pública:

  1. Seleccione la instancia de servicio de Azure Spring Apps implementada en la red virtual y, a continuación, seleccione Redes en el menú de navegación.

  2. Seleccione la pestaña Inyección de red virtual.

  3. Cambie el estado de Recursos de Dataplane en la red pública a Habilitar para habilitar un punto de conexión de streaming de registro en la red pública. Este proceso tarda unos minutos.

    Captura de pantalla de Azure Portal que muestra la página Redes con la pestaña Inserción de red virtual seleccionada y la sección Solución de problemas resaltada.

Después de habilitar el punto de conexión público de transmisión de registro, puede acceder a los registros de componentes administrados desde una red pública, como si tuviera acceso a una instancia normal.

Protección del tráfico al punto de conexión público de streaming de registro

El streaming de registro para componentes administrados usa el control de acceso basado en roles de Azure para autenticar las conexiones a los componentes. Como resultado, solo los usuarios que tienen los roles adecuados pueden acceder a los registros.

Para garantizar la seguridad de los componentes administrados al exponer un punto de conexión público para ellos, proteja el punto de conexión filtrando el tráfico de red al servicio con un grupo de seguridad de red. Para obtener más información, consulte el Tutorial: Filtrado del tráfico de red con un grupo de seguridad de red mediante Azure Portal. Un grupo de seguridad de red contiene reglas de seguridad que permiten o deniegan el tráfico de red entrante o el tráfico de red saliente de varios tipos de recursos de Azure. En todas las reglas, puede especificar un origen y destino, un puerto y un protocolo.

Nota:

Si no puede acceder a los registros de componentes administrados en la instancia de inyección de red virtual desde Internet tras haber habilitado un punto de conexión público de streaming de registro, compruebe el grupo de seguridad de red para ver si ha permitido este tráfico entrante.

En la tabla siguiente se muestra un ejemplo de una regla básica que se recomienda. Puede usar comandos como nslookup con el punto de conexión <service-name>.private.azuremicroservices.io para obtener la dirección IP de destino de un servicio.

Priority Nombre Puerto Protocolo Origen Destino Acción
100 Nombre de la regla 80 TCP Internet Dirección IP del servicio Permitir
110 Nombre de la regla 443 TCP Internet Dirección IP del servicio Permitir

Pasos siguientes