إضافة بيانات تتبع استخدام OpenTelemetry وتعديلها وتصفيتها

توفر هذه المقالة إرشادات حول كيفية إضافة القياس المفتوح وتعديله وتصفيته للتطبيقات باستخدام Azure Monitor Application Insights.

لمعرفة المزيد حول مفاهيم OpenTelemetry، راجع نظرة عامة على القياس المفتوح أو الأسئلة الشائعة حول OpenTelemetry.

جمع البيانات تلقائيا

تجمع توزيعات البيانات تلقائيا عن طريق تجميع مكتبات الأجهزة OpenTelemetry.

مكتبات الأجهزة المضمنة

الطلبات

التبعيات

تسجيل الدخول

  • ILogger

لمزيد من المعلومات حول ILogger، راجع تسجيل الدخول إلى C# و.NET وأمثلة التعليمات البرمجية.

الحواشي السفليه

  • ¹: يدعم الإبلاغ التلقائي عن الاستثناءات غير المعالجة/غير المعالجة
  • ²: يدعم مقاييس القياس المفتوح
  • ³: بشكل افتراضي، يتم جمع التسجيل فقط على مستوى INFO أو أعلى. لتغيير هذا الإعداد، راجع خيارات التكوين.
  • ⁴: بشكل افتراضي، يتم جمع التسجيل فقط عند إجراء هذا التسجيل على مستوى تحذير أو أعلى.

إشعار

تتضمن Azure Monitor OpenTelemetry Distros تعيينا ومنطقا مخصصين لإصدار مقاييس Application Insights القياسية تلقائيا.

تلميح

تعتبر حاليا جميع مقاييس OpenTelemetry سواء تم جمعها تلقائيا من مكتبات الأجهزة أو التي تم جمعها يدويا من الترميز المخصص "مقاييس مخصصة" ل Application Insights لأغراض الفوترة. اعرف المزيد.

إضافة مكتبة أجهزة المجتمع

يمكنك جمع المزيد من البيانات تلقائيا عند تضمين مكتبات الأجهزة من مجتمع OpenTelemetry.

تنبيه

نحن لا ندعم أو نضمن جودة مكتبات الأجهزة المجتمعية. اقتراح واحد لنشرنا أو نشره أو التصويت عليه في مجتمع الملاحظات لدينا. كن على علم، يعتمد بعضها على مواصفات OpenTelemetry التجريبية وقد يقدم تغييرات كسرية مستقبلية.

لإضافة مكتبة مجتمع، استخدم ConfigureOpenTelemetryMeterProvider الأساليب أو ConfigureOpenTelemetryTracerProvider بعد إضافة حزمة nuget للمكتبة.

يوضح المثال التالي كيف يمكن إضافة أدوات وقت التشغيل لجمع مقاييس إضافية.

dotnet add package OpenTelemetry.Instrumentation.Runtime 
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add runtime instrumentation.
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddRuntimeInstrumentation());

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

جمع بيانات تتبع الاستخدام المخصصة

يشرح هذا القسم كيفية جمع بيانات تتبع الاستخدام المخصصة من التطبيق الخاص بك.

اعتمادا على اللغة ونوع الإشارة، هناك طرق مختلفة لجمع بيانات تتبع الاستخدام المخصصة، بما في ذلك:

  • OpenTelemetry API
  • مكتبات التسجيل/المقاييس الخاصة باللغة
  • واجهة برمجة تطبيقات Application Insights الكلاسيكية

يمثل الجدول التالي أنواع بيانات تتبع الاستخدام المخصصة المدعومة حاليا:

اللغة أحداث مخصصة مقاييس مخصصة التبعيات استثناءات طرق عرض الصفحة الطلبات Traces
ASP.NET Core
   OpenTelemetry API ‏‏نعم‬ نعم نعم ‏‏نعم‬
   ILogger API ‏‏نعم‬
   واجهة برمجة تطبيقات الذكاء الاصطناعي الكلاسيكية
