Analisar logs e métricas com configurações de diagnóstico

Observação

Azure Spring Apps é o novo nome do serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns locais 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 se aplica ao: ✔️ nível Básico/Standard ✔️ nível Enterprise

Este artigo mostra como analisar dados de diagnóstico no Azure Spring Apps.

Usando a funcionalidade de diagnóstico do Azure Spring Apps, você pode analisar os logs e as métricas com qualquer um dos seguintes serviços:

  • Usar o Log Analytics do Azure. Há um atraso ao exportar logs para o Log Analytics.
  • Salve os logs em uma conta de armazenamento para auditoria ou inspeção manual. Você pode especificar o tempo de retenção (em dias).
  • Transmita logs para seu hub de eventos para ingestão por um serviço de terceiros ou uma solução de análise personalizada.

Escolha a categoria de logs e a categoria de métricas que você deseja monitorar.

Dica

Se você quiser apenas transmitir seus logs, poderá usar o comando da CLI do Azure az spring app logs.

Logs

Log Descrição
ApplicationConsole Log do console de todos os aplicativos do cliente.
SystemLogs Os valores disponíveis LogType são ConfigServer(somente plano Basic/Standard), (todos os planos), ApiPortalServiceRegistry(somente plano Enterprise), (somente plano Enterprise), ApplicationConfigurationServiceSpringCloudGateway (somente plano Enterprise) e SpringCloudGatewayOperator (somente plano Enterprise)
IngressLogs Logs de entrada de todos os aplicativos do cliente, somente logs de acesso.
BuildLogs Crie logs de todos os aplicativos do cliente para cada estágio de build.

Métrica

Para obter uma lista completa de métricas, consulte a seção Opções de métricas do usuário das Métricas para o Azure Spring Apps.

Para começar, habilite um desses serviços para receber os dados. Para saber mais sobre como configurar o Log Analytics, confira Introdução ao Log Analytics no Azure Monitor.

Configurar definições de diagnóstico

  1. No portal do Azure, vá para a sua instância do Azure Spring Apps.

  2. Selecione a opção Configurações de diagnóstico e, em seguida, selecione Adicionar configuração de diagnóstico.

  3. Insira um nome para a configuração e escolha para onde deseja enviar os logs. Você pode selecionar qualquer combinação das três opções abaixo:

    • Arquivar em uma conta de armazenamento
    • Transmitir por streaming para um hub de eventos
    • Enviar para o Log Analytics
    • Enviar para uma solução de parceiro
  4. Escolha qual categoria de log e categoria de métrica você deseja monitorar e especifique o tempo de retenção (em dias). O tempo de retenção se aplica somente à conta de armazenamento.

  5. Selecione Salvar.

Observação

Pode haver um intervalo de até 15 minutos entre o momento em que os logs ou as métricas são emitidos e quando aparecem na sua conta de armazenamento, no hub de eventos ou no Log Analytics. Se a instância do Azure Spring Apps for excluída ou movida, a operação não será colocada em cascata para os recursos de configurações de diagnóstico. Os recursos de configuração de diagnóstico precisam ser excluídos manualmente antes da operação no pai, a instância do Azure Spring Apps. Caso contrário, se uma nova instância do Azure Spring Apps for provisionada com a mesma ID de recurso que a excluída, ou se a instância do Azure Spring Apps for movida de volta, os recursos das configurações de diagnóstico anteriores continuarão a estendê-la.

Analisar logs e métricas

Há vários métodos para exibir os logs e as métricas, conforme descrito nos cabeçalhos a seguir.

Usar a folha Logs

  1. No portal do Azure, vá para a sua instância do Azure Spring Apps.

  2. Para abrir o painel Pesquisa de logs, selecione Logs.

  3. Na caixa de pesquisa Tabelas

    • Para exibir os logs, insira uma consulta simples, como:
    AppPlatformLogsforSpring
    | limit 50
    
    • Para exibir as métricas, insira uma consulta simples, como:
    AzureMetrics
    | limit 50
    
  4. Para exibir o resultado da pesquisa, selecione Executar.

