Ativar e configurar o registo de aplicações do Serviço de Aplicações

Concluído

Nesta unidade, analisamos como o log de aplicativos pode ajudar com seus aplicativos Web e mostramos como habilitar esses logs.

O que são os registos de aplicações?

O Azure fornece diagnósticos internos com registro em log de aplicativos. Os registos de aplicações são o resultado de instruções de rastreio de runtime no código da aplicação. Por exemplo, talvez você queira verificar alguma lógica em seu código adicionando um rastreamento para mostrar quando uma determinada função está sendo processada. Ou, talvez você só queira ver uma mensagem registrada quando um determinado nível de erro tiver ocorrido. O registro em log de aplicativos é principalmente para aplicativos em pré-produção e para problemas problemáticos, porque logs excessivos podem causar um impacto no desempenho e consumir armazenamento rapidamente. Por esse motivo, o registro no sistema de arquivos é desativado automaticamente após 12 horas.

O log de aplicativos tem limitações de escala, principalmente porque os arquivos estão sendo usados para salvar a saída registrada. Se você tiver várias instâncias de um aplicativo e o mesmo armazenamento for compartilhado em todas as instâncias, as mensagens de instâncias diferentes poderão ser intercaladas, dificultando a solução de problemas. Se cada instância tiver seu próprio arquivo de log, haverá vários logs, dificultando novamente a solução de problemas específicos da instância.

Os tipos de registos disponíveis através do Serviço de Aplicações do Azure variam consoante a arquitetura de código da aplicação e caso a execução da aplicação seja feita num anfitrião de aplicações do Windows ou do Linux.

ASP.NET

As aplicações ASP.NET apenas funcionam nos serviços de aplicações do Windows. Para registar informações no registo de diagnósticos da aplicação, utilize a classe System.Diagnostics.Trace. Há quatro níveis de rastreamento que você pode usar, que se correlacionam com os errorníveis , , warninginformatione verbose níveis de log mostrados no portal do Azure:

  • Trace.TraceError("Message"); // Escreve uma mensagem de erro
  • Trace.TraceWarning("Message"); // Escreve uma mensagem de aviso
  • Trace.TraceInformation("Message"); // Escreve uma mensagem informativa
  • Trace.WriteLine("Message"); // Escreve uma mensagem verbosa

Aplicações ASP.NET Core

As aplicações ASP.NET Core podem ser executadas no Windows ou no Linux. Para registar informações nos registos de aplicações do Azure, utilize a classe logger factory e, em seguida, utilize um dos seis níveis de registo:

  • logger.LogCritical("Message"); // Escreve uma mensagem crítica no nível de registo 5
  • logger.LogError("Message"); // Escreve uma mensagem de erro no nível de registo 4
  • logger.LogWarning("Message"); // Escreve uma mensagem de aviso no nível de registo 3
  • logger.LogInformation("Message"); // Escreve uma mensagem informativa no nível de registo 2
  • logger.LogDebug("Message"); // Escreve uma mensagem de depuração no nível de registo 1
  • logger.LogTrace("Message"); // Escreve uma mensagem de rastreio detalhada no nível de registo 0

Para as aplicações ASP.NET Core no Windows, estas mensagens estão relacionadas com os filtros do portal do Azure da seguinte forma:

  • Os níveis 4 e 5 são mensagens de erro .
  • O nível 3 é uma mensagem de aviso .
  • O nível 2 é uma mensagem informativa .
  • Os níveis 0 e 1 são mensagens detalhadas .

Para aplicativos ASP.NET Core no Linux, apenas mensagens de erro (níveis 4 e 5) são registradas.

Aplicações em Node.js

Para aplicações Web baseadas em scripts, como as aplicações Node.js no Windows ou no Linux, o registo de aplicações é ativado com o método console():

  • console.error("Mensagem"); // Escreve uma mensagem para STDERR.
  • console.log("Mensagem"); // Escreve uma mensagem para STDOUT.

Ambos os tipos de mensagem são gravados nos logs de nível de erro do serviço de aplicativo do Azure.

Diferenças de registo entre os anfitriões do Windows e do Linux

Para encaminhar mensagens para ficheiros de registo, as aplicações Web do Azure utilizam o servidor Web (processo do IIS). Como as aplicações Web baseadas no Windows são um serviço do Azure consolidado e as mensagens para aplicações ASP.NET estão totalmente integradas no serviço do IIS subjacente, as aplicações do Windows tiram partido de uma avançada infraestrutura de registo. Para outros aplicativos, as opções de registro em log são limitadas pela plataforma de desenvolvimento, mesmo quando executadas em um serviço de aplicativo do Windows.

A imagem do Docker usada para o contêiner do aplicativo determina a funcionalidade de registro disponível para aplicativos com script baseados em Linux, como o Node. O registro em log básico, como o uso de redirecionamentos para STDERR ou STDOUT, usa os logs do Docker. A funcionalidade de registro mais rica depende da imagem subjacente e se ela está executando PHP, Perl, Ruby e assim por diante. Para transferir o registo de aplicações Web equivalente, conforme fornecido pelo IIS para aplicações Windows, poderá ser necessário ligar ao seu contentor através de SSH.

A tabela seguinte resume o suporte de registo para ambientes de aplicações e anfitriões comuns.

Ambiente da aplicação Host Níveis de registo Guardado na localização
ASP.NET Windows Erro, Aviso, Informativo, Verboso Sistema de ficheiros/Armazenamento de Blobs
ASP.NET Core Windows Erro, Aviso, Informativo, Verboso Sistema de ficheiros/Armazenamento de Blobs
ASP.NET Core Linux Erro Sistema de ficheiros
Node.js Windows Erro (STDERR), Informativo (STDOUT), Aviso, Verboso Sistema de ficheiros/Armazenamento de Blobs
Node.js Linux Erro Sistema de ficheiros
Java Linux Erro Sistema de ficheiros

Alternativas a diagnósticos de aplicações

O Azure Application Insights é uma extensão de site que fornece mais recursos de monitoramento de desempenho, como dados detalhados de uso e desempenho. Ele foi projetado para implantações de aplicativos de produção e é uma ferramenta de desenvolvimento potencialmente útil. O Application Insights funciona com uma variedade de ambientes de programação de aplicações e fornece o mesmo conjunto de dados de telemetria e desempenho avançados, quer a aplicação seja ASP.NET ou Node. No entanto, para utilizar o Application Insights, é necessário incluir código específico na sua aplicação com o SDK do Application Insights. O Application Insights também é um serviço faturável. Portanto, dependendo da escala das implantações do seu aplicativo e dos dados coletados, talvez seja necessário planejar os custos regulares.

Você também pode visualizar métricas para seu aplicativo, o que pode ajudá-lo a traçar o perfil de como seu aplicativo está operando. Estes contadores são úteis na produção e desenvolvimento. Pode ver a utilização da CPU, da memória, da rede e do sistema de ficheiros, e definir alertas para quando um contador atingir um limiar específico. A faturação de métricas é abrangida pelo escalão do plano do serviço de aplicações.

Ativar o registo através do portal do Azure

No portal, o registo de aplicações é gerido no painel Registos de diagnóstico da aplicação Web.

Screenshot of Diagnostics logs pane in the Azure portal.

Para ativar o registo de aplicações no sistema de ficheiros da aplicação Web, defina Registo de aplicações (Sistema de ficheiros) como Ativado e, em seguida, defina o Nível como Erro, Aviso, Informativo ou Verboso. O registro no sistema de arquivos será automaticamente redefinido para Desativado após 12 horas.

Para habilitar o log de aplicativos em um contêiner de armazenamento de blob, defina Log de aplicativos (Blob) como Ativado e selecione uma conta de armazenamento e um contêiner. A conta de armazenamento e o aplicativo Web devem ser criados na mesma região do Azure. Em seguida, defina o Nível para Erro, Aviso, Informativo ou Verboso.

Nota

A opção para guardar no armazenamento de blobs não está disponível para registos de aplicações do Linux.

Ao proceder ao registo no armazenamento de blobs, também tem de definir um Período de Retenção. Ao contrário dos logs do sistema de arquivos, os logs de blob nunca são excluídos por padrão. A opção de período de retenção significa que todos os logs anteriores ao número de dias especificado são excluídos.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

Após configurar os registos, selecione Guardar.

Ativar o registo através da CLI do Azure

Para ativar o registo de aplicações no sistema de ficheiros, execute o seguinte comando.

az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>

Por exemplo, para ativar o registo no sistema de ficheiros para uma aplicação chamada contosofashions123 e capturar todas as mensagens, execute o seguinte comando.

az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG

Atualmente, não há como desabilitar o log de aplicativos usando comandos da CLI do Azure. No entanto, o comando a seguir redefine o log do sistema de arquivos apenas para o nível de erro.

az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>

Para ver o estado do registo atual para uma aplicação, utilize o seguinte comando.

az webapp log show --name <app-name> --resource-group <resource-group-name>

Verifique o seu conhecimento

1.

Que tipos de aplicações Web podem guardar registos no armazenamento de Blobs do Azure?

2.

Porque é que o registo do sistema de ficheiros é desativado automaticamente após 12 horas?