Testresultaten van TrackAvailability() controleren

In dit artikel wordt uitgelegd hoe u testresultaten van TrackAvailability() controleert in Azure Portal en hoe u een query uitvoert op de gegevens met behulp van Log Analytics. Standaardtestsmoeten altijd, indien mogelijk , worden gebruikt, omdat ze weinig investeringen, geen onderhoud vereisen en weinig vereisten hebben.

Vereisten

Belangrijk

TrackAvailability() vereist dat ontwikkelaars investeren in het schrijven en beheren van mogelijk complexe aangepaste code.

Beschikbaarheid controleren

Bekijk eerst de grafiek op het tabblad Beschikbaarheid van uw Application Insights-resource.

Notitie

Tests die zijn gemaakt met TrackAvailability() , worden weergegeven met AANGEPAST naast de testnaam.

Schermopname van het tabblad Beschikbaarheid met geslaagde resultaten.

Als u de details van de end-to-end-transactie wilt zien, selecteert u geslaagd of mislukt onder Inzoomen. Selecteer vervolgens een voorbeeld. U kunt ook naar de end-to-end transactiedetails gaan door een gegevenspunt in de grafiek te selecteren.

Schermopname van het selecteren van een voorbeeld van een beschikbaarheidstest.

Schermopname van end-to-end transactiegegevens.

Query in Log Analytics

U kunt Log Analytics gebruiken om uw beschikbaarheidsresultaten, afhankelijkheden en meer weer te geven. Zie het overzicht van logquery's voor meer informatie over Log Analytics.

Schermopname van beschikbaarheidsresultaten.

Schermopname van het tabblad Nieuwe query met afhankelijkheden beperkt tot 50.

Voorbeeld van basiscode

Notitie

Dit voorbeeld is alleen ontworpen om u te laten zien hoe de TrackAvailability() API-aanroep werkt binnen een Azure-functie. U ziet niet hoe u de onderliggende HTTP-testcode of bedrijfslogica schrijft die nodig is om dit voorbeeld om te zetten in een volledig functionele beschikbaarheidstest. Als u dit voorbeeld doorloopt, maakt u standaard een HTTP GET-basistest voor beschikbaarheid.

Als u deze instructies wilt volgen, moet u het toegewezen plan gebruiken om bewerkingscode in App Service Editor toe te staan.

Een timertriggerfunctie maken

  1. Maak een Azure Functions-resource.

    • Als u al een Application Insights-resource hebt:

      • Azure Functions maakt standaard een Application Insights-resource. Maar als u een resource wilt gebruiken die u eerder hebt gemaakt, moet u dat opgeven tijdens het maken.

      • Volg de instructies voor het maken van een Azure Functions-resource met de volgende wijziging:

        Selecteer op het tabblad Bewaking de vervolgkeuzelijst Application Insights en voer de naam van uw resource in of selecteer deze.

        Schermopname van het selecteren van uw bestaande Application Insights-resource op het tabblad Bewaking.

    • Als u nog geen Application Insights-resource hebt gemaakt voor uw door timer geactiveerde functie:

    Notitie

    U kunt uw functies hosten op een Verbruiks-, Premium- of App Service-abonnement. Als u test achter een virtueel netwerk of niet-openbare eindpunten test, moet u het Premium-abonnement gebruiken in plaats van het Verbruiksabonnement. Selecteer uw abonnement op het tabblad Hosting . Zorg ervoor dat de meest recente .NET-versie is geselecteerd wanneer u de functie-app maakt.

  2. Een timertriggerfunctie maken.

    1. Selecteer het tabblad Functions in uw functie-app.
    2. Selecteer Toevoegen. Selecteer in het deelvenster Functie toevoegen de volgende configuraties:
      1. Ontwikkelomgeving: Ontwikkelen in portal
      2. Selecteer een sjabloon: Timertrigger
    3. Selecteer Toevoegen om de timertriggerfunctie te maken.

    Schermopname van het toevoegen van een timertriggerfunctie aan uw functie-app.

Code toevoegen en bewerken in de App Service-editor

Ga naar de geïmplementeerde functie-app en selecteer onder Ontwikkelhulpprogramma's het tabblad App Service-editor .

Als u een nieuw bestand wilt maken, klikt u met de rechtermuisknop onder de timertriggerfunctie (bijvoorbeeld TimerTrigger1) en selecteert u Nieuw bestand. Voer vervolgens de naam van het bestand in en selecteer Enter.

  1. Maak een nieuw bestand met de naam function.proj en plak de volgende code:

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

     Schermopname van function.proj in de App Service-editor.

  2. Maak een nieuw bestand met de naam runAvailabilityTest.csx en plak de volgende code:

    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. Definieer de REGION_NAME omgevingsvariabele als een geldige Azure-beschikbaarheidslocatie.

    Voer de volgende opdracht uit in de Azure CLI om beschikbare regio's weer te geven.

    az account list-locations -o table
    
  4. Kopieer de volgende code naar het bestand run.csx . (U vervangt de bestaande code.)

    #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(); 
        } 
    } 
    
    

Voorbeeld van webtestcode met meerdere stappen

Volg de bovenstaande instructies en plak in plaats daarvan de volgende code in het bestand 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/"); 
    } 
}

Volgende stappen