Usar o Log Analytics

  1. No portal do Azure, no painel esquerdo, selecione Log Analytics.

  2. Selecione o espaço de trabalho do Log Analytics que você escolheu ao adicionar as configurações de diagnóstico.

  3. Para abrir o painel Pesquisa de logs, selecione Logs.

  4. Na caixa de pesquisa Tabelas,

    • para exibir os logs, insira uma consulta simples, como:
    AppPlatformLogsforSpring
    | limit 50
    
    • para exibir as métricas, insira uma consulta simples, como:
    AzureMetrics
    | limit 50
    
  5. Para exibir o resultado da pesquisa, selecione Executar.

  6. Você pode pesquisar os logs do aplicativo ou da instância específica definindo uma condição de filtro:

    AppPlatformLogsforSpring
    | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName"
    | limit 50
    

    Observação

    == diferencia maiúsculas de minúsculas, mas =~ não.

Para saber mais sobre a linguagem de consulta usada no Log Analytics, confira Consultas de log do Azure Monitor. Para consultar todos os logs do Log Analytics de um cliente centralizado, confira Azure Data Explorer.

Use sua conta de armazenamento

  1. No portal do Azure, localize Contas de armazenamento no painel de navegação esquerdo ou na caixa de pesquisa.
  2. Selecione a conta de armazenamento que você escolheu ao adicionar as configurações de diagnóstico.
  3. Para abrir o painel Contêiner de blob, selecione Blobs.
  4. Para examinar os logs de aplicativo, procure um contêiner chamado insights-logs-applicationconsole.
  5. Para examinar as métricas de aplicativo, procure um contêiner chamado insights-metrics-pt1m.

Para saber mais sobre como enviar informações de diagnóstico para uma conta de armazenamento, confira Armazenar e exibir dados de diagnóstico no Armazenamento do Azure.

Use seu hub de eventos

  1. No portal do Azure, localize Hubs de Eventos no painel de navegação esquerdo ou na caixa de pesquisa.

  2. Pesquise e selecione o hub de eventos que você escolheu quando adicionou as configurações de diagnóstico.

  3. Para abrir o painel Lista do Hub de Eventos, selecione Hub de Eventos.

  4. Para examinar os logs de aplicativo, procure um hub de eventos chamado insights-logs-applicationconsole.

  5. Para examinar as métricas de aplicativo, procure um hub de eventos chamado insights-metrics-pt1m.

Para saber mais sobre como enviar informações de diagnóstico para um hub de eventos, confira Transmitindo de dados de Diagnóstico do Azure no caminho crítico usando os Hubs de Eventos.

Analisar os logs

O Log Analytics do Azure está em execução com um mecanismo Kusto para que você possa consultar seus logs para análise. Para obter uma breve introdução à consulta de logs usando o Kusto, confira o Tutorial do Log Analytics.

Os logs de aplicativo fornecem informações críticas e logs detalhados sobre a integridade, o desempenho e muito mais do aplicativo. Nas próximas seções estão algumas consultas simples para ajudá-lo a entender os estados atuais e antigos do seu aplicativo.

Mostrar logs do aplicativo do Azure Spring Apps

Para examinar uma lista de logs do aplicativo do Azure Spring Apps, classificados por tempo com os logs mais recentes mostrados primeiro, execute a seguinte consulta:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| sort by TimeGenerated desc

Mostrar entradas de logs contendo erros ou exceções

Para examinar as entradas de log não classificadas que mencionam um erro ou uma exceção, execute a seguinte consulta:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| where Log contains "error" or Log contains "exception"

Use essa consulta para localizar erros ou modificar os termos da consulta para localizar códigos de erro ou exceções específicas.

Mostrar o número de erros e exceções relatados pelo seu aplicativo na última hora

Para criar um gráfico de pizza que exibe o número de erros e exceções registrados pelo seu aplicativo na última hora, execute a seguinte consulta:

AppPlatformLogsforSpring
| where TimeGenerated > ago(1h)
| where Log contains "error" or Log contains "exception"
| summarize count_per_app = count() by AppName
| sort by count_per_app desc
| render piechart

Mostrar logs de entrada que contêm um host específico

