Потоковая передача журналов управляемых компонентов Azure Spring Apps в режиме реального времени
Примечание.
Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.
Эта статья относится к:❌ Basic/Standard ✔️ Enterprise
В этой статье описывается, как использовать Azure CLI для получения журналов управляемых компонентов в режиме реального времени для устранения неполадок. Вы также можете использовать параметры диагностика для анализа данных диагностика в Azure Spring Apps. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики. Дополнительные сведения о журналах потоковой передачи см. в статье "Журналы консоли приложений Stream Spring Apps" в режиме реального времени и журналы заданий Stream Spring Apps в режиме реального времени.
Необходимые компоненты
- Azure CLI с расширением Azure Spring Apps версии 1.24.0 или более поздней. Расширение можно установить с помощью следующей команды:
az extension add --name spring
Поддерживаемые управляемые компоненты
В следующей таблице перечислены управляемые компоненты, которые в настоящее время поддерживаются вместе с их подкомпонентами:
Управляемый компонент | Подкомпоненты |
---|---|
Служба конфигурации приложений; | application-configuration-service flux-source-controller (Поддерживается в версии ACS 2-го поколения) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Сервер конфигурации Spring Cloud | config-server |
Для перечисления всех вложенных элементов можно использовать следующую команду:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Назначение роли Azure
Для потоковой передачи журналов управляемых компонентов вам должны быть назначены соответствующие роли Azure. В следующей таблице перечислены необходимые роли и операции, для которых эти роли предоставляются разрешения:
Управляемый компонент | Требуемая роль | Операции |
---|---|---|
Служба конфигурации приложений; | Роль чтения журналов службы конфигурации приложений Azure Spring Apps | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Роль читателя журналов Шлюза Spring Cloud для Azure Spring Apps | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Сервер конфигурации Spring Cloud | Роль чтения журналов журнала сервера Конфигурации Azure Spring Apps Spring Cloud | Microsoft.AppPlatform/Spring/configService/logstream/action |
Чтобы назначить роль Azure с помощью портал Azure, выполните следующие действия.
Откройте портал Azure.
Откройте экземпляр службы Azure Spring Apps.
В области навигации выберите контроль доступа (IAM).
На странице контроль доступа (IAM) выберите "Добавить" и выберите "Добавить назначение роли".
На странице добавления назначения ролей в списке "Имя" найдите и выберите целевую роль, а затем нажмите кнопку "Далее".
Выберите "Участники" , а затем найдите и выберите имя пользователя.
Выберите Проверить + назначить.
Вывод списка всех экземпляров в компоненте
Используйте следующую команду для перечисления всех экземпляров в компоненте:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Например, чтобы перечислить все экземпляры flux-source-controller
в версии ACS 2-го поколения, используйте следующую команду:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Просмотр журналов хвоста
В этом разделе приведены примеры использования Azure CLI для создания журналов хвоста.
Просмотр журналов хвоста для конкретного экземпляра
Чтобы просмотреть журналы хвоста для определенного экземпляра, используйте az spring component logs
команду с -i/--instance
аргументом, как показано в следующем разделе.
Просмотр журналов хвоста для экземпляра службы application-configuration-service
Используйте следующую команду, чтобы просмотреть журналы хвоста для 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>
Для ACS 2-го поколения команда возвращает журналы, аналогичные следующему примеру:
...
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)
...
Просмотр журналов хвоста для экземпляра flux-source-controller
Используйте следующую команду, чтобы просмотреть журналы хвоста для 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>
Команда возвращает журналы, аналогичные следующему примеру:
...
{"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"}
...
Просмотр журналов хвоста для экземпляра spring-cloud-gateway
Используйте следующую команду, чтобы просмотреть журналы хвоста для 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>
Команда возвращает журналы, аналогичные следующему примеру:
...
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)
...
Просмотр журналов хвоста для экземпляра spring-cloud-gateway-operator
Используйте следующую команду, чтобы просмотреть журналы хвоста для 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>
Команда возвращает журналы, аналогичные следующему примеру:
...
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)
...
Просмотр журналов хвоста для экземпляра сервера конфигурации
Используйте следующую команду, чтобы просмотреть журналы хвоста для config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
Команда возвращает журналы, аналогичные следующему примеру:
...
{"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)"}
...
Просмотр журналов хвоста для всех экземпляров в одной команде
Чтобы просмотреть журналы хвоста для всех экземпляров, используйте --all-instances
аргумент, как показано в следующей команде. Имя экземпляра — это префикс каждой строки журнала. При наличии нескольких экземпляров журналы печатаются в пакете для каждого экземпляра, поэтому журналы одного экземпляра не пересекаются с журналами другого экземпляра.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Непрерывное потоковая передача новых журналов
По умолчанию печатает только существующие журналы, az spring component logs
потоковую передачу в консоль, а затем завершает работу. Если вы хотите передавать новые журналы, добавьте -f/--follow
аргумент.
При использовании -f/--follow
параметра для получения мгновенных журналов служба потоковой передачи журналов Azure Spring Apps отправляет журналы пульса клиенту каждую минуту, если компонент не записывает журналы постоянно. Сообщения журнала Heartbeat используют следующий формат: 2023-12-18 09:12:17.745: No log from server
Потоковая передача журналов для определенного экземпляра
Используйте следующую команду для потоковой передачи журналов для конкретного экземпляра:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Потоковая передача журналов для всех экземпляров
Используйте следующую команду для потоковой передачи журналов для всех экземпляров:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
При потоковой передаче журналов для нескольких экземпляров в компоненте журналы одного экземпляра пересекаются с журналами других пользователей.
Потоковая передача журналов в экземпляре внедрения виртуальной сети
Для экземпляра Azure Spring Apps, развернутого в пользовательской виртуальной сети, по умолчанию можно получить доступ к потоковой передаче журналов из частной сети. Дополнительные сведения см. в статье Развертывание Azure Spring Apps в виртуальной сети.
Azure Spring Apps также позволяет получать доступ к журналам управляемых компонентов в режиме реального времени из общедоступной сети.
Примечание.
Включение конечной точки потоковой передачи журналов в общедоступной сети добавляет общедоступный входящий IP-адрес в виртуальную сеть. Обязательно используйте осторожность, если это забота о вас.
Чтобы включить конечную точку потоковой передачи журналов в общедоступной сети, выполните следующие действия.
Выберите экземпляр службы Azure Spring Apps, развернутый в виртуальной сети, а затем выберите "Сеть " в меню навигации.
Перейдите на вкладку внедрения виртуальной сети.
Переключите состояние ресурсов dataplane в общедоступной сети, чтобы включить конечную точку потоковой передачи журналов в общедоступной сети. Этот процесс займет несколько минут.
После включения общедоступной конечной точки потока журналов можно получить доступ к журналам управляемых компонентов из общедоступной сети так же, как и к обычному экземпляру.
Защита трафика в общедоступную конечную точку потоковой передачи журналов
Потоковая передача журналов для управляемых компонентов использует Azure RBAC для проверки подлинности подключений к компонентам. В результате доступ к журналам может получить только пользователи, имеющие соответствующие роли.
Чтобы обеспечить безопасность управляемых компонентов при предоставлении общедоступной конечной точки для них, защитите конечную точку, отфильтровав сетевой трафик к службе с помощью группы безопасности сети. Дополнительные сведения см. в статье Учебник. Фильтрация сетевого трафика с помощью групп безопасности сети, используя портал Azure. В этой группе содержатся правила безопасности, которые разрешают или запрещают исходящий и входящий сетевой трафик нескольких типов ресурсов Azure. Для каждого правила можно указать источник и назначение, порт и протокол.
Примечание.
Если вы не можете получить доступ к журналам управляемых компонентов в экземпляре внедрения виртуальной сети из Интернета после включения общедоступной конечной точки потока журналов, проверка группу безопасности сети, чтобы узнать, разрешен ли такой входящий трафик.
В следующей таблице показан пример базового правила, которое мы рекомендуем. Для получения целевого IP-адреса службы можно использовать такие команды, как nslookup
и конечная точка <service-name>.private.azuremicroservices.io
.
Приоритет | Имя | Порт | Протокол | Источник | Назначение | Действие |
---|---|---|---|---|---|---|
100 | Имя правила | 80 | TCP | Интернет | IP-адрес службы | Разрешить |
110 | Имя правила | 443 | TCP | Интернет | IP-адрес службы | Разрешить |