Rever os resultados do teste TrackAvailability()

Este artigo explica como revisar os resultados do teste TrackAvailability() no portal do Azure e consultar os dados usando o Log Analytics. Os testespadrão devem ser sempre usados, se possível , pois exigem pouco investimento, nenhuma manutenção e têm poucos pré-requisitos.

Pré-requisitos

Importante

TrackAvailability() requer fazer um investimento do desenvolvedor em escrever e manter código personalizado potencialmente complexo.

Verificar disponibilidade

Comece revisando o gráfico na guia Disponibilidade do recurso do Application Insights.

Nota

Os testes criados com TrackAvailability() aparecerão com CUSTOM ao lado do nome do teste.

Captura de tela que mostra a guia Disponibilidade com resultados bem-sucedidos.

Para ver os detalhes da transação de ponta a ponta, em Detalhar, selecione Bem-sucedido ou Reprovado. Em seguida, selecione uma amostra. Você também pode chegar aos detalhes da transação de ponta a ponta selecionando um ponto de dados no gráfico.

Captura de tela que mostra a seleção de um teste de disponibilidade de exemplo.

Captura de tela que mostra detalhes da transação de ponta a ponta.

Consulta no Log Analytics

Você pode usar o Log Analytics para exibir seus resultados de disponibilidade, dependências e muito mais. Para saber mais sobre o Log Analytics, consulte Visão geral da consulta de log.

Captura de ecrã que mostra os resultados da disponibilidade.

Captura de ecrã que mostra o separador Nova Consulta com dependências limitadas a 50.

Exemplo de código básico

Nota

Este exemplo foi projetado exclusivamente para mostrar a mecânica de como a TrackAvailability() chamada de API funciona em uma função do Azure. Ele não mostra como escrever o código de teste HTTP subjacente ou a lógica de negócios necessária para transformar este exemplo em um teste de disponibilidade totalmente funcional. Por padrão, se você percorrer este exemplo, estará criando um teste HTTP GET de disponibilidade básica.

Para seguir estas instruções, você deve usar o plano dedicado para permitir a edição de código no Editor do Serviço de Aplicativo.

Criar uma função de gatilho de temporizador

  1. Crie um recurso do Azure Functions.

    • Se você já tiver um recurso do Application Insights:

      • Por padrão, o Azure Functions cria um recurso do Application Insights. Mas se você quiser usar um recurso criado anteriormente, deverá especificá-lo durante a criação.

      • Siga as instruções sobre como criar um recurso do Azure Functions com a seguinte modificação:

        Na guia Monitoramento, selecione a caixa suspensa Application Insights e insira ou selecione o nome do seu recurso.

        Captura de tela que mostra a seleção do recurso existente do Application Insights na guia Monitoramento.

    • Se você ainda não tiver um recurso do Application Insights criado para sua função acionada por temporizador:

      • Por padrão, quando você cria seu aplicativo Azure Functions, ele cria um recurso do Application Insights para você. Siga as instruções sobre como criar um recurso do Azure Functions.

    Nota

    Você pode hospedar suas funções em um plano de Consumo, Premium ou Serviço de Aplicativo. Se você estiver testando atrás de uma rede virtual ou testando pontos de extremidade não públicos, precisará usar o plano Premium no lugar do plano de consumo. Selecione seu plano na guia Hospedagem . Verifique se a versão mais recente do .NET está selecionada ao criar o aplicativo de função.

  2. Crie uma função de gatilho de temporizador.

    1. No seu aplicativo de funções, selecione a guia Funções .
    2. Selecione Adicionar. No painel Adicionar funções, selecione as seguintes configurações:
      1. Ambiente de desenvolvimento: Desenvolver no portal
      2. Selecione um modelo: Gatilho de temporizador
    3. Selecione Adicionar para criar a função de gatilho de temporizador.

    Captura de tela que mostra como adicionar uma função de gatilho de temporizador ao seu aplicativo de função.

Adicionar e editar código no Editor do Serviço de Aplicativo

Vá para seu aplicativo de função implantado e, em Ferramentas de Desenvolvimento, selecione a guia Editor do Serviço de Aplicativo.

