Meninjau hasil pengujian TrackAvailability()

Artikel ini menjelaskan cara meninjau hasil pengujian TrackAvailability() di portal Azure dan mengkueri data menggunakan Analitik Log. Pengujian standar harus selalu digunakan jika memungkinkan karena membutuhkan sedikit investasi, tidak ada pemeliharaan, dan memiliki beberapa prasyarat.

Prasyarat

Penting

TrackAvailability() mengharuskan melakukan investasi pengembang secara tertulis dan maintanining kode kustom yang berpotensi kompleks.

Memeriksa ketersediaan

Mulailah dengan meninjau grafik pada tab Ketersediaan sumber daya Application Insights Anda.

Catatan

Pengujian yang dibuat dengan TrackAvailability() akan muncul dengan CUSTOM di samping nama pengujian.

Cuplikan layar yang memperlihatkan tab Ketersediaan dengan hasil yang berhasil.

Untuk melihat detail transaksi end-to-end, di bawah Telusuri, pilih Berhasil atau Gagal. Kemudian pilih sampel. Anda juga dapat sampai ke detail transaksi ujung ke ujung dengan memilih poin data pada grafik.

Cuplikan layar yang memperlihatkan pemilihan uji ketersediaan sampel.

Cuplikan layar yang memperlihatkan detail transaksi end-to-end.

Kueri di Analitik Log

Anda dapat menggunakan Analitik Log untuk melihat hasil ketersediaan, dependensi, dan lainnya. Untuk mempelajari selengkapnya tentang Analitik Log, lihat Gambaran umum kueri log.

Cuplikan layar yang memperlihatkan hasil ketersediaan.

Cuplikan layar yang memperlihatkan tab Kueri Baru dengan dependensi dibatasi hingga 50.

Sampel kode dasar

Catatan

Contoh ini dirancang hanya untuk menunjukkan kepada Anda mekanisme cara TrackAvailability() kerja panggilan API dalam fungsi Azure. Ini tidak menunjukkan kepada Anda cara menulis kode pengujian HTTP atau logika bisnis yang mendasar yang diperlukan untuk mengubah contoh ini menjadi uji ketersediaan yang berfungsi penuh. Secara default, jika Anda menelusuri contoh ini, Anda akan membuat uji HTTP GET ketersediaan dasar.

Untuk mengikuti instruksi ini, Anda harus menggunakan paket khusus untuk mengizinkan kode pengeditan di Editor App Service.

Membuat fungsi pemicu timer

  1. Membuat sumber daya Azure Functions.

    • Jika Anda sudah memiliki sumber daya Application Insights:

      • Secara default, Azure Functions membuat sumber daya Application Insights. Tetapi jika Anda ingin menggunakan sumber daya yang Anda buat sebelumnya, Anda harus menentukannya selama pembuatan.

      • Ikuti petunjuk tentang cara membuat sumber daya Azure Functions dengan modifikasi berikut:

        Pada tab Pemantauan , pilih kotak dropdown Application Insights lalu masukkan atau pilih nama sumber daya Anda.

        Cuplikan layar yang memperlihatkan memilih sumber daya Application Insights yang ada di tab Pemantauan.

    • Jika Anda belum memiliki sumber daya Application Insights yang dibuat untuk fungsi yang dipicu timer Anda:

      • Secara default, saat Anda membuat aplikasi Azure Functions, aplikasi tersebut membuat sumber daya Application Insights untuk Anda. Ikuti petunjuk tentang cara membuat sumber daya Azure Functions.

    Catatan

    Anda dapat menghosting fungsi Anda pada paket Konsumsi, Premium, atau App Service. Jika Anda menguji di belakang jaringan virtual atau menguji titik akhir nonpublik, Anda harus menggunakan paket Premium sebagai pengganti paket Konsumsi. Pilih paket Anda di tab Hosting . Pastikan versi .NET terbaru dipilih saat Anda membuat aplikasi fungsi.

  2. Buat fungsi pemicu timer.

    1. Di aplikasi fungsi Anda, pilih tab Fungsi.
    2. Pilih Tambahkan. Pada panel Tambahkan fungsi , pilih konfigurasi berikut:
      1. Lingkungan pengembangan: Kembangkan di portal
      2. Pilih templat: Pemicu timer
    3. Pilih Tambahkan untuk membuat fungsi pemicu timer.

    Cuplikan layar yang memperlihatkan cara menambahkan fungsi pemicu timer ke aplikasi fungsi Anda.

Menambahkan dan mengedit kode di Editor App Service

Buka aplikasi fungsi yang Anda sebarkan, dan di bawah Alat Pengembangan, pilih tab Editor App Service.

Untuk membuat file baru, klik kanan di bawah fungsi pemicu timer Anda (misalnya, TimerTrigger1) dan pilih File Baru. Kemudian masukkan nama file dan pilih Enter.

  1. Buat file baru yang disebut function.proj dan tempelkan kode berikut:

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

     Cuplikan layar yang memperlihatkan function.proj di Editor App Service.

  2. Buat file baru bernama runAvailabilityTest.csx dan tempelkan kode berikut:

    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. Tentukan REGION_NAME variabel lingkungan sebagai lokasi ketersediaan Azure yang valid.

    Jalankan perintah berikut di Azure CLI untuk mencantumkan wilayah yang tersedia.

    az account list-locations -o table
    
  4. Salin kode berikut ke dalam file run.csx . (Anda mengganti kode yang sudah ada sebelumnya.)

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

Sampel Kode Uji Web Multi-Langkah

Ikuti instruksi yang sama di atas dan sebagai gantinya tempelkan kode berikut ke dalam file 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/"); 
    } 
}

Langkah berikutnya