Überprüfen der TrackAvailability()-Testergebnisse

In diesem Artikel wird erläutert, wie Sie die TrackAvailability()-Testergebnisse im Azure-Portal überprüfen und die Daten mithilfe von Log Analytics abfragen. Nach Möglichkeit sollten immer Standardtests verwendet werden, da sie nur geringe Investitionen, keine Wartung und nur wenige Voraussetzungen erfordern.

Voraussetzungen

Wichtig

TrackAvailability() erfordert eine Investition der Entwickler*innen in das Schreiben und Verwalten von potenziell komplexem benutzerdefiniertem Code.

Überprüfen der Verfügbarkeit

Überprüfen Sie zunächst das Diagramm auf der Registerkarte Verfügbarkeit Ihrer Application Insights-Ressource.

Hinweis

Bei mit TrackAvailability() erstellten Tests wird neben dem Testnamen Benutzerdefiniert angezeigt.

Screenshot der Registerkarte „Verfügbarkeit“ mit erfolgreichen Ergebnissen.

Wählen Sie zum Anzeigen der End-to-End-Transaktionsdetails unter Drilldown die Option Erfolgreich oder Fehler aus. Wählen Sie dann ein Beispiel aus. Sie können auf die End-to-End-Transaktionsdetails auch zugreifen, indem Sie im Graphen einen Datenpunkt auswählen.

Screenshot des Auswählens eines Beispiels für einen Verfügbarkeitstest.

Screenshot der „End-to-End-Transaktionsdetails“.

Abfragen in Log Analytics

Sie können Log Analytics verwenden, um Ihre Verfügbarkeitsergebnisse, Abhängigkeiten und mehr anzuzeigen. Weitere Informationen zu Log Analytics finden Sie unter Übersicht über Protokollabfragen.

Screenshot der Verfügbarkeitsergebnisse.

Screenshot der Registerkarte „Neue Abfrage“ mit den auf 50 beschränkten Abhängigkeiten.

Grundlegendes Codebeispiel

Hinweis

Dieses Beispiel wurde ausschließlich dazu entworfen, die Funktionsweise des API-Aufrufs TrackAvailability() innerhalb einer Azure-Funktion zu veranschaulichen. Es dient nicht zur Veranschaulichung des Schreibens des zugrunde liegenden HTTP-Testcodes bzw. der Geschäftslogik, die erforderlich ist, um dieses Beispiel in einen voll funktionsfähigen Verfügbarkeitstest umzuwandeln. Wenn Sie dieses Beispiel durchgehen, erstellen Sie standardmäßig einen HTTP GET-Test für einfache Verfügbarkeit.

Zum Befolgen dieser Anweisungen müssen Sie den dedizierten Plan verwenden, um die Bearbeitung von Code im App Service-Editor zu ermöglichen.

Erstellen einer Timertriggerfunktion

  1. Erstellen Sie eine Azure Functions-Ressource.

    • Wenn Sie schon eine Application Insights-Ressource verwenden:

      • Azure Functions erstellt standardmäßig eine Application Insights-Ressource. Wenn Sie jedoch eine zuvor erstellte Ressource verwenden möchten, müssen Sie dies während der Erstellung angeben.

      • Folgen Sie den Anweisungen zur Erstellung einer Azure Functions-Ressource mit den folgenden Modifikationen:

        Wählen Sie auf der Registerkarte Überwachung das Dropdownfeld Application Insights aus, und geben Sie dann den Namen Ihrer Ressource ein, oder wählen Sie ihn aus.

        Screenshot des Auswählens Ihrer vorhandenen Application Insights-Ressource auf der Registerkarte „Überwachung“.

    • Falls Sie noch keine Application Insights-Ressource für ihre per Timer ausgelöste Funktion erstellt haben:

    Hinweis

    Sie können Ihre Funktionen in einem Verbrauchs-, Premium- oder App Service-Plan hosten. Wenn Sie hinter einem virtuellen Netzwerk testen oder nicht öffentliche Endpunkte testen, müssen Sie anstelle des Verbrauchsplans den Premium-Plan verwenden. Wählen Sie auf der Registerkarte Hosting Ihren Plan aus. Stellen Sie sicher, dass beim Erstellen der Funktions-App die neueste .NET-Version ausgewählt ist.

  2. Erstellen Sie eine Timertriggerfunktion.

    1. Wählen Sie in Ihrer Funktions-App die Registerkarte Funktionen aus.
    2. Klicken Sie auf Hinzufügen. Wählen Sie im Bereich Funktion hinzufügen die folgenden Konfigurationen aus:
      1. Entwicklungsumgebung: Im Portal entwickeln
      2. Auswählen einer Vorlage: Timertrigger
    3. Wählen Sie Hinzufügen aus, um die Timertriggerfunktion zu erstellen.

    Screenshot des Hinzufügens einer Timertriggerfunktion zu Ihrer Funktions-App.

Hinzufügen und Bearbeiten von Code im App Service-Editor

Wechseln Sie zu Ihrer bereitgestellten Funktions-App, und wählen Sie unter Entwicklungstools die Registerkarte App Service-Editor aus.

Um eine neue Datei zu erstellen, klicken Sie mit der rechten Maustaste unter Ihrer Timertriggerfunktion (z. B. TimerTrigger1), und wählen Sie Neue Datei aus. Geben Sie dann den Namen der Datei ein, und wählen Sie die EINGABETASTE aus.

  1. Erstellen Sie eine neue Datei namens function.proj, und fügen Sie den folgenden Code ein:

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

    Screenshot von „function.proj“ im App Service-Editor.

  2. Erstellen Sie eine neue Datei namens runAvailabilityTest.csx, und fügen Sie den folgenden Code ein:

    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. Definieren Sie die Umgebungsvariable REGION_NAME als einen gültigen Azure-Verfügbarkeitsstandort.

    Führen Sie den folgenden Befehl in der Azure CLI aus, um verfügbare Regionen aufzulisten.

    az account list-locations -o table
    
  4. Kopieren Sie den folgenden Code in die Datei run.csx. (Sie ersetzen den bereits vorhandenen 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(); 
        } 
    } 
    
    

Beispiel für mehrstufigen Webtestcode

Befolgen Sie die gleichen obigen Anweisungen, und fügen Sie stattdessen den folgenden Code in die Datei runAvailabilityTest.csx ein:

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ächste Schritte