Java
   OpenTelemetry API ‏‏نعم‬ نعم نعم ‏‏نعم‬
   Logback, , Log4jJUL ‏‏نعم‬ ‏‏نعم‬
   قياسات ميكرومتر ‏‏نعم‬
   واجهة برمجة تطبيقات الذكاء الاصطناعي الكلاسيكية ‏‏نعم‬ نعم نعم نعم نعم نعم ‏‏نعم‬
Node.js
   OpenTelemetry API ‏‏نعم‬ نعم نعم ‏‏نعم‬
Python
   OpenTelemetry API ‏‏نعم‬ نعم نعم ‏‏نعم‬
   وحدة تسجيل Python ‏‏نعم‬
   ملحق الأحداث ‏‏نعم‬ نعم

إشعار

يستمع Application Insights Java 3.x إلى بيانات تتبع الاستخدام التي يتم إرسالها إلى واجهة برمجة تطبيقات Application Insights الكلاسيكية. وبالمثل، يجمع Application Insights Node.js 3.x الأحداث التي تم إنشاؤها باستخدام واجهة برمجة تطبيقات Application Insights الكلاسيكية. وهذا يجعل الترقية أسهل ويملأ فجوة في دعم بيانات تتبع الاستخدام المخصص لدينا حتى يتم دعم جميع أنواع بيانات تتبع الاستخدام المخصصة عبر واجهة برمجة تطبيقات القياس عن بعد المفتوح.

إضافة القياسات المخصصة

في هذا السياق، تشير المقاييس المخصصة إلى أدوات التعليمات البرمجية يدويا لجمع مقاييس إضافية تتجاوز ما تجمعه مكتبات أدوات القياس المفتوح تلقائيا.

تقدم OpenTelemetry API ست "أدوات" قياسية لتغطية سيناريوهات القياس المختلفة وتحتاج إلى اختيار "نوع التجميع" الصحيح عند تصور المقاييس في Metrics Explorer. هذا المطلب صحيح عند استخدام OpenTelemetry Metric API لإرسال المقاييس وعند استخدام مكتبة الأجهزة.

يعرض الجدول التالي أنواع التجميع الموصى بها لكل من أدوات القياس OpenTelemetry.

OpenTelemetry Instrument نوع تجميع Azure Monitor
العداد المجموع
عداد غير متزامن المجموع
المدرج التكراري الحد الأدنى والحد الأقصى والمتوسط والمجموع والعدد
مقياس غير متزامن المتوسط
UpDownCounter المجموع
UpDownCounter غير متزامن المجموع

تنبيه

عادة ما تكون أنواع التجميع التي تتجاوز ما يظهر في الجدول غير ذات معنى.

تصف مواصفات OpenTelemetry الأدوات وتوفر أمثلة على الوقت الذي قد تستخدم فيه كل منها.

تلميح

المدرج التكراري هو الأكثر تنوعا وأكثر مكافئا لواجهة برمجة تطبيقات Application Insights GetMetric Classic. يقوم Azure Monitor حاليا بتسطيح أداة المدرج التكراري في أنواع التجميع الخمسة المدعومة لدينا، كما أن دعم النسب المئوية قيد التنفيذ. على الرغم من أنها أقل تنوعا، فإن أدوات القياس المفتوح الأخرى لها تأثير أقل على أداء التطبيق الخاص بك.

مثال المدرج التكراري

يجب أن يشترك بدء تشغيل التطبيق في مقياس بالاسم.

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add a meter named "OTel.AzureMonitor.Demo".
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddMeter("OTel.AzureMonitor.Demo"));

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Meter يجب تهيئة باستخدام نفس الاسم.

// Create a new meter named "OTel.AzureMonitor.Demo".
var meter = new Meter("OTel.AzureMonitor.Demo");

// Create a new histogram metric named "FruitSalePrice".
Histogram<long> myFruitSalePrice = meter.CreateHistogram<long>("FruitSalePrice");

// Create a new Random object.
var rand = new Random();

