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
- Çalışma alanı tabanlı Application Insights kaynağı
- Azure İşlevleri'da işlev uygulamasının kaynak koduna erişim
- Belirli iş gereksinimlerinize göre uyarlanmış TrackAvailability() için özel kod yazabilen geliştirici uzmanlığı
Ö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.
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.
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ış.
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
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.
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.
Zamanlayıcı tetikleyici işlevi oluşturun.
- İşlev uygulamanızda İşlevler sekmesini seçin.
- Ekle'yi seçin. İşlev ekle bölmesinde aşağıdaki yapılandırmaları seçin:
- Geliştirme ortamı: Portalda geliştirme
- Şablon seçin: Zamanlayıcı tetikleyicisi
- Zamanlayıcı tetikleyicisi işlevini oluşturmak için Ekle'yi seçin.
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.
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>
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/"); } }
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
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/");
}
}