Para criar um novo arquivo, clique com o botão direito do mouse na função de gatilho do temporizador (por exemplo, TimerTrigger1) e selecione Novo arquivo. Em seguida, digite o nome do arquivo e selecione Enter.

  1. Crie um novo arquivo chamado function.proj e cole o seguinte código:

    <Project Sdk="Microsoft.NET.Sdk"> 
        <PropertyGroup> 
            <TargetFramework>netstandard2.0</TargetFramework> 
        </PropertyGroup> 
        <ItemGroup> 
            <PackageReference Include="Microsoft.ApplicationInsights" Version="2.15.0" /> <!-- Ensure you’re using the latest version --> 
        </ItemGroup> 
    </Project> 
    

     Captura de tela que mostra function.proj no Editor do Serviço de Aplicativo.

  2. Crie um novo arquivo chamado runAvailabilityTest.csx e cole o seguinte código:

    using System.Net.Http; 
    
    public async static Task RunAvailabilityTestAsync(ILogger log) 
    { 
        using (var httpClient = new HttpClient()) 
        { 
            // TODO: Replace with your business logic 
            await httpClient.GetStringAsync("https://www.bing.com/"); 
        } 
    } 
    
  3. Defina a variável de ambiente como um local de disponibilidade válido do REGION_NAME Azure.

    Execute o seguinte comando na CLI do Azure para listar as regiões disponíveis.

    az account list-locations -o table
    
  4. Copie o código a seguir para o arquivo run.csx . (Você substitui o código pré-existente.)

    #load "runAvailabilityTest.csx" 
    
    using System; 
    
    using System.Diagnostics; 
    
    using Microsoft.ApplicationInsights; 
    
    using Microsoft.ApplicationInsights.Channel; 
    
    using Microsoft.ApplicationInsights.DataContracts; 
    
    using Microsoft.ApplicationInsights.Extensibility; 
    
    private static TelemetryClient telemetryClient; 
    
    // ============================================================= 
    
    // ****************** DO NOT MODIFY THIS FILE ****************** 
    
    // Business logic must be implemented in RunAvailabilityTestAsync function in runAvailabilityTest.csx 
    
    // If this file does not exist, please add it first 
    
    // ============================================================= 
    
    public async static Task Run(TimerInfo myTimer, ILogger log, ExecutionContext executionContext) 
    
    { 
        if (telemetryClient == null) 
        { 
            // Initializing a telemetry configuration for Application Insights based on connection string 
    
            var telemetryConfiguration = new TelemetryConfiguration(); 
            telemetryConfiguration.ConnectionString = Environment.GetEnvironmentVariable("APPLICATIONINSIGHTS_CONNECTION_STRING"); 
            telemetryConfiguration.TelemetryChannel = new InMemoryChannel(); 
            telemetryClient = new TelemetryClient(telemetryConfiguration); 
        } 
    
        string testName = executionContext.FunctionName; 
        string location = Environment.GetEnvironmentVariable("REGION_NAME"); 
        var availability = new AvailabilityTelemetry 
        { 
            Name = testName, 
    
            RunLocation = location, 
    
            Success = false, 
        }; 
    
        availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString(); 
        availability.Context.Operation.Id = Activity.Current.RootId; 
        var stopwatch = new Stopwatch(); 
        stopwatch.Start(); 
    
        try 
        { 
            using (var activity = new Activity("AvailabilityContext")) 
            { 
                activity.Start(); 
                availability.Id = Activity.Current.SpanId.ToString(); 
                // Run business logic 
                await RunAvailabilityTestAsync(log); 
            } 
            availability.Success = true; 
        } 
    
        catch (Exception ex) 
        { 
            availability.Message = ex.Message; 
            throw; 
        } 
    
        finally 
        { 
            stopwatch.Stop(); 
            availability.Duration = stopwatch.Elapsed; 
            availability.Timestamp = DateTimeOffset.UtcNow; 
            telemetryClient.TrackAvailability(availability); 
            telemetryClient.Flush(); 
        } 
    } 
    
    

Exemplo de código de teste da Web em várias etapas

Siga as mesmas instruções acima e, em vez disso, cole o seguinte código no arquivo runAvailabilityTest.csx :

using System.Net.Http; 

public async static Task RunAvailabilityTestAsync(ILogger log) 
{ 
    using (var httpClient = new HttpClient()) 
    { 
        // TODO: Replace with your business logic 
        await httpClient.GetStringAsync("https://www.bing.com/"); 

        // TODO: Replace with your business logic for an additional monitored endpoint, and logic for additional steps as needed
        await httpClient.GetStringAsync("https://www.learn.microsoft.com/"); 
    } 
}

Próximos passos