Потоковая передача журналов консоли приложений 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 Spring Apps версии 1.0.0 или более поздней. Установите это расширение, выполнив следующую команду:
az extension add --name spring
- Экземпляр Azure Spring Apps с запущенным приложением. Дополнительные сведения см. в статье Краткое руководство. Развертывание первого приложения 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-адрес в виртуальную сеть. Обязательно используйте осторожность, если это забота о вас.
Чтобы включить конечную точку потоковой передачи журналов в общедоступной сети, выполните следующие действия.
Выберите экземпляр службы Azure Spring Apps, развернутый в виртуальной сети, а затем выберите "Сеть " в меню навигации.
Перейдите на вкладку внедрения виртуальной сети.
Переключите состояние ресурсов dataplane в общедоступной сети , чтобы включить конечную точку потоковой передачи журналов в общедоступной сети. Этот процесс займет несколько минут.
После включения общедоступной конечной точки потока журналов вы можете получить доступ к журналу приложений из общедоступной сети так же, как и к обычному экземпляру.
Защита трафика в общедоступную конечную точку потоковой передачи журналов
Потоковая передача журналов использует тот же ключ, что и тестовая конечная точка, описанная в статье "Настройка промежуточной среды в Azure Spring Apps " для проверки подлинности подключений к развертываниям. В результате только пользователи, имеющие доступ на чтение к тест-ключам, могут получать доступ к потоковой передаче журналов.
Чтобы обеспечить безопасность приложений при предоставлении общедоступной конечной точки для них, защитите конечную точку путем фильтрации сетевого трафика в службу с помощью группы безопасности сети. Дополнительные сведения см. в статье Учебник. Фильтрация сетевого трафика с помощью групп безопасности сети, используя портал Azure. В этой группе содержатся правила безопасности, которые разрешают или запрещают исходящий и входящий сетевой трафик нескольких типов ресурсов Azure. Для каждого правила можно указать источник и назначение, порт и протокол.
Примечание.
Если вы не можете получить доступ к журналам приложений в экземпляре внедрения виртуальной сети из Интернета после включения общедоступной конечной точки потока журналов, проверка группу безопасности сети, чтобы узнать, разрешен ли такой входящий трафик.
В следующей таблице показан пример базового правила, которое мы рекомендуем. Для получения целевого IP-адреса службы можно использовать такие команды, как nslookup
и конечная точка <service-name>.private.azuremicroservices.io
.
Приоритет | Имя | Порт | Протокол | Источник | Назначение | Действие |
---|---|---|---|---|---|---|
100 | Имя правила | 80 | TCP | Интернет | IP-адрес службы | Разрешить |
110 | Имя правила | 443 | TCP | Интернет | IP-адрес службы | Разрешить |
Следующие шаги
- Краткое руководство. Мониторинг приложений Azure Spring Apps с помощью журналов, метрик и трассировки
- Анализ журналов и метрик на основе параметров диагностики
- Потоковая передача журналов заданий Azure Spring Apps в режиме реального времени
- Потоковая передача журналов управляемых компонентов Azure Spring Apps в режиме реального времени