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
- Arbetsytebaserad Application Insights-resurs
- Åtkomst till källkoden för en funktionsapp i Azure Functions
- Utvecklarexpertis som kan skapa anpassad kod för TrackAvailability(), skräddarsydd för dina specifika affärsbehov
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.
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.
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.
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
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.
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.
Skapa en timerutlösarfunktion.
- I funktionsappen väljer du fliken Funktioner .
- Markera Lägga till. I fönstret Lägg till funktion väljer du följande konfigurationer:
- Utvecklingsmiljö: Utveckla i portalen
- Välj en mall: Timerutlösare
- Välj Lägg till för att skapa timerutlösarfunktionen.
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.
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>
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/"); } }
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
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/");
}
}