مراجعة نتائج اختبار TrackAvailability()
توضح هذه المقالة كيفية مراجعة نتائج اختبار TrackAvailability() في مدخل Microsoft Azure والاستعلام عن البيانات باستخدام Log Analytics. يجب دائما استخدام الاختباراتالقياسية إذا كان ذلك ممكنا لأنها تتطلب القليل من الاستثمار، وعدم الصيانة، ولديها متطلبات أساسية قليلة.
المتطلبات الأساسية
- مورد Application Insights إلى مساحة العمل
- الوصول إلى التعليمات البرمجية المصدر لتطبيق دالة في Azure Functions
- خبرة المطور القادرة على تأليف تعليمات برمجية مخصصة ل TrackAvailability()، مصممة خصيصا لاحتياجات عملك المحددة
هام
يتطلب TrackAvailability() إجراء استثمار مطور في كتابة التعليمات البرمجية المخصصة المعقدة المحتملة و maintanining.
التحقق من إمكانية التوّفر
ابدأ بمراجعة الرسم البياني في علامة التبويب Availability لمورد Application Insights.
إشعار
ستظهر الاختبارات التي تم إنشاؤها باستخدام TrackAvailability()
CUSTOM بجوار اسم الاختبار.
لمشاهدة تفاصيل المعاملة من طرف إلى طرف، ضمن Drill into، حدد Successful أو Failed. ثم حدد عينة. يمكنك أيضًا الوصول إلى تفاصيل المعاملات الشاملة عن طريق تحديد نقطة بيانات على الرسم البياني.
الاستعلام في Log Analytics
يمكنك استخدام Log Analytics لعرض نتائج التوفر والتبعيات والمزيد. لمعرفة المزيد حول Log Analytics، راجع نظرة عامة على استعلام السجل.
نموذج التعليمات البرمجية الأساسية
إشعار
تم تصميم هذا المثال فقط لإظهار آليات كيفية TrackAvailability()
عمل استدعاء واجهة برمجة التطبيقات داخل دالة Azure. لا يظهر لك كيفية كتابة رمز اختبار HTTP الأساسي أو منطق العمل المطلوب لتحويل هذا المثال إلى اختبار توفر وظيفي بالكامل. بشكل افتراضي، إذا قمت بالمرور عبر هذا المثال، فسوف تقوم بإنشاء اختبار HTTP GET أساسي للتوافر.
لاتباع هذه الإرشادات، يجب عليك استخدام الخطة المخصصة للسماح بتعديل التعليمات البرمجية في محرر خدمة التطبيقات.
إنشاء وظيفة تشغيل المؤقت
إنشاء مورد وظائف Azure.
إذا كان لديك بالفعل مورد Application Insights:
بشكل افتراضي، تقوم Azure Functions بإنشاء مورد Application Insights. ولكن إذا كنت تريد استخدام مورد قمت بإنشائه مسبقا، يجب تحديد ذلك أثناء الإنشاء.
اتبع إرشادات كيفية إنشاء مورد Azure Functions بالتعديل التالي:
في علامة التبويب Monitoring ، حدد مربع القائمة المنسدلة Application Insights ثم أدخل اسم المورد أو حدده.
إذا لم يكن لديك مورد Application Insights تم إنشاؤه حتى الآن للدالة المشغلة بواسطة المؤقت:
- بشكل افتراضي، عند إنشاء تطبيق Azure Functions الخاص بك، فإنه ينشئ مورد Application Insights لك. اتبع الإرشادات الخاصة بكيفية إنشاء مورد Azure Functions.
إشعار
يمكنك استضافة وظائفك على خطة استهلاك أو خطة متميزة أو خطة خدمات التطبيقات. إذا كنت تختبر خلف شبكة ظاهرية أو تختبر نقاط نهاية غير عامة، فستحتاج إلى استخدام خطة Premium بدلا من خطة الاستهلاك. حدد خطتك في علامة التبويب Hosting . تأكد من تحديد أحدث إصدار .NET عند إنشاء تطبيق الوظائف.
أنشئ وظيفة تشغيل مؤقت.
- في تطبيق الوظائف لديك، حدد علامة التبويب Functions.
- حدد إضافة. في جزء Add function ، حدد التكوينات التالية:
- بيئة التطوير: التطوير في المدخل
- تحديد قالب: مشغل المؤقت
- حدد Add لإنشاء دالة مشغل المؤقت.
إضافة تعليمة برمجية وتحريرها في محرر خدمة التطبيقات
انتقل إلى تطبيق الوظائف المنشور، وضمن أدوات التطوير، حدد علامة التبويب App Service Editor .
لإنشاء ملف جديد، انقر بزر الماوس الأيمن ضمن دالة مشغل المؤقت (على سبيل المثال، TimerTrigger1) وحدد New File. ثم أدخل اسم الملف وحدد Enter.
إنشاء ملف جديد يسمى function.proj ولصق التعليمات البرمجية التالية:
<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 ولصق التعليمات البرمجية التالية:
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/"); } }
REGION_NAME
حدد متغير البيئة كموقع توفر Azure صالح.قم بتشغيل الأمر التالي في Azure CLI لسرد المناطق المتوفرة.
az account list-locations -o table
انسخ التعليمات البرمجية التالية في ملف run.csx . (يمكنك استبدال التعليمات البرمجية الموجودة مسبقا.)
#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(); } }
نموذج التعليمات البرمجية لاختبار الويب متعدد الخطوات
اتبع نفس الإرشادات أعلاه، وبدلا من ذلك الصق التعليمات البرمجية التالية في ملف 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/");
}
}