Exercício – Adicionar registro em log e monitorar uma função do Azure no portal
Na unidade anterior, você aprendeu sobre alguns dos benefícios de incorporar o Application Insights em seu aplicativo de funções. Também aprendeu sobre alguns dos outros recursos de registro em log que estão disponíveis para sua equipe de desenvolvedores.
Nesta etapa da pesquisa do projeto, você implantou o aplicativo de funções no Azure usando o Maven e testou o aplicativo de funções na produção. A próxima tarefa é adicionar a funcionalidade de acompanhamento e registro em log ao seu aplicativo.
Neste exercício, atualize os arquivos de configuração do projeto de função para dar suporte ao streaming de logs e ao Application Insights. Você também aprenderá a adicionar rastreamento personalizado e disparos de eventos do Application Insights ao código do seu projeto.
Transmitir logs em tempo real
Agora que seu Aplicativo de Funções está implantado e em execução no Azure, você poderá solucionar problemas usando o comando simples da CLI do Azure para obter o streaming de logs em tempo real do aplicativo.
No portal do Azure, na página Visão geral da sua função HttpExample. Use o ícone Copiar para área de transferência para copiar o valor do seu Grupo de recursos e Aplicativo de funções.
Na janela do Azure Cloud Shell, insira o comando
az webapp log tail -n <functionAppName> -g <resourceGroup>
para transmitir os registros. Substitua<functionAppName>
e<resourceGroup>
pelos valores que você salvou na etapa anterior. Por exemplo:az webapp log tail -n event-reporting-20240125192009873 -g learn-f0af729c-0493-4b45-a5b8-d6b4783b03da
Você deverá ver uma saída como a mensagem a seguir.
2024-01-25T20:44:58 Welcome, you are now connected to log-streaming service. The default timeout is 2 hours. Change the timeout with the App Setting SCM_LOGSTREAM_TIMEOUT (in seconds). 2024-01-25T20:45:58 No new trace in the past 1 min(s).
Abra uma nova guia no navegador da Web e cole a URL totalmente construída no exercício anterior para acessar o aplicativo de funções e gerar alguns logs.
Quando terminar o teste, pressione Ctrl+C no Cloud Shell para fechar o fluxo de logs.
Adicionando instrumentação ao seu projeto Java para o Application Insights
Agora que o Application Insights está habilitado no seu aplicativo, sua próxima tarefa será habilitá-lo no seu aplicativo. Para habilitar o registro de aplicativos e o Application Insights, será necessário modificar os arquivos de configuração para incluir as bibliotecas necessárias e outras dependências.
Há dois arquivos de configuração que você precisa atualizar: pom.xml e host.json.
Modificação do arquivo pom.xml
Usando o Azure Cloud Shell, altere o diretório para a raiz do seu projeto:
cd ~/event-reporting
Abra o arquivo pom.xml no editor de código do Cloud Shell:
code pom.xml
Adicione os seguintes elementos à seção autônoma
<dependencies>
para habilitar o Application Insights para o seu aplicativo:<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-web-auto</artifactId> <version>2.6.0</version> </dependency>
Observação
Verifique se você adicionou o
<dependency>
para Application Insights à coleção<dependencies>
autônoma, não à coleção<dependencies>
contida no elemento<dependencyManagement>
.Pressione Ctrl+S para salvar o arquivo pom.xml e, em seguida, pressione Ctrl+Q para fechar o Editor de códigos.
Modificação do arquivo host.json
Abra o arquivo host.json no editor de código do Cloud Shell:
code host.json
Remova o código JSON existente e substitua-o pelas seguintes configurações:
{ "version": "2.0", "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[1.*, 2.0.0)" }, "logging": { "fileLoggingMode": "always", "logLevel": { "default": "Information" } }, "applicationInsights": { "samplingSettings": { "isEnabled": true, "maxTelemetryItemsPerSecond" : 5 } } }
As configurações para
extensionBundle
já foram definidas, mas ologging
eapplicationInsights
definem várias configurações para esses recursos.Pressione Ctrl+S para salvar seu arquivo host.json e, em seguida, pressione Ctrl+Q para fechar o editor de código.
Adição de registro em log e acompanhamento do Application Insights ao código do projeto
Para melhorar a utilidade dos dados coletados pelo Application Insights que aparecem em seus arquivos de log, é necessário adicionar alguns comandos de registros de dados ao código do aplicativo.
Adição do registro em log ao arquivo Function.java
Para adicionar o registro em log geral à sua função, você pode adicionar código como o exemplo a seguir em pontos-chave do código do aplicativo, no qual você substitui a cadeia de caracteres [LOG MESSAGE]
por uma mensagem que deseja ver nos arquivos de log do aplicativo.
context.getLogger().info("[LOG MESSAGE]");
Para adicionar o registro em log ao seu aplicativo, use as etapas a seguir.
Abra o arquivo Function.java do seu aplicativo no editor do Cloud Shell:
code ~/event-reporting/src/main/java/com/contoso/functions/Function.java
Se você examinar o código existente, perceberá que já existe um comando
context.getLogger()
; é a primeira instrução após a definição da funçãorun()
.Localize a seguinte seção de código, que testa se há uma cadeia de caracteres de consulta GET vazia ou uma solicitação POST vazia:
if (name == null) { return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build(); } else { return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build(); }
Modifique esta seção de código para que ela contenha dois comandos
context.getLogger()
que devolvem o status da sua função ao sistema de registro em log:if (name == null) { context.getLogger().info("Execution failure - Incorrect or missing parameter used."); return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build(); } else { context.getLogger().info("Execution success - name parameter = " + name); return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build(); }
Pressione Ctrl+S para salvar o arquivo Function.java, mas não feche o editor; você adicionará código ao seu aplicativo na próxima seção deste exercício.
Adição de acompanhamento do Application Insights ao arquivo Function.java
Adicione a seguinte instrução
import
ao conjunto existente de importações; essa instrução importa a biblioteca de telemetria do Application Insights:import com.microsoft.applicationinsights.TelemetryClient;
Adicione a definição a seguir à classe
Function()
do seu aplicativo; esta instrução instancia um objetoTelemetryClient
:private TelemetryClient telemetry = new TelemetryClient();
Copie cada uma das instruções
context.getLogger()
e modifique o código para que cada uma das entradas duplicadas chametelemetry.trackEvent()
em vez decontext.getLogger()
:. . . context.getLogger().info("Java HTTP trigger processed a request."); telemetry.trackEvent("Java HTTP trigger processed a request."); // Parse query parameter String query = request.getQueryParameters().get("name"); String name = request.getBody().orElse(query); if (name == null) { context.getLogger().info("Execution failure - Incorrect or missing parameter used."); telemetry.trackEvent("Execution failure - Incorrect or missing parameter used."); return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build(); } else { context.getLogger().info("Execution success - name parameter = " + name); telemetry.trackEvent("Execution success - name parameter = " + name); return request.createResponseBuilder(HttpStatus.OK).body("Hi, " + name).build(); } . . .
Pressione Ctrl+S para salvar seu arquivo Function.java e, em seguida, pressione Ctrl+Q para fechar o editor de código.
A última coisa a fazer é criar, empacotar e reimplantar seu aplicativo de funções.
cd ~/event-reporting mvn clean package azure-functions:deploy
Agora, a coleta de dados do registro em log e do Application Insights foi adicionada à sua função.
Uso do Application Insights para monitorar sua função do Azure
Agora seu aplicativo está atualizado para dar suporte ao registro em log refinado com o agente de log do sistema e o Application Insights.
Para gerar alguns exemplos de tráfego HTTP, copie a URL que você usou para testar o aplicativo em um navegador da Web no exercício anterior. Use essa URL com cURL para criar um loop no Azure Cloud Shell; por exemplo:
while :; do curl https://event-reporting-20200102030405006.azurewebsites.net/api/HttpExample?name=Bob; sleep 1; done
Entre no portal do Azure usando a mesma conta que você utilizou para ativar a área restrita.
Selecione Todos os recursos no menu à esquerda.
Selecione a função na lista de recursos; para este exercício, o nome da sua função começa com relatório de eventos. Por exemplo: event-reporting-20200102030405006.
Exiba sua atividade de Streaming de log:
Selecione o Fluxo de log no menu Aplicativo de funções.
Abra a lista suspensa Logs do App Insights e selecione Logs do Sistema de Arquivos.
Observe que o tráfego de amostra gera uma série de entradas de log.
Exiba sua atividade do Live Metrics:
Selecione a lista suspensa Logs do Sistema de Arquivos e selecione Logs do App Insights.
Selecione Abrir em Métricas Dinâmicas. Agora você pode ver que o seu tráfego de amostra gera resultados do Application Insights e Métricas Dinâmicas.
Parabéns, você configurou com êxito seu Azure Function para o registro em log detalhado.
Antes de continuar, volte para o Cloud Shell e pressione CTRL+C para fechar o loop de comando.