Para revisar as entradas de log geradas por um host específico, execute a seguinte consulta:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and Host == "ingress-asc.test.azuremicroservices.io" 
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Use essa consulta para encontrar a resposta Status, RequestTime e outras propriedades dos logs de entrada desse host específico.

Mostrar logs de entrada de um requestId específico

Para analisar as entradas de log de um requestIdvalor < específico request_ID>, execute a seguinte consulta:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and ReqId == "<request_ID>" 
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Mostrar entradas de log de build para um aplicativo específico

Para revisar as entradas de log de um aplicativo específico durante o processo de build, execute a seguinte consulta:

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>"
| sort by TimeGenerated

Mostrar entradas de log de build para um aplicativo específico em um estágio de build específico

Para revisar as entradas de log de um aplicativo específico em um estágio de build específico, execute a consulta a seguir. Substitua o espaço reservado <app-name> pelo nome do aplicativo. Substitua o espaço reservado <build-stage> por um dos seguintes valores, que representam os estágios do processo prepare de build: prepare, detect, restore, analyze, build, export, ou completion.

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>" and ContainerName == "<build-stage>"
| sort by TimeGenerated

Mostrar logs do VMware Spring Cloud Gateway no plano Enterprise

Para revisar as entradas de log dos logs do VMware Spring Cloud Gateway no plano Enterprise, execute a seguinte consulta:

AppPlatformSystemLogs 
| where LogType == "SpringCloudGateway"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Outro componente, chamado Spring Cloud Gateway Operator, controla o ciclo de vida do Spring Cloud Gateway e rotas. Se você encontrar algum problema com a rota não tendo efeito, verifique os logs para este componente. Para revisar as entradas de log do VMware Spring Cloud Gateway Operator no plano Enterprise, execute a seguinte consulta:

AppPlatformSystemLogs 
| where LogType == "SpringCloudGatewayOperator"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Mostrar o Serviço de Configuração de Aplicativo para logs Tanzu no plano Enterprise

Para revisar as entradas de log do Serviço de Configuração do Aplicativo para logs Tanzu no plano Enterprise, execute a seguinte consulta:

AppPlatformSystemLogs 
| where LogType == "ApplicationConfigurationService"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Mostrar logs do Registro do Serviço Tanzu no plano Enterprise

Para revisar as entradas de log para logs do Registro do Serviço Tanzu no plano Enterprise, execute a seguinte consulta:

AppPlatformSystemLogs 
| where LogType == "ServiceRegistry"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Mostrar portal de API para logs do VMware Tanzu no plano Enterprise

Para revisar as entradas de log do portal de API para logs do VMware Tanzu no plano Enterprise, execute a seguinte consulta:

AppPlatformSystemLogs 
| where LogType == "ApiPortal"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Saiba mais sobre como consultar logs de aplicativos

O Azure Monitor fornece amplo suporte para consultar logs de aplicativos usando o Log Analytics. Para saber mais sobre este serviço, confira Introdução às consultas de log no Azure Monitor. Para obter mais informações sobre como criar consultas para analisar os logs do aplicativo, confira Visão geral das consultas de log no Azure Monitor.

Perguntas frequentes

Como converter rastreamentos de pilha Java de várias linhas em uma única linha?

Há uma solução alternativa para converter os rastreamentos de pilha de várias linhas em uma única linha. Você pode modificar a saída de log do Java para reformatar mensagens de rastreamento de pilha, substituindo caracteres de nova linha com um token. Se você usar a biblioteca Java Logback, poderá reformatar as mensagens de rastreamento de pilha adicionando %replace(%ex){'[\r\n]+', '\\n'}%nopex da seguinte maneira:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                level: %level, message: "%logger{36}: %msg", exceptions: "%replace(%ex){'[\r\n]+', '\\n'}%nopex"%n
            </pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

Depois, você pode substituir o token por caracteres de nova linha no Log Analytics como abaixo:

AppPlatformLogsforSpring
| extend Log = array_strcat(split(Log, '\\n'), '\n')

Talvez você possa usar a mesma estratégia para outras bibliotecas de log do Java.

Próximas etapas