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
- Op werkruimte gebaseerde Application Insights-resource
- Toegang tot de broncode van een functie-app in Azure Functions
- Expertise van ontwikkelaars die aangepaste code kunnen ontwerpen voor TrackAvailability(), afgestemd op uw specifieke bedrijfsbehoeften
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.
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.
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.
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
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.
Als u nog geen Application Insights-resource hebt gemaakt voor uw door timer geactiveerde functie:
- Wanneer u uw Azure Functions-toepassing maakt, wordt standaard een Application Insights-resource voor u gemaakt. Volg de instructies voor het maken van een Azure Functions-resource.
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.
Een timertriggerfunctie maken.
- Selecteer het tabblad Functions in uw functie-app.
- Selecteer Toevoegen. Selecteer in het deelvenster Functie toevoegen de volgende configuraties:
- Ontwikkelomgeving: Ontwikkelen in portal
- Selecteer een sjabloon: Timertrigger
- Selecteer Toevoegen om de timertriggerfunctie te maken.
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.
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>
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/"); } }
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
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/");
}
}