Потоковая передача журналов консоли приложений Azure Spring Apps в режиме реального времени

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья применима к: ✔️ Java ✔️ C#

Эта статья относится к: ✔️ Basic/Standard ✔️ Enterprise

В этой статье описывается, как включить потоковую передачу журналов в Azure CLI для получения журналов консоли приложения в режиме реального времени для устранения неполадок. Вы также можете использовать параметры диагностика для анализа данных диагностика в Azure Spring Apps. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики.

Журналы потоковой передачи управляемых компонентов в Azure Spring Apps см . в журналах управляемых компонентов Stream Azure Spring Apps в режиме реального времени.

Необходимые компоненты

Использование Azure CLI для создания журналов хвоста

В этом разделе приведены примеры использования Azure CLI для создания журналов хвоста. Чтобы избежать многократного указания имени группы ресурсов и экземпляра службы, используйте следующие команды, чтобы задать имя группы ресурсов по умолчанию и имя кластера:

az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>

Группа ресурсов и имя службы опущены в следующих примерах.

Просмотр журнала хвоста для приложения с одним экземпляром

Если у приложения с именем auth-service есть только один экземпляр, вы можете просмотреть журнал экземпляра приложения с помощью следующей команды:

az spring app logs --name <application-name>

Команда возвращает журналы, аналогичные следующим примерам, где auth-service находится имя приложения.

...
2020-01-15 01:54:40.481  INFO [auth-service,,,] 1 --- [main] o.apache.catalina.core.StandardService  : Starting service [Tomcat]
2020-01-15 01:54:40.482  INFO [auth-service,,,] 1 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.22]
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/uaa]  : Initializing Spring embedded WebApplicationContext
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.s.web.context.ContextLoader  : Root WebApplicationContext: initialization completed in 7203 ms

...

Просмотр журнала хвоста для приложения с несколькими экземплярами

Если для приложения с именем auth-service существует несколько экземпляров, журнал экземпляра можно просмотреть с помощью параметра -i/--instance.

Сначала выполните следующую команду, чтобы получить имена экземпляров приложения:

az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table

Команда создает результаты, аналогичные следующим выходным данным:

Name                                         Status    DiscoveryStatus
-------------------------------------------  --------  -----------------
auth-service-default-12-75cc4577fc-pw7hb  Running   UP
auth-service-default-12-75cc4577fc-8nt4m  Running   UP
auth-service-default-12-75cc4577fc-n25mh  Running   UP

Затем можно передавать журналы экземпляра приложения с помощью -i/--instance следующего варианта:

az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb

Кроме того, можно получить сведения об экземплярах приложения из портала Azure. Выберите Приложения в левой области навигации в службе Azure Spring Apps, затем выберите App Instances (Экземпляры приложения).

Непрерывная потоковая передача новых журналов

По умолчанию az spring app logs выводит только существующие журналы, переданные в консоль приложения, а затем завершает работу. Если вы хотите передавать новые журналы, добавьте -f/--follow аргумент, как показано в следующем примере:

az spring app logs --name auth-service --follow

При использовании аргумента --follow для мгновенных журналов служба потоковой передачи журналов Azure Spring Apps отправляет журналы пульса клиенту каждую минуту, если приложение не записывает журналы постоянно. Сообщения журнала Heartbeat используют следующий формат: 2020-01-15 04:27:13.473: No log from server

Используйте следующую команду, чтобы проверка все поддерживаемые параметры ведения журнала:

az spring app logs --help

Форматирование структурированных журналов JSON

Примечание.

Для форматирования структурированных журналов JSON требуется расширение spring версии 2.4.0 или более поздней.

Структурированные журналы приложений отображаются в формате JSON, который может быть трудно считывать. Аргумент можно использовать --format-json для форматирования журналов в формате JSON в более читаемый формат. Дополнительные сведения см. в журнале структурированных приложений для Azure Spring Apps.

В следующем примере показано, как использовать --format-json аргумент:

# Raw JSON log
$ az spring app logs --name auth-service
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Disable delta property : false"}
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Single vip registry refresh property : null"}

# Formatted JSON log
$ az spring app logs --name auth-service --format-json
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Disable delta property : false
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Single vip registry refresh property : null

Аргумент --format-json также принимает необязательный настраиваемый формат с помощью синтаксиса строки формата. Дополнительные сведения см. в разделе "Формат строкового синтаксиса".

В следующем примере показано, как использовать синтаксис строки форматирования:

# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null

По умолчанию используется формат:

{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}

Потоковая передача журнала приложения Azure Spring Apps в экземпляре внедрения виртуальной сети

Для экземпляра Azure Spring Apps, развернутого в пользовательской виртуальной сети, по умолчанию можно получить доступ к потоковой передаче журналов из частной сети. Дополнительные сведения см. в статье Развертывание Azure Spring Apps в виртуальной сети.

Azure Spring Apps также позволяет получать доступ к журналам приложений в режиме реального времени из общедоступной сети с помощью портал Azure или Azure CLI.

Примечание.

Включение конечной точки потоковой передачи журналов в общедоступной сети добавляет общедоступный входящий IP-адрес в виртуальную сеть. Обязательно используйте осторожность, если это забота о вас.

Чтобы включить конечную точку потоковой передачи журналов в общедоступной сети, выполните следующие действия.

  1. Выберите экземпляр службы Azure Spring Apps, развернутый в виртуальной сети, а затем выберите "Сеть " в меню навигации.

  2. Перейдите на вкладку внедрения виртуальной сети.

  3. Переключите состояние ресурсов dataplane в общедоступной сети , чтобы включить конечную точку потоковой передачи журналов в общедоступной сети. Этот процесс займет несколько минут.

    Screenshot of the Azure portal that shows the Networking page with the Vnet injection tab selected and the Troubleshooting section highlighted.

После включения общедоступной конечной точки потока журналов вы можете получить доступ к журналу приложений из общедоступной сети так же, как и к обычному экземпляру.

Защита трафика в общедоступную конечную точку потоковой передачи журналов

Потоковая передача журналов использует тот же ключ, что и тестовая конечная точка, описанная в статье "Настройка промежуточной среды в Azure Spring Apps " для проверки подлинности подключений к развертываниям. В результате только пользователи, имеющие доступ на чтение к тест-ключам, могут получать доступ к потоковой передаче журналов.

Чтобы обеспечить безопасность приложений при предоставлении общедоступной конечной точки для них, защитите конечную точку путем фильтрации сетевого трафика в службу с помощью группы безопасности сети. Дополнительные сведения см. в статье Учебник. Фильтрация сетевого трафика с помощью групп безопасности сети, используя портал Azure. В этой группе содержатся правила безопасности, которые разрешают или запрещают исходящий и входящий сетевой трафик нескольких типов ресурсов Azure. Для каждого правила можно указать источник и назначение, порт и протокол.

Примечание.

Если вы не можете получить доступ к журналам приложений в экземпляре внедрения виртуальной сети из Интернета после включения общедоступной конечной точки потока журналов, проверка группу безопасности сети, чтобы узнать, разрешен ли такой входящий трафик.

В следующей таблице показан пример базового правила, которое мы рекомендуем. Для получения целевого IP-адреса службы можно использовать такие команды, как nslookup и конечная точка <service-name>.private.azuremicroservices.io .

Приоритет Имя Порт Протокол Источник Назначение Действие
100 Имя правила 80 TCP Интернет IP-адрес службы Разрешить
110 Имя правила 443 TCP Интернет IP-адрес службы Разрешить

Следующие шаги