Поделиться через


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

Примечание.

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

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

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

В этой статье описывается, как включить потоковую передачу журналов в Azure CLI для получения журналов консоли приложения в режиме реального времени для устранения неполадок. Вы также можете использовать параметры диагностика для анализа данных диагностика в Azure Spring Apps. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики. Дополнительные сведения о журналах потоковой передачи см. в журналах заданий Stream 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 в общедоступной сети , чтобы включить конечную точку потоковой передачи журналов в общедоступной сети. Этот процесс займет несколько минут.

    Снимок экрана: портал Azure, на котором показана страница

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

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

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

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

Примечание.

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

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

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

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