مشاركة عبر


إضافة وتعديل Azure Monitor OpenTelemetry لتطبيقات .NET وJava Node.js وPython

يوفر هذا الدليل إرشادات حول دمج وتخصيص أجهزة OpenTelemetry (OTel) داخل Azure Monitor Application Insights.

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

إشعار

بالنسبة إلى Azure Function Apps، راجع استخدام OpenTelemetry مع Azure Functions.

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

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

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

الطلبات

التبعيات

تسجيل

  • ILogger

لتقليل أو زيادة عدد السجلات المرسلة إلى Azure Monitor، قم بتكوين التسجيل لتعيين مستوى السجل المناسب أو تطبيق عوامل التصفية. على سبيل المثال، يمكنك اختيار الإرسال فقط Warning والسجلات Error إلى OpenTelemetry/Azure Monitor. لا يتحكم OpenTelemetry في توجيه السجل أو تصفيته - يتخذ التكوين الخاص بك ILogger هذه القرارات. لمزيد من المعلومات حول تكوين ILogger، راجع تكوين التسجيل.

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

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

  • ¹: يدعم الإبلاغ التلقائي عن الاستثناءات غير المعالجة/غير المعالجة
  • ²: يدعم مقاييس القياس المفتوح

إشعار

تتضمن 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 مثل service.name، cloud.providerو و cloud.resource_id. تعمل بيانات التعريف هذه على تعزيز التجارب في Application Insights مثل Application Map وربط الحوسبة، كما أنها تعمل على تحسين الارتباط عبر التتبعات والمقاييس والسجلات.

تلميح

تصف سمات الموارد العملية وبيئتها. تصف سمات Span عملية واحدة. استخدام سمات الموارد للخصائص على مستوى التطبيق مثل service.name.

البيئات المدعومة

وسط آلية عمل الاكتشاف Notes
"Azure App Service" تقرأ اللغة SDK أو توزيعة Azure Monitor متغيرات بيئة App Service المعروفة وبيانات تعريف المضيف يعمل مع .NET وJava وNode.jsوPython عند استخدام الإرشادات الواردة في هذه المقالة.
Azure Functions راجع كيفية Azure Functions OpenTelemetry توجد جميع إرشادات Azure Functions هناك.
أجهزة Azure الظاهرية تستعلم SDK أو التوزيعة للغة عن خدمة بيانات تعريف مثيل Azure تأكد من أن الجهاز الظاهري لديه حق الوصول إلى نقطة نهاية خدمة بيانات تعريف المثيل.
خدمة Azure Kubernetes ‏(AKS) استخدام معالج OpenTelemetry Collector k8sattributes لإضافة بيانات تعريف Kubernetes موصى به لجميع اللغات التي تعمل بتنسيق AKS.
Azure Container Apps تقوم أجهزة الكشف بتعيين متغيرات البيئة ومعرفات الموارد عند توفرها يمكنك أيضا الضبط OTEL_RESOURCE_ATTRIBUTES لملء الفجوات.

الأجهزة اليدوية والآلية

  • تتيح الأجهزة التلقائية وتوزيعات Azure Monitor اكتشاف الموارد عند التشغيل في بيئات Azure حيث يتم دعمها.

  • بالنسبة للإعدادات اليدوية، يمكنك تعيين سمات الموارد مباشرة باستخدام خيارات OpenTelemetry القياسية:

    # Applies to .NET (ASP.NET/ASP.NET Core), Java, Node.js, and Python
    export OTEL_SERVICE_NAME="my-service"
    export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=westus,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"
    

    على Windows PowerShell:

    $Env:OTEL_SERVICE_NAME="my-service"
    $Env:OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=westus,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"
    

اعتبارات استيعاب OTLP

  • يستخدم service.name Application Insights لاشتقاق اسم دور السحابة. اختر اسما ثابتا لكل خدمة لتجنب العقد المجزأة في مخطط التطبيق.
  • cloud.resource_id يحسن ارتباط الحوسبة بموارد Azure. إذا كانت هذه السمة مفقودة، فقد لا تظهر بعض التجارب مورد Azure الذي أنتج البيانات.

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

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

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

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

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

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

إشعار

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

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

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

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

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

أداة القياس عن بعد المفتوحة نوع تجميع 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 الأحداث المخصصة في customEvents الجدول. تتمثل إحدى طرق تحليلها وتصفيتها وتصورها في استخدام تجارب استخدام Application Insights.

إذا كنت ترغب في أتمتة مجموعة أحداث التفاعل من جانب العميل، يمكنك استخدام المكون الإضافي في JavaScript SDK.

الأحداث المخصصة في المعاينة العامة وتستخدم Azure.Monitor.OpenTelemetry.AspNetCore 1.3.0-beta.3.

هام

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

لإرسال CustomEvent باستخدام ILogger، قم بتعيين السمة "microsoft.custom_event.name" في قالب الرسالة.

// Create a logger factory and configure OpenTelemetry with Azure Monitor
var loggerFactory = LoggerFactory.Create(builder =>
{
    builder
        .AddOpenTelemetry(options =>
        {
            options.AddAzureMonitorLogExporter();
        });
});

// Create a logger for the specified category
var logger = loggerFactory.CreateLogger(logCategoryName);

// Log a custom event with a custom name and additional attribute
// The 'microsoft.custom_event.name' value will be used as the name of the customEvent
logger.LogInformation("{microsoft.custom_event.name} {additional_attrs}", "test-event-name", "val1");

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

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

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

يمكن أن تتضمن هذه السمات إضافة خاصية مخصص إلى قياسك عن بُعد. يمكنك أيضًا استخدام سمات لتعيين الحقول الاختيارية في مخطط 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 للطلبات عن طريق تعيين سمة على النطاق. يستخدم Application Insights عنوان IP لإنشاء سمات موقع المستخدم ثم يتجاهله افتراضيا.

استخدم مثال الخاصية

// 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. يمكن إرفاق أبعاد مخصصة بالسجلات باستخدام قالب رسالة.

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

يمكنك الحصول على Trace ID و Span ID من النطاق النشط حاليا باستخدام الخطوات التالية.

إشعار

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

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