TrackAvailability() test sonuçlarını gözden geçirin

Bu makalede Azure portalında TrackAvailability() test sonuçlarını gözden geçirme ve Log Analytics kullanarak verileri sorgulama işlemleri açıklanmaktadır. Standart testler, çok az yatırım gerektirdiği, bakım gerektirmediği ve birkaç önkoşulu olduğu için mümkünse her zaman kullanılmalıdır.

Önkoşullar

Önemli

TrackAvailability() , karmaşık olabilecek özel kodu yazma ve temel alma konusunda geliştirici yatırımı yapmayı gerektirir.

Kullanılabilirliği denetle

Uygulama Analizler kaynağınızın Kullanılabilirlik sekmesindeki grafiği gözden geçirerek başlayın.

Not

ile TrackAvailability() oluşturulan testler, test adının yanında CUSTOM ile görünür.

Başarılı sonuçlar içeren Kullanılabilirlik sekmesini gösteren ekran görüntüsü.

Uçtan uca işlem ayrıntılarını görmek için Detaya git'in altında Başarılı veya Başarısız'ı seçin. Ardından bir örnek seçin. Ayrıca grafikte bir veri noktası seçerek uçtan uca işlem ayrıntılarına da ulaşabilirsiniz.

Örnek kullanılabilirlik testi seçmeyi gösteren ekran görüntüsü.

Uçtan uca işlem ayrıntılarını gösteren ekran görüntüsü.

Log Analytics'te sorgu

Kullanılabilirlik sonuçlarınızı, bağımlılıklarınızı ve daha fazlasını görüntülemek için Log Analytics'i kullanabilirsiniz. Log Analytics hakkında daha fazla bilgi edinmek için bkz . Günlük sorgusuna genel bakış.

Kullanılabilirlik sonuçlarını gösteren ekran görüntüsü.

Bağımlılıkları 50 ile sınırlı olan Yeni Sorgu sekmesini gösteren ekran görüntüsü.

Temel kod örneği

Not

Bu örnek yalnızca API çağrısının bir Azure işlevi içinde nasıl çalıştığına TrackAvailability() ilişkin mekaniği göstermek için tasarlanmıştır. Bu örneği tam işlevsel bir kullanılabilirlik testine dönüştürmek için gereken temel HTTP test kodunun veya iş mantığının nasıl yazıldığını göstermez. Varsayılan olarak, bu örnekte izlenecek olursa temel kullanılabilirlik HTTP GET testi oluşturursunuz.

Bu yönergeleri izlemek için, App Service Düzenleyicisi'nde kod düzenlemeye izin vermek için ayrılmış planı kullanmanız gerekir.

Zamanlayıcı tetikleyici işlevi oluşturma

  1. bir Azure İşlevleri kaynağı oluşturun.

    • Zaten bir Uygulama Analizler kaynağınız varsa:

      • Varsayılan olarak, Azure İşlevleri bir Uygulama Analizler kaynağı oluşturur. Ancak daha önce oluşturduğunuz bir kaynağı kullanmak istiyorsanız, oluşturma sırasında bunu belirtmeniz gerekir.

      • Aşağıdaki değişikliklerle Azure İşlevleri kaynağı oluşturma yönergelerini izleyin:

        İzleme sekmesinde Uygulama Analizler açılan kutusunu seçin ve ardından kaynağınızın adını girin veya seçin.

        İzleme sekmesinde mevcut Uygulama Analizler kaynağınızı seçmeyi gösteren ekran görüntüsü.

    • Henüz zamanlayıcıyla tetiklenen işleviniz için oluşturulmuş bir Uygulama Analizler kaynağınız yoksa:

      • Varsayılan olarak, Azure İşlevleri uygulamanızı oluştururken sizin için bir Application Analizler kaynağı oluşturur. Azure İşlevleri kaynağı oluşturma yönergelerini izleyin.

    Not

    İşlevlerinizi Tüketim, Premium veya App Service planında barındırabilirsiniz. Bir sanal ağın arkasında test ediyorsanız veya abonelik dışı uç noktaları test ediyorsanız, Tüketim planı yerine Premium planı kullanmanız gerekir. Barındırma sekmesinde planınızı seçin. İşlev uygulamasını oluştururken en son .NET sürümünün seçildiğinden emin olun.

  2. Zamanlayıcı tetikleyici işlevi oluşturun.

    1. İşlev uygulamanızda İşlevler sekmesini seçin.
    2. Ekle'yi seçin. İşlev ekle bölmesinde aşağıdaki yapılandırmaları seçin:
      1. Geliştirme ortamı: Portalda geliştirme
      2. Şablon seçin: Zamanlayıcı tetikleyicisi
    3. Zamanlayıcı tetikleyicisi işlevini oluşturmak için Ekle'yi seçin.

    İşlev uygulamanıza zamanlayıcı tetikleyici işlevi eklemeyi gösteren ekran görüntüsü.

App Service Düzenleyicisi'nde kod ekleme ve düzenleme

Dağıtılan işlev uygulamanıza gidin ve Geliştirme Araçları'nın altında App Service Düzenleyicisi sekmesini seçin.

Yeni bir dosya oluşturmak için zamanlayıcı tetikleyici işlevinizin altına sağ tıklayın (örneğin, TimerTrigger1) ve Yeni Dosya'yı seçin. Ardından dosyanın adını girin ve Enter tuşuna basın.

  1. function.proj adlı yeni bir dosya oluşturun ve aşağıdaki kodu yapıştırın:

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

     App Service Düzenleyicisi'nde function.proj dosyasını gösteren ekran görüntüsü.

  2. runAvailabilityTest.csx adlı yeni bir dosya oluşturun ve aşağıdaki kodu yapıştırın:

    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. Ortam değişkenini REGION_NAME geçerli bir Azure kullanılabilirlik konumu olarak tanımlayın.

    Kullanılabilir bölgeleri listelemek için Azure CLI'da aşağıdaki komutu çalıştırın.

    az account list-locations -o table
    
  4. Aşağıdaki kodu run.csx dosyasına kopyalayın. (Önceden var olan kodu değiştirirsiniz.)

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

Çok Adımlı Web Test Kodu Örneği

Yukarıdaki yönergeleri izleyin ve bunun yerine aşağıdaki kodu runAvailabilityTest.csx dosyasına yapıştırın:

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/"); 
    } 
}

Sonraki adımlar