Transmisión de registros de componentes administrados de Azure Spring Apps en tiempo real
Nota:
Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro 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 obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.
Este artículo se aplica a: ❎ Basic/Standard ✅ 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 más información sobre el streaming de registros, consulte Transmitir los registros de la consola de la aplicación Azure Spring Apps en tiempo real y Transmitir los registros de los trabajos de Azure Spring Apps en tiempo real.
Requisitos previos
- CLI de Azure con la extensión de Azure Spring Apps, versión 1.24.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 |
Spring Cloud Config Server | config-server |
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 |
Spring Cloud Config Server | Rol de lector de registros de Config Server de Spring Cloud de Azure Spring Apps | Microsoft.AppPlatform/Spring/configService/logstream/action |
Siga estos pasos para asignar un rol de Azure mediante Azure Portal:
Abra Azure Portal.
Abra su instancia de servicio de Azure Spring Apps.
En el panel de navegación izquierdo, seleccione Control de acceso (IAM).
En la página Control de acceso (IAM), seleccione Agregar y, a continuación, seleccione Agregar asignación de roles.
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.
Seleccione Miembros y busque y seleccione su nombre de usuario.
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)
...
Ver los registros de cola de una instancia de config-server
Use el siguiente comando para ver los registros finales de config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
El comando devuelve un registro similar al ejemplo siguiente:
...
{"app":"config-server","ts":"2024-05-08T05:38:29.44Z","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","level":"INFO","class":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","method":"prepareWebApplicationContext","file":"ServletWebServerApplicationContext.java","line":291,"thread":"main","message":"Root WebApplicationContext: initialization completed in 3771 ms"}
{"app":"config-server","ts":"2024-05-08T05:38:31.058Z","logger":"com.microsoft.azure.spring.service.CloudConfigServerApplication","level":"INFO","class":"org.springframework.boot.StartupInfoLogger","method":"logStarted","file":"StartupInfoLogger.java","line":57,"thread":"main","message":"Started CloudConfigServerApplication in 6.888 seconds (process running for 8.986)"}
...
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:
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.
Seleccione la pestaña Inyección de red virtual.
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.
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 |