Passer en revue les résultats du test TrackAvailability()

Cet article explique comment passer en revue les résultats du test TrackAvailability() sur le portail Azure et comment interroger les données à l’aide de Log Analytics. Les tests standard doivent toujours être utilisés si possible, car ils nécessitent peu d’investissements, pas de maintenance et peu de conditions préalables.

Prérequis

Important

TrackAvailability() nécessite un investissement de développeur dans l’écriture et la maintenance du code personnalisé potentiellement complexe.

Vérifier la disponibilité

Commencez par consulter le graphique sous l’onglet Disponibilité de votre ressource Application Insights.

Notes

Les tests créés à l’aide de TrackAvailability() s’affichent avec CUSTOM à côté du nom du test.

Capture d’écran montrant l’onglet Disponibilité avec des résultats réussis.

Pour voir les détails de la transaction de bout en bout, sous Explorer, sélectionnez Réussite ou Échec. Sélectionner ensuite un exemple. Vous pouvez également accéder aux détails de la transaction de bout en bout en sélectionnant un point de données sur le graphe.

Capture d’écran montrant la sélection d’un exemple de test de disponibilité.

Capture d’écran montrant les détails de la transaction de bout en bout.

Requête dans Log Analytics

Vous pouvez utiliser Log Analytics pour voir les résultats de la disponibilité, les dépendances, et plus encore. Pour en savoir plus sur Log Analytics, consultez Vue d’ensemble des requêtes de journal.

Capture d’écran montrant les résultats de la disponibilité.

Capture d’écran montrant l’onglet Nouvelle requête avec des dépendances limitées à 50.

Exemple de code de base

Remarque

Cet exemple est conçu uniquement pour vous montrer comment fonctionne l’appel d’API TrackAvailability() au sein d’une fonction Azure. Il ne vous montre pas comment écrire le code de test HTTP sous-jacent ou la logique métier nécessaires pour convertir cet exemple en test de disponibilité entièrement fonctionnel. Par défaut, si vous suivez cet exemple, vous allez créer un test HTTP GET de disponibilité de base.

Pour suivre ces instructions, vous devez utiliser le plan dédié pour autoriser la modification du code dans l’Éditeur App Service.

Créer une fonction de déclencheur de minuteur

  1. Créez une ressource Azure Functions.

    • Si vous avez déjà une ressource Application Insights :

      • Par défaut, Azure Functions crée une ressource Application Insights. Toutefois, si vous souhaitez utiliser une ressource que vous avez créée précédemment, vous devez le spécifier lors de la création.

      • Suivez les instructions de création d'une ressource Azure Functions en intégrant la modification suivante :

        Sous l’onglet Monitoring, sélectionnez la zone déroulante Application Insights, puis entrez ou sélectionnez le nom de votre ressource.

        Capture d’écran montrant la sélection de votre ressource Application Insights existante sous l’onglet Monitoring.

    • Si vous n’avez encore aucune ressource Application Insights créée pour votre fonction déclenchée par un minuteur :

    Remarque

    Vous pouvez héberger vos fonctions sur un plan Consommation, Premium ou App Service. Si vous effectuez un test derrière un réseau virtuel ou que vous testez des points de terminaison non publics, vous devez utiliser le plan Premium à la place du plan Consommation. Sélectionnez votre plan sous l’onglet Hébergement. Vérifiez que la dernière version de .NET est sélectionnée lorsque vous créez l’application de fonction.

  2. Créez une fonction de déclencheur de minuteur.

    1. Sous votre application de fonction, sélectionnez l'onglet Fonction.
    2. Sélectionnez Ajouter. Sous le volet Ajouter une fonction, sélectionnez les configurations suivantes :
      1. Environnement de développement : Développer dans le portail
      2. Sélectionner un modèle : Déclencheur de minuteur
    3. Sélectionnez Ajouter pour créer la fonction de déclencheur de minuteur.

    Capture d’écran montrant comment ajouter une fonction de déclencheur de minuteur à votre application de fonction.

Ajouter et modifier le code dans l'Éditeur App Service

Accédez à votre application de fonction déployée et, sous Outils de développement, sélectionnez l’onglet Éditeur App Service.

Pour créer un fichier, cliquez avec le bouton droit sous votre fonction de déclencheur de minuteur (par exemple, TimerTrigger1) et sélectionnez Nouveau fichier. Entrez ensuite le nom du fichier, puis sélectionnez Entrée.

  1. Créez un fichier appelé function.proj, puis collez-y le code suivant :

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

     Capture d’écran montrant function.proj dans l’Éditeur App Service.

  2. Créez un fichier nommé runAvailabilityTest.csx, puis collez-y le code suivant :

    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. Définissez la variable d’environnement REGION_NAME en tant qu’emplacement de disponibilité Azure valide.

    Exécutez la commande suivante dans Azure CLI pour obtenir la liste des régions disponibles.

    az account list-locations -o table
    
  4. Copiez le code suivant dans le fichier run.csx. (Vous allez remplacer le code préexistant.)

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

Exemple de code de test web à plusieurs étapes

Suivez les mêmes instructions indiquées ci-dessus, mais au lieu de coller le code suivant dans le fichier 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/"); 
    } 
}

Étapes suivantes