Ü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
- Arbeitsbereichsbasierte Application Insights-Ressource
- Zugriff auf den Quellcode einer Funktions-App in Azure Functions
- Entwicklerkenntnisse zum Erstellen von benutzerdefiniertem Code für TrackAvailability(), der auf Ihre spezifischen Geschäftsanforderungen zugeschnitten ist
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.
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.
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.
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
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.
Falls Sie noch keine Application Insights-Ressource für ihre per Timer ausgelöste Funktion erstellt haben:
- Wenn Sie Ihre Azure Functions-Anwendung erstellen, wird standardmäßig eine Application Insights-Ressource für Sie erstellt. Folgen Sie den Anweisungen zur Erstellung einer Azure Functions-Ressource.
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.
Erstellen Sie eine Timertriggerfunktion.
- Wählen Sie in Ihrer Funktions-App die Registerkarte Funktionen aus.
- Klicken Sie auf Hinzufügen. Wählen Sie im Bereich Funktion hinzufügen die folgenden Konfigurationen aus:
- Entwicklungsumgebung: Im Portal entwickeln
- Auswählen einer Vorlage: Timertrigger
- Wählen Sie Hinzufügen aus, um die Timertriggerfunktion zu erstellen.
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.
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>
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/"); } }
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
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/");
}
}