Granska TrackAvailability() testresultat

Den här artikeln beskriver hur du granskar TrackAvailability() testresultat i Azure-portalen och frågar efter data med Log Analytics. Standardtesterbör alltid användas om möjligt eftersom de kräver lite investeringar, inget underhåll och har få förutsättningar.

Förutsättningar

Viktigt!

TrackAvailability() kräver att en utvecklare investerar i att skriva och maintanining potentiellt komplex anpassad kod.

Kontrollera tillgänglighet

Börja med att granska diagrammet på fliken Tillgänglighet för application insights-resursen.

Kommentar

Tester som skapas med TrackAvailability() visas med CUSTOM bredvid testnamnet.

Skärmbild som visar fliken Tillgänglighet med lyckade resultat.

Om du vill se transaktionsinformationen från slutpunkt till slutpunkt går du till Detaljnivå och väljer Lyckad eller Misslyckad. Välj sedan ett exempel. Du kan också komma till transaktionsinformationen från slutpunkt till slutpunkt genom att välja en datapunkt i diagrammet.

Skärmbild som visar hur du väljer ett exempel på tillgänglighetstest.

Skärmbild som visar transaktionsinformation från slutpunkt till slutpunkt.

Fråga i Log Analytics

Du kan använda Log Analytics för att visa dina tillgänglighetsresultat, beroenden med mera. Mer information om Log Analytics finns i Översikt över loggfrågor.

Skärmbild som visar tillgänglighetsresultat.

Skärmbild som visar fliken Ny fråga med beroenden begränsade till 50.

Grundläggande kodexempel

Kommentar

Det här exemplet är utformat enbart för att visa hur API-anropet TrackAvailability() fungerar i en Azure-funktion. Den visar inte hur du skriver den underliggande HTTP-testkoden eller affärslogik som krävs för att omvandla det här exemplet till ett fullständigt funktionellt tillgänglighetstest. Om du går igenom det här exemplet skapar du som standard ett HTTP GET-test för grundläggande tillgänglighet.

Om du vill följa dessa instruktioner måste du använda den dedikerade planen för att tillåta redigering av kod i App Service-redigeraren.

Skapa en timerutlösarfunktion

  1. Skapa en Azure Functions-resurs.

    • Om du redan har en Application Insights-resurs:

      • Som standard skapar Azure Functions en Application Insights-resurs. Men om du vill använda en resurs som du skapade tidigare måste du ange den när du skapar den.

      • Följ anvisningarna för hur du skapar en Azure Functions-resurs med följande ändring:

        På fliken Övervakning väljer du listrutan Application Insights och anger eller väljer sedan namnet på resursen.

        Skärmbild som visar hur du väljer din befintliga Application Insights-resurs på fliken Övervakning.

    • Om du inte har skapat någon Application Insights-resurs ännu för den tidsinställda funktionen:

      • När du skapar ditt Azure Functions-program skapar det som standard en Application Insights-resurs åt dig. Följ anvisningarna om hur du skapar en Azure Functions-resurs.

    Kommentar

    Du kan vara värd för dina funktioner på en förbruknings-, Premium- eller App Service-plan. Om du testar bakom ett virtuellt nätverk eller testar icke-offentliga slutpunkter måste du använda Premium-planen i stället för förbrukningsplanen. Välj din plan på fliken Värd . Kontrollera att den senaste .NET-versionen är markerad när du skapar funktionsappen.

  2. Skapa en timerutlösarfunktion.

    1. I funktionsappen väljer du fliken Funktioner .
    2. Markera Lägga till. I fönstret Lägg till funktion väljer du följande konfigurationer:
      1. Utvecklingsmiljö: Utveckla i portalen
      2. Välj en mall: Timerutlösare
    3. Välj Lägg till för att skapa timerutlösarfunktionen.

    Skärmbild som visar hur du lägger till en timerutlösarfunktion i funktionsappen.

Lägga till och redigera kod i App Service-redigeraren

Gå till din distribuerade funktionsapp och under Utvecklingsverktyg väljer du fliken App Service-redigerare .

Om du vill skapa en ny fil högerklickar du under timerutlösarens funktion (till exempel TimerTrigger1) och väljer Ny fil. Ange sedan namnet på filen och välj Retur.

  1. Skapa en ny fil med namnet function.proj och klistra in följande kod:

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

     Skärmbild som visar function.proj i App Service-redigeraren.

  2. Skapa en ny fil med namnet runAvailabilityTest.csx och klistra in följande kod:

    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. REGION_NAME Definiera miljövariabeln som en giltig Azure-tillgänglighetsplats.

    Kör följande kommando i Azure CLI för att lista tillgängliga regioner.

    az account list-locations -o table
    
  4. Kopiera följande kod till filen run.csx . (Du ersätter den befintliga koden.)

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

Exempel på webbtestkod i flera steg

Följ samma instruktioner ovan och klistra i stället in följande kod i filen 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/"); 
    } 
}

Nästa steg