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

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 mostra como analisar dados de diagnóstico no Azure Spring Apps.

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

  • Use Azure Log Analytics. 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 solução de análise personalizada.

Escolha a categoria de log e a categoria de métrica que deseja monitorar.

Gorjeta

Se você quiser apenas transmitir seus logs, você pode usar o comando azur CLI az spring app logs.

Registos

Registo Description
ApplicationConsole Log de console de todos os aplicativos do cliente.
Registos do Sistema Os valores disponíveis LogType são ConfigServer(somente plano Básico/Padrão), ServiceRegistry(todos os planos), ApiPortal(somente plano Enterprise), ApplicationConfigurationService(somente plano Enterprise) SpringCloudGateway e SpringCloudGatewayOperator (somente plano Enterprise)
IngressLogs Logs de entrada de todos os aplicativos do cliente, apenas logs de acesso.
BuildLogs Crie logs de todos os aplicativos do cliente para cada estágio de compilação.

Nota

Para proteger seu aplicativo contra possíveis vazamentos de credenciais, todo o conteúdo de log com credenciais ou outras informações confidenciais é mascarado com ***. Por exemplo, qualquer conteúdo de log com os seguintes padrões é tratado como informações confidenciais e os valores correspondentes são mascarados:

  • dbpass, password, key, secret, , sige signature seguido de : ou =. Esses padrões normalmente aparecem em parâmetros de URL e despejos de carga útil. Por exemplo, https://somestorage.blob.core.windows.net?sv=2021-08-06&st=2024-04-30T10%3A01%3A19Z&se=2024-04-30T11%3A01%3A19Z&sr=b&sp=r&sig=xxxxxxxxxxxxxx torna-se https://somestorage.blob.core.windows.net?sv=2021-08-06&st=2024-04-30T10%3A01%3A19Z&se=2024-04-30T11%3A01%3A19Z&sr=b&sp=r&sig=***
  • Cadeias de caracteres codificadas semelhantes a tokens JWT no formato: eyJxxxxxx.eyJxxxxxx

Se você encontrar valores mascarados em seus logs, atualize o código do aplicativo para eliminar o vazamento de credenciais.

Métricas

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

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

Definir definições de diagnóstico

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

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

  3. Introduza um nome para a definição e, em seguida, escolha para onde pretende enviar os registos. Você pode selecionar qualquer combinação das seguintes opções:

    • Arquivar em uma conta de armazenamento
    • Transmitir em fluxo para um hub de eventos
    • Enviar para o Log Analytics
    • Enviar para 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 aplica-se apenas à conta de armazenamento.

  5. Selecione Guardar.

Nota

Pode haver um intervalo de até 15 minutos entre quando os logs ou métricas são emitidos e quando eles 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á transferida em cascata para os recursos de configurações de diagnóstico. Os recursos de configurações de diagnóstico devem ser excluídos manualmente antes da operação em relação ao 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 de configurações de diagnóstico anteriores continuarão a estendê-la.

Ver os registos e métricas

Há vários métodos para exibir logs e métricas, conforme descrito nos títulos a seguir.

Usar o painel Logs

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

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

  3. Na caixa de pesquisa Tabelas, use uma das seguintes consultas:

    • Para exibir logs, insira uma consulta como o exemplo a seguir:

      AppPlatformLogsforSpring
      | limit 50
      
    • Para exibir métricas, insira uma consulta como o exemplo a seguir:

      AzureMetrics
      | limit 50
      
  4. Para visualizar o resultado da pesquisa, selecione Executar.

Utilizar 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 quando adicionou suas configurações de diagnóstico.

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

  4. Na caixa de pesquisa Tabelas, use uma das seguintes consultas:

    • Para exibir logs, insira uma consulta como o exemplo a seguir:

      AppPlatformLogsforSpring
      | limit 50
      
    • Para exibir métricas, insira uma consulta como o exemplo a seguir:

    AzureMetrics
    | limit 50
    
  5. Para visualizar o resultado da pesquisa, selecione Executar.

  6. Você pode pesquisar os logs do aplicativo ou instância específica definindo uma condição de filtro, conforme mostrado no exemplo a seguir:

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

    Nota

    == é sensível a maiúsculas e minúsculas, mas =~ não é.

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

Utilizar a 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 escolhida quando adicionou as configurações de diagnóstico.
  3. Para abrir o painel Contêiner de Blob, selecione Blobs.
  4. Para revisar os logs do aplicativo, procure um contêiner chamado insights-logs-applicationconsole.
  5. Para revisar as métricas do 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, consulte 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. Procure e selecione o hub de eventos que você escolheu quando adicionou suas configurações de diagnóstico.

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

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

  5. Para revisar as métricas do 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, consulte Streaming de dados de diagnóstico do Azure no caminho ativo usando Hubs de Eventos.

Analise os logs

O Azure Log Analytics está sendo executado com um mecanismo Kusto para que você possa consultar seus logs para análise. Para obter uma introdução rápida à consulta de logs usando o Kusto, revise o tutorial do Log Analytics.

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

Mostrar logs de aplicativos do Azure Spring Apps

Para revisar uma lista de logs de aplicativos 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 revisar entradas de log não ordenadas que mencionam um erro ou exceção, execute a seguinte consulta:

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

Use esta consulta para localizar erros ou modifique os termos de consulta para localizar códigos de erro ou exceções específicos.

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

Para criar um gráfico de pizza que exiba 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 entradas de log de entrada contendo 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 esta consulta para localizar a resposta Status, RequestTimee outras propriedades dos logs de entrada desse host específico.

Mostrar entradas de log de entrada para um requestId específico

Para revisar entradas de log para um valor <específico requestId 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 compilação para um aplicativo específico

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

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

Mostrar entradas de log de compilação para um aplicativo específico em um estágio de compilação específico

Para revisar as entradas de log de um aplicativo específico em um estágio de compilação específico, execute a consulta a seguir. Substitua o espaço reservado pelo nome do <app-name> aplicativo. Substitua o espaço reservado <build-stage> por um dos seguintes valores, que representam os estágios do processo de compilação: prepare, detect, restore, analyze, buildexport, , 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 entrando em vigor, 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 entradas de log para logs do Application Configuration Service for 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 Tanzu Service Registry no plano Enterprise

Para revisar entradas de log para logs do Tanzu Service Registry 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 suporte extensivo para consultar logs de aplicativos usando o Log Analytics. Para saber mais sobre esse serviço, consulte Introdução às consultas de log no Azure Monitor. Para obter mais informações sobre como criar consultas para analisar seus logs de aplicativo, consulte Visão geral das consultas de log no Azure Monitor.

Pontos de entrada convenientes no portal do Azure

Use as etapas a seguir para navegar até o painel do Log Analytics com consultas predefinidas:

  1. Vá para a página Visão geral da sua instância de serviço do Azure Spring Apps e selecione Aplicativos no painel de navegação.

  2. Encontre seu aplicativo de destino e selecione o menu de contexto.

  3. No menu de contexto pop-up, selecione Exibir logs.

    Captura de ecrã do portal do Azure que mostra a página Aplicações com o item de menu de contexto Ver registos realçado.

    Esta ação navega até o painel do Log Analytics com consultas predefinidas.

Existem outros pontos de entrada para visualizar logs. Você também pode encontrar o botão Exibir logs para componentes gerenciados, como Serviço de Criação e Registro de Serviço.

Perguntas mais frequentes (FAQ)

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

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

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

Em seguida, você pode substituir o token por caracteres de nova linha no Log Analytics, conforme mostrado no exemplo a seguir:

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

Talvez seja possível usar a mesma estratégia para outras bibliotecas de log Java.

Próximos passos