// Record a few random sale prices for apples and lemons, with different colors.
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "apple"), new("color", "red"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "lemon"), new("color", "yellow"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "lemon"), new("color", "yellow"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "apple"), new("color", "green"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "apple"), new("color", "red"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "lemon"), new("color", "yellow"));

مثال العداد

يجب أن يشترك بدء تشغيل التطبيق في مقياس بالاسم.

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add a meter named "OTel.AzureMonitor.Demo".
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddMeter("OTel.AzureMonitor.Demo"));

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Meter يجب تهيئة باستخدام نفس الاسم.

// Create a new meter named "OTel.AzureMonitor.Demo".
var meter = new Meter("OTel.AzureMonitor.Demo");

// Create a new counter metric named "MyFruitCounter".
Counter<long> myFruitCounter = meter.CreateCounter<long>("MyFruitCounter");

// Record the number of fruits sold, grouped by name and color.
myFruitCounter.Add(1, new("name", "apple"), new("color", "red"));
myFruitCounter.Add(2, new("name", "lemon"), new("color", "yellow"));
myFruitCounter.Add(1, new("name", "lemon"), new("color", "yellow"));
myFruitCounter.Add(2, new("name", "apple"), new("color", "green"));
myFruitCounter.Add(5, new("name", "apple"), new("color", "red"));
myFruitCounter.Add(4, new("name", "lemon"), new("color", "yellow"));

مثال على القياس

يجب أن يشترك بدء تشغيل التطبيق في مقياس بالاسم.

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add a meter named "OTel.AzureMonitor.Demo".
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddMeter("OTel.AzureMonitor.Demo"));

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Meter يجب تهيئة باستخدام نفس الاسم.

// Get the current process.
var process = Process.GetCurrentProcess();

// Create a new meter named "OTel.AzureMonitor.Demo".
var meter = new Meter("OTel.AzureMonitor.Demo");

// Create a new observable gauge metric named "Thread.State".
// This metric will track the state of each thread in the current process.
ObservableGauge<int> myObservableGauge = meter.CreateObservableGauge("Thread.State", () => GetThreadState(process));

private static IEnumerable<Measurement<int>> GetThreadState(Process process)
{
    // Iterate over all threads in the current process.
    foreach (ProcessThread thread in process.Threads)
    {
        // Create a measurement for each thread, including the thread state, process ID, and thread ID.
        yield return new((int)thread.ThreadState, new("ProcessId", process.Id), new("ThreadId", thread.Id));
    }
}

إضافة استثناءات مخصصة

حدد مكتبات الأجهزة التي تقوم تلقائيا بالإبلاغ عن الاستثناءات إلى Application Insights. ومع ذلك، قد تحتاج إلى الإبلاغ يدويا عن استثناءات تتجاوز ما تبلغ به مكتبات الأجهزة. على سبيل المثال، لا يتم الإبلاغ عادة عن الاستثناءات التي تم التقاطها بواسطة التعليمات البرمجية الخاصة بك. قد ترغب في الإبلاغ عنها لجذب الانتباه في التجارب ذات الصلة بما في ذلك قسم الفشل وطرق عرض المعاملات الشاملة.

  • لتسجيل استثناء باستخدام نشاط:
    // Start a new activity named "ExceptionExample".
    using (var activity = activitySource.StartActivity("ExceptionExample"))
    {
        // Try to execute some code.
        try
        {
            throw new Exception("Test exception");
        }
        // If an exception is thrown, catch it and set the activity status to "Error".
        catch (Exception ex)
        {
            activity?.SetStatus(ActivityStatusCode.Error);
            activity?.RecordException(ex);
        }
    }
    
  • لتسجيل استثناء باستخدام ILogger:
    // Create a logger using the logger factory. The logger category name is used to filter and route log messages.
    var logger = loggerFactory.CreateLogger(logCategoryName);
    
    // Try to execute some code.
    try
    {
        throw new Exception("Test Exception");
    }
    catch (Exception ex)
    {
        // Log an error message with the exception. The log level is set to "Error" and the event ID is set to 0.
        // The log message includes a template and a parameter. The template will be replaced with the value of the parameter when the log message is written.
        logger.Log(
            logLevel: LogLevel.Error,
            eventId: 0,
            exception: ex,
            message: "Hello {name}.",
            args: new object[] { "World" });
    }
    

