Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Эта статья относится к: ❎ 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 | 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 | Роль для чтения журналов шлюза Spring Cloud в Azure Spring Apps | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
| Сервер конфигурации Spring Cloud | Роль чтения журналов сервера конфигурации Spring Cloud в Azure Spring Apps | 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 для создания хвостовых логов.
Просмотр tail-логов для конкретного экземпляра
Чтобы просмотреть хвостовые логи для определенного экземпляра, используйте команду 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, развернутый в виртуальной сети, а затем выберите "Сеть " в меню навигации.
Выберите вкладку Vnet injection.
Измените статус ресурсов плоскости данных в публичной сети на Включено, чтобы конечная точка потоковой передачи журналов была включена в публичной сети. Этот процесс займет несколько минут.
После включения общедоступной конечной точки потока журналов можно получить доступ к журналам управляемых компонентов из общедоступной сети так же, как и к обычному экземпляру.
Защита трафика к общедоступной конечной точке потоковой передачи логов
Потоковая передача логов для управляемых компонентов использует Azure RBAC для аутентификации подключений к компонентам. В результате доступ к журналам может получить только пользователи, имеющие соответствующие роли.
Чтобы обеспечить безопасность управляемых компонентов при предоставлении общедоступной конечной точки для них, защитите конечную точку, отфильтровав сетевой трафик к службе с помощью группы безопасности сети. Дополнительные сведения см. в статье Учебник. Фильтрация сетевого трафика с помощью групп безопасности сети, используя портал Azure. В этой группе содержатся правила безопасности, которые разрешают или запрещают исходящий и входящий сетевой трафик нескольких типов ресурсов Azure. Для каждого правила можно указать источник и назначение, порт и протокол.
Примечание.
Если вы из Интернета не можете получить доступ к журналам управляемых компонентов в экземпляре инъекции виртуальной сети после включения общедоступной конечной точки потока журналов, проверьте группу безопасности сети, чтобы узнать, разрешен ли такой входящий трафик.
В следующей таблице показан пример базового правила, которое мы рекомендуем. Для получения целевого IP-адреса службы можно использовать такие команды, как nslookup и конечная точка <service-name>.private.azuremicroservices.io .
| Приоритет | Имя | Порт | Протокол | Источник | Назначение | Действие |
|---|---|---|---|---|---|---|
| 100 | Имя правила | 80 | TCP | Интернет | IP-адрес службы | Разрешить |
| 110 | Имя правила | 443 | TCP | Интернет | IP-адрес службы | Разрешить |