Partilhar via


Transmita logs do console do aplicativo Azure Spring Apps em tempo real

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a: ✔️ Java ✔️ C#

Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise

Este artigo descreve como habilitar o streaming de logs na CLI do Azure para obter logs do console do aplicativo em tempo real para solução de problemas. Você também pode usar configurações de diagnóstico para analisar dados de diagnóstico no Azure Spring Apps. Para obter mais informações, consulte Analisar logs e métricas com configurações de diagnóstico. Para obter mais informações sobre logs de streaming, consulte Transmitir logs de trabalho do Azure Spring Apps em tempo real e Transmitir logs de componentes gerenciados do Azure Spring Apps em tempo real.

Pré-requisitos

Usar a CLI do Azure para produzir logs de cauda

Esta seção fornece exemplos de como usar a CLI do Azure para produzir logs de cauda. Para evitar especificar repetidamente o nome do grupo de recursos e da instância de serviço, use os seguintes comandos para definir o nome padrão do grupo de recursos e o nome do cluster:

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

O grupo de recursos e o nome do serviço são omitidos nos exemplos a seguir.

Exibir o log de cauda de um aplicativo com uma única instância

Se um aplicativo nomeado auth-service tiver apenas uma instância, você poderá exibir o log da instância do aplicativo com o seguinte comando:

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

O comando retorna logs semelhantes aos exemplos a seguir, onde auth-service é o nome do aplicativo.

...
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

...

Exibir o log de cauda de um aplicativo com várias instâncias

Se existirem várias instâncias para o aplicativo chamado auth-service, você poderá exibir o log de instâncias usando a -i/--instance opção.

Primeiro, execute o seguinte comando para obter os nomes de instância do aplicativo:

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

O comando produz resultados semelhantes à seguinte saída:

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

Em seguida, você pode transmitir logs de uma instância de aplicativo usando a opção, da -i/--instance seguinte maneira:

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

Você também pode obter detalhes de instâncias de aplicativo no portal do Azure. Depois de selecionar Aplicativos no painel de navegação esquerdo do serviço Azure Spring Apps, selecione Instâncias de Aplicativo.

Transmita continuamente novos logs

Por padrão, imprime apenas os logs existentes transmitidos para o console do aplicativo e, em seguida, az spring app logs sai. Se você quiser transmitir novos logs, adicione o -f/--follow argumento, conforme mostrado no exemplo a seguir:

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

Quando você usa o --follow argumento para gerar logs instantâneos, o serviço de streaming de log do Azure Spring Apps envia logs de pulsação para o cliente a cada minuto, a menos que seu aplicativo esteja gravando logs constantemente. As mensagens de registro de pulsação usam o seguinte formato: 2020-01-15 04:27:13.473: No log from server.

Use o seguinte comando para verificar todas as opções de log suportadas:

az spring app logs --help

Formatar logs estruturados JSON

Nota

A formatação de logs estruturados JSON requer a extensão spring versão 2.4.0 ou posterior.

Os logs de aplicativos estruturados são exibidos no formato JSON, que pode ser difícil de ler. Você pode usar o --format-json argumento para formatar logs no formato JSON em um formato mais legível. Para obter mais informações, consulte Log de aplicativo estruturado para Azure Spring Apps.

O exemplo a seguir mostra como usar o --format-json argumento:

# 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

O --format-json argumento também aceita um formato personalizado opcional usando sintaxe de cadeia de caracteres de formato. Para obter mais informações, consulte Formatar sintaxe de cadeia de caracteres.

O exemplo a seguir mostra como usar a sintaxe de cadeia de caracteres de formato:

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

O formato padrão que está sendo usado é:

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

Transmitir um log do aplicativo Azure Spring Apps em uma instância de injeção de rede virtual

Para uma instância do Azure Spring Apps implantada em uma rede virtual personalizada, você pode acessar o streaming de log por padrão de uma rede privada. Para obter mais informações, consulte Implantar aplicativos Azure Spring em uma rede virtual

O Azure Spring Apps também permite que você acesse logs de aplicativos em tempo real de uma rede pública usando o portal do Azure ou a CLI do Azure.

Nota

Habilitar o ponto de extremidade de streaming de log na rede pública adiciona um IP de entrada público à sua rede virtual. Certifique-se de ter cuidado se isso for uma preocupação para você.

Use as seguintes etapas para habilitar um ponto de extremidade de streaming de log na rede pública:

  1. Selecione a instância de serviço do Azure Spring Apps implantada em sua rede virtual e selecione Rede no menu de navegação.

  2. Selecione a guia Injeção de Vnet.

  3. Alterne o status dos recursos do Dataplane na rede pública para habilitar um ponto de extremidade de streaming de log na rede pública. Este processo demora alguns minutos.

    Captura de ecrã do portal do Azure que mostra a página Rede com o separador Injeção de Vnet selecionado e a secção Resolução de Problemas realçada.

Depois de habilitar o ponto de extremidade público do fluxo de log, você pode acessar o log do aplicativo de uma rede pública da mesma forma que acessaria uma instância normal.

Tráfego seguro para o ponto de extremidade público de streaming de log

O streaming de log usa a mesma chave que o ponto de extremidade de teste descrito em Configurar um ambiente de preparo no Azure Spring Apps para autenticar as conexões com suas implantações. Como resultado, apenas os usuários que têm acesso de leitura às chaves de teste podem acessar o streaming de logs.

Para garantir a segurança de seus aplicativos quando você expõe um ponto de extremidade público para eles, proteja o ponto de extremidade filtrando o tráfego de rede para seu serviço com um grupo de segurança de rede. Para obter mais informações, consulte Tutorial: Filtrar o tráfego de rede com um grupo de segurança de rede usando o portal do Azure. Os grupos de segurança de rede contêm regras de segurança que permitem ou negam o tráfego de entrada ou de saída de e para vários tipos de recursos do Azure. Para cada regra, pode especificar a origem e o destino, a porta e o protocolo.

Nota

Se não conseguir aceder aos registos da aplicação na instância de injeção de rede virtual a partir da Internet depois de ativar um ponto de extremidade público de fluxo de registos, verifique o seu grupo de segurança de rede para ver se permitiu esse tráfego de entrada.

A tabela a seguir mostra um exemplo de uma regra básica que recomendamos. Você pode usar comandos como nslookup com o ponto de extremidade <service-name>.private.azuremicroservices.io para obter o endereço IP de destino de um serviço.

Prioridade Name Porta Protocolo Origem Destino Ação
100 Nome da regra 80 TCP Internet Endereço IP do serviço Permitir
110 Nome da regra 443 TCP Internet Endereço IP do serviço Permitir

Próximos passos