إضافة امتدادات مخصصة

قد تحتاج إلى إضافة نطاق مخصص في سيناريوهين. أولا، عندما يكون هناك طلب تبعية لم يتم جمعه بالفعل بواسطة مكتبة الأجهزة. ثانيا، عندما ترغب في نمذجة عملية تطبيق كامتداد في طريقة عرض المعاملة من طرف إلى طرف.

إشعار

Activityتمثل ActivitySource الفئات و من System.Diagnostics مساحة الاسم مفاهيم القياس المفتوح Span و Tracer على التوالي. يمكنك إنشاء ActivitySource مباشرة باستخدام الدالة الإنشائية الخاصة به بدلًا من استخدام TracerProvider. يجب أن تكون كل فئة ActivitySource متصلة بشكل صريح بـTracerProvider باستخدام AddSource(). وذلك لأن أجزاء من واجهة برمجة تطبيقات تتبع OpenTelemetry يتم دمجها مباشرة في وقت التشغيل .NET. لمعرفة المزيد، راجع مقدمة إلى OpenTelemetry .NET Tracing API.

// Define an activity source named "ActivitySourceName". This activity source will be used to create activities for all requests to the application.
internal static readonly ActivitySource activitySource = new("ActivitySourceName");

// Create an ASP.NET Core application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry tracer provider to add a source named "ActivitySourceName". This will ensure that all activities created by the activity source are traced.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddSource("ActivitySourceName"));

// Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core application.
var app = builder.Build();

// Map a GET request to the root path ("/") to the specified action.
app.MapGet("/", () =>
{
    // Start a new activity named "CustomActivity". This activity will be traced and the trace data will be sent to Azure Monitor.
    using (var activity = activitySource.StartActivity("CustomActivity"))
    {
        // your code here
    }

    // Return a response message.
    return $"Hello World!";
});

// Start the ASP.NET Core application.
app.Run();

StartActivityافتراضيات إلى ActivityKind.Internal، ولكن يمكنك توفير أي .ActivityKind ActivityKind.Client، ActivityKind.Producerويتم تعيين و ActivityKind.Internal إلى Application Insights dependencies. ActivityKind.Server ويتم تعيينها ActivityKind.Consumer إلى Application Insights requests.

إرسال بيانات تتبع الاستخدام المخصصة باستخدام واجهة برمجة تطبيقات Application Insights الكلاسيكية

نوصي باستخدام واجهات برمجة التطبيقات OpenTelemetry كلما أمكن ذلك، ولكن قد تكون هناك بعض السيناريوهات عندما تضطر إلى استخدام واجهة برمجة تطبيقات Application Insights الكلاسيكية.

حدث
  1. أضف Microsoft.ApplicationInsights إلى تطبيقك.

  2. إنشاء مثيل TelemetryClient .

إشعار

من المهم إنشاء مثيل واحد فقط من TelemetryClient لكل تطبيق.

var telemetryConfiguration = new TelemetryConfiguration { ConnectionString = "" };
var telemetryClient = new TelemetryClient(telemetryConfiguration);
  1. استخدم العميل لإرسال بيانات تتبع الاستخدام المخصصة.
telemetryClient.TrackEvent("testEvent");

تعديل القياس عن بُعد

يشرح هذا القسم كيفية تعديل بيانات تتبع الاستخدام.

إضافة سمات النطاق

يمكن أن تتضمن هذه السمات إضافة خاصية مخصص إلى قياسك عن بُعد. يمكنك أيضًا استخدام سمات لتعيين الحقول الاختيارية في مخطط Application Insights، مثل IP العميل.

إضافة خاصية مخصصة إلى Span

يتم تصدير أي سمات تضيفها إلى الامتدادات كخصائص مخصصة. يقومون بتعبئة حقل customDimensions في جدول الطلبات أو التبعيات أو التتبعات أو الاستثناءات.

لإضافة سمات النطاق، استخدم أي من الطريقتين التاليتين:

تلميح

تتمثل ميزة استخدام الخيارات التي توفرها مكتبات الأجهزة، عندما تكون متاحة، في أن السياق بأكمله متاح. ونتيجة لذلك، يمكن للمستخدمين تحديد لإضافة المزيد من السمات أو تصفيتها. على سبيل المثال، يتيح خيار الإثراء في مكتبة الأجهزة HttpClient للمستخدمين الوصول إلى HttpRequestMessage وHttpResponseMessage نفسه. يمكنهم تحديد أي شيء منه وتخزينه كسمة.

  1. توفر العديد من مكتبات الأجهزة خيارا تثري. للحصول على إرشادات، راجع ملفات readme لمكتبات الأجهزة الفردية:

  2. استخدم معالج مخصص:

تلميح

أضف المعالج الموضح هنا قبل إضافة Azure Monitor.

// Create an ASP.NET Core application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry tracer provider to add a new processor named ActivityEnrichingProcessor.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddProcessor(new ActivityEnrichingProcessor()));

// Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core application.
var app = builder.Build();

// Start the ASP.NET Core application.
app.Run();

أضف ActivityEnrichingProcessor.cs إلى مشروعك باستخدام التعليمات البرمجية التالية:

public class ActivityEnrichingProcessor : BaseProcessor<Activity>
{
    public override void OnEnd(Activity activity)
    {
        // The updated activity will be available to all processors which are called after this processor.
        activity.DisplayName = "Updated-" + activity.DisplayName;
        activity.SetTag("CustomDimension1", "Value1");
        activity.SetTag("CustomDimension2", "Value2");
    }
}

تعيين IP المستخدم

يمكنك ملء حقل client_IP للطلبات عن طريق تعيين سمة على النطاق. يستخدم التطبيق Insights عنوان IP لإنشاء سمات موقع المستخدم ثم يتجاهله بشكل افتراضي.

استخدم مثال إضافة خاصية مخصصة، إلا تبديل التعليمات البرمجية التالية في ActivityEnrichingProcessor.cs:

// Add the client IP address to the activity as a tag.
// only applicable in case of activity.Kind == Server
activity.SetTag("client.address", "<IP Address>");

تعيين معرف المستخدم أو معرف المستخدم المصادق عليه

يمكنك ملء حقل user_Id أو user_AuthenticatedId للطلبات باستخدام الإرشادات التالية. معرف المستخدم هو معرف مستخدم مجهول. معرف المستخدم المصادق عليه هو معرف مستخدم معروف.

هام

راجع قوانين الخصوصية المعمول بها قبل تعيين معرف المستخدم المصادق عليه.

استخدم مثال إضافة خاصية مخصصة.

// Add the user ID to the activity as a tag, but only if the activity is not null.
activity?.SetTag("enduser.id", "<User Id>");

إضافة سمات السجل

يستخدم OpenTelemetry . NET's ILogger. يمكن إرفاق أبعاد مخصصة بالسجلات باستخدام قالب رسالة.

تصفية التتبع

يمكنك استخدام الطرق التالية لتصفية القياس عن بعد قبل مغادرة التطبيق الخاص بك.

  1. توفر العديد من مكتبات الأجهزة خيارا تثري. للحصول على إرشادات، راجع ملفات readme لمكتبات الأجهزة الفردية:

  2. استخدم معالج مخصص:

    تلميح

    أضف المعالج الموضح هنا قبل إضافة Azure Monitor.

    // Create an ASP.NET Core application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Configure the OpenTelemetry tracer provider to add a new processor named ActivityFilteringProcessor.
    builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddProcessor(new ActivityFilteringProcessor()));
    // Configure the OpenTelemetry tracer provider to add a new source named "ActivitySourceName".
    builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddSource("ActivitySourceName"));
    // Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Build the ASP.NET Core application.
    var app = builder.Build();
    
    // Start the ASP.NET Core application.
    app.Run();
    

    أضف ActivityFilteringProcessor.cs إلى مشروعك باستخدام التعليمات البرمجية التالية:

    public class ActivityFilteringProcessor : BaseProcessor<Activity>
    {
        // The OnStart method is called when an activity is started. This is the ideal place to filter activities.
        public override void OnStart(Activity activity)
        {
            // prevents all exporters from exporting internal activities
            if (activity.Kind == ActivityKind.Internal)
            {
                activity.IsAllDataRequested = false;
            }
        }
    }
    
  3. إذا لم تتم إضافة مصدر معين بشكل صريح باستخدام AddSource("ActivitySourceName")، فلن يتم تصدير أي من الأنشطة التي تم إنشاؤها باستخدام هذا المصدر.

الحصول على معرف التتبع أو معرف النطاق

قد تحتاج إلى الحصول على معرف التتبع أو معرف النطاق. إذا كانت لديك سجلات تم إرسالها إلى وجهة أخرى غير Application Insights، ففكر في إضافة معرف التتبع أو معرف النطاق. يؤدي القيام بذلك إلى تمكين ارتباط أفضل عند تصحيح الأخطاء وتشخيص المشكلات.

إشعار

Activityتمثل ActivitySource الفئات و من System.Diagnostics مساحة الاسم مفاهيم القياس المفتوح Span و Tracer على التوالي. وذلك لأن أجزاء من واجهة برمجة تطبيقات تتبع OpenTelemetry يتم دمجها مباشرة في وقت التشغيل .NET. لمعرفة المزيد، راجع مقدمة إلى OpenTelemetry .NET Tracing API.

// Get the current activity.
Activity activity = Activity.Current;
// Get the trace ID of the activity.
string traceId = activity?.TraceId.ToHexString();
// Get the span ID of the activity.
string spanId = activity?.SpanId.ToHexString();

الخطوات التالية

الأسئلة الشائعة

يقدم هذا القسم إجابات للأسئلة الشائعة.

ما هو OpenTelemetry؟

إنه معيار مفتوح المصدر جديد لقابلية الملاحظة. تعرف على المزيد في OpenTelemetry.

لماذا تستثمر Microsoft Azure Monitor في OpenTelemetry؟

Microsoft هي من بين أكبر المساهمين في القياس المفتوح.

تتمثل اقتراحات القيم الرئيسية لـ OpenTelemetry في أنها محايدة من قبل المورد وتوفر واجهات برمجة تطبيقات/SDK ثابتة عبر اللغات.

مع مرور الوقت، نعتقد أن OpenTelemetry سيمكن عملاء Azure Monitor من مراقبة التطبيقات المكتوبة بلغات تتجاوز لغاتنا المدعومة. كما أنه يوسع أنواع البيانات التي يمكنك جمعها من خلال مجموعة غنية من مكتبات الأجهزة. علاوة على ذلك، تميل مجموعات تطوير البرامج الخاصة ب OpenTelemetry إلى أن تكون أكثر أداء على نطاق واسع من أسلافها، وهي Application Insights SDKs.

كما أنه يتماشى مع إستراتيجية Microsoft لاحتضان المصدر المفتوح.

ما هي حالة OpenTelemetry؟

راجع حالة OpenTelemetry.

ما هو "Azure Monitor OpenTelemetry Distro"؟

يمكنك التفكير في الأمر على أنه برنامج تضمين رفيع يجمع معا جميع مكونات OpenTelemetry للحصول على تجربة من الدرجة الأولى على Azure. يسمى هذا التضمين أيضا التوزيع في OpenTelemetry.

لماذا يجب استخدام "Azure Monitor OpenTelemetry Distro"؟

هناك العديد من المزايا لاستخدام Azure Monitor OpenTelemetry Distro على OpenTelemetry الأصلي من المجتمع:

بروح OpenTelemetry، صممنا توزيعة لتكون مفتوحة وقابلة للتوسعة. على سبيل المثال، يمكنك إضافة:

  • مصدر بروتوكول القياس المفتوح (OTLP) وإرساله إلى وجهة ثانية في وقت واحد
  • مكتبات الأجهزة الأخرى غير المضمنة في توزيعة الأجهزة

نظرا لأن Distro يوفر توزيع OpenTelemetry، يدعم Distro أي شيء يدعمه OpenTelemetry. على سبيل المثال، يمكنك إضافة المزيد من معالجات بيانات تتبع الاستخدام أو المصدرين أو مكتبات الأجهزة، إذا كان OpenTelemetry يدعمها.

إشعار

يقوم Distro بتعيين العينة إلى عينة مخصصة ذات معدل ثابت ل Application Insights. يمكنك تغيير هذا إلى عينة مختلفة، ولكن القيام بذلك قد يعطل بعض القدرات المضمنة في Distro. لمزيد من المعلومات حول أداة أخذ العينات المدعومة، راجع قسم تمكين أخذ العينات في تكوين القياس المفتوح ل Azure Monitor.

بالنسبة للغات التي لا تحتوي على مصدر OpenTelemetry مستقل معتمد، فإن Azure Monitor OpenTelemetry Distro هو الطريقة الوحيدة المدعومة حاليا لاستخدام OpenTelemetry مع Azure Monitor. بالنسبة للغات التي لديها مصدر OpenTelemetry مستقل معتمد، لديك خيار استخدام إما Azure Monitor OpenTelemetry Distro أو مصدر OpenTelemetry المستقل المناسب اعتمادا على سيناريو القياس عن بعد. لمزيد من المعلومات، راجع متى يجب استخدام مصدر Azure Monitor OpenTelemetry؟.

كيف يمكنني اختبار Azure Monitor OpenTelemetry Distro؟

تحقق من مستندات التمكين الخاصة بنا ل .NET وJava وJavaScript (Node.js) وPython.

هل يجب استخدام OpenTelemetry أو Application Insights SDK؟

نوصي باستخدام OpenTelemetry Distro ما لم تكن بحاجة إلى ميزة متوفرة فقط مع الدعم الرسمي في Application Insights SDK.

يؤدي اعتماد OpenTelemetry الآن إلى منع الاضطرار إلى الترحيل في وقت لاحق.

متى يجب استخدام مصدر Azure Monitor OpenTelemetry؟

بالنسبة إلى ASP.NET Core وJava Node.js وPython، نوصي باستخدام Azure Monitor OpenTelemetry Distro. إنه سطر واحد من التعليمات البرمجية للبدء.

بالنسبة لجميع سيناريوهات .NET الأخرى، بما في ذلك ASP.NET الكلاسيكية وتطبيقات وحدة التحكم وما إلى ذلك، نوصي باستخدام مصدر .NET Azure Monitor OpenTelemetry: Azure.Monitor.OpenTelemetry.Exporter.

بالنسبة لسيناريوهات بيانات تتبع الاستخدام Python الأكثر تعقيدا التي تتطلب تكوينا متقدما، نوصي باستخدام مصدر بيانات تتبع الاستخدام المفتوح ل Python Azure Monitor.

ما هي حالة الإصدار الحالية للميزات داخل Azure Monitor OpenTelemetry Distro؟

يقسم المخطط التالي دعم ميزة OpenTelemetry لكل لغة.

ميزة .NET Node.js Python Java
التتبع الموزع
مقاييس مخصصة
المقاييس القياسية (الدقة المتأثرة حاليا بأخذ العينات)
أخذ العينات بمعدل ثابت
التخزين دون اتصال وإعادة المحاولة التلقائية
الإبلاغ عن الاستثناء
مجموعة السجلات ⚠️
أحداث مخصصة ⚠️ ⚠️ ⚠️
مصادقة Microsoft Entra
المقاييس المباشرة
الكشف عن سياق الموارد ل VM/VMSS وخدمة التطبيقات
الكشف عن سياق الموارد ل AKS والوظائف
تصفية نطاق اختبار التوفر
الملء التلقائي لمعرف المستخدم ومعرف المستخدم المصادق عليه وعنوان IP للمستخدم
تجاوز/تعيين اسم العملية أو معرف المستخدم أو معرف المستخدم المصادق عليه يدويا
أخذ العينات التكيفية
منشئ ملفات التعريف ⚠️
Snapshot Debugger

المفتاح

  • ✅ تتوفر هذه الميزة لجميع العملاء الذين لديهم دعم رسمي.
  • ⚠️ تتوفر هذه الميزة كمعاينة عامة. راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
  • ❌ هذه الميزة غير متوفرة أو غير قابلة للتطبيق.

هل يمكن استخدام OpenTelemetry لمستعرضات الويب؟

نعم، لكننا لا نوصي به ولا يدعمه Azure. تم تحسين OpenTelemetry JavaScript بشكل كبير Node.js. بدلا من ذلك، نوصي باستخدام Application Insights JavaScript SDK.

متى يمكننا توقع توفر OpenTelemetry SDK للاستخدام في مستعرضات الويب؟

لا يحتوي OpenTelemetry web SDK على مخطط زمني محدد للتوفر. من المحتمل أن نكون على بعد عدة سنوات من متصفح SDK الذي يعد بديلا قابلا للتطبيق Insights JavaScript SDK.

هل يمكنني اختبار OpenTelemetry في مستعرض ويب اليوم؟

تعد بيئة الاختبار المعزولة للويب OpenTelemetry نسخة المستودع المصممة لجعل OpenTelemetry تعمل في مستعرض. لا يمكن بعد إرسال بيانات تتبع الاستخدام إلى Application Insights. لا تحدد SDK أحداث العميل العامة.

هل يتم دعم تشغيل Application Insights جنبا إلى جنب مع وكلاء منافسين مثل AppDynamics وDataDog و NewRelic؟

‏‏لا. هذه الممارسة ليست شيئا نخطط لاختباره أو دعمه، على الرغم من أن Distros الخاصة بنا تسمح لك بالتصدير إلى نقطة نهاية OTLP جنبا إلى جنب مع Azure Monitor في وقت واحد.

هل يمكنني استخدام ميزات المعاينة في بيئات الإنتاج؟

لا نوصي بذلك. راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.

ما الفرق بين الأجهزة اليدوية والتلقائية؟

راجع نظرة عامة على OpenTelemetry.

هل يمكنني استخدام OpenTelemetry Collector؟

يستخدم بعض العملاء OpenTelemetry Collector كبديل للعامل، على الرغم من أن Microsoft لا تدعم رسميا نهجا يستند إلى عامل لمراقبة التطبيق حتى الآن. في هذه الأثناء، ساهم مجتمع المصدر المفتوح بمصدر OpenTelemetry Collector Azure Monitor الذي يستخدمه بعض العملاء لإرسال البيانات إلى Azure Monitor Application Insights. هذا غير معتمد من قبل Microsoft.

ما الفرق بين OpenCensus وOpenTelemetry؟

OpenCensus هو مقدمة OpenTelemetry. ساعدت Microsoft في الجمع بين OpenTracing وOpenCensus لإنشاء OpenTelemetry، وهو معيار واحد للمراقبة للعالم. تستند Python SDK الحالية الموصى بها للإنتاج ل Azure Monitor إلى OpenCensus. تلتزم Microsoft بإجراء Azure Monitor استنادا إلى OpenTelemetry.

استكشاف الأخطاء وإصلاحها

ألا تعمل؟ تحقق من صفحة استكشاف الأخطاء وإصلاحها ل ASP.NET Core.

يدعم

حدد علامة تبويب للغة التي تختارها لاكتشاف خيارات الدعم.

  • بالنسبة إلى مشكلات دعم Azure، افتح تذكرة دعم Azure.
  • بالنسبة إلى مشكلات القياس عن بُعد المفتوح، اتصل بمجتمع القياس عن بُعد المفتوح مباشرة.
  • للحصول على قائمة بالمشكلات المفتوحة المتعلقة بمصدر Azure Monitor، راجع صفحة مشكلات GitHub.

ردود فعل القياس عن بُعد المفتوح

لتقديم التعليقات: