مشاركة عبر


تكوين Azure Monitor OpenTelemetry

تتناول هذه المقالة إعدادات التكوين الخاصة ب Azure Monitor OpenTelemetry distro.

سلسلة الاتصال

يحدد سلسلة الاتصال في Application Insights الموقع المستهدف لإرسال بيانات تتبع الاستخدام.

استخدم إحدى الطرق الثلاث التالية لتكوين سلسلة الاتصال:

  • إضافة UseAzureMonitor() إلى الملف:program.cs

    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
        options.ConnectionString = "<Your Connection String>";
    });
    
    var app = builder.Build();
    
    app.Run();
    
  • تعيين متغير بيئة.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
    
  • أضف القسم التالي إلى ملف التكوين.appsettings.json

    {
      "AzureMonitor": {
          "ConnectionString": "<Your Connection String>"
      }
    }
    

إشعار

إذا قمت بتعيين سلسلة الاتصال في أكثر من مكان واحد، فإننا نلتزم بالأسبقية التالية:

  1. رمز
  2. متغير بيئة
  3. ملف التكوين

تعيين اسم دور مجموعة النظراء ومثيل دور مجموعة النظراء

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

قم بتعيين اسم دور السحابة ومثيل دور السحابة عبر سمات المورد . يستخدم اسم دور مجموعة النظراء السمات service.namespace وservice.name، على الرغم من أنه يقع مرة أخرى إلى service.name إذا لم يتم تعيين service.namespace. يستخدم مثيل دور مجموعة النظراء service.instance.id قيمة السمة. للحصول على معلومات حول السمات القياسية للموارد، راجع اصطلاحات القياس الدلالي OpenTelemetry.

// Setting role name and role instance

// Create a dictionary of resource attributes.
var resourceAttributes = new Dictionary<string, object> {
    { "service.name", "my-service" },
    { "service.namespace", "my-namespace" },
    { "service.instance.id", "my-instance" }};

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

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry()
    .UseAzureMonitor()
    // Configure the ResourceBuilder to add the custom resource attributes to all signals.
    // Custom resource attributes should be added AFTER AzureMonitor to override the default ResourceDetectors.
    .ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(_testResourceAttributes));

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

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

تمكين أخذ العينات

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

إشعار

لا تتأثر المقاييس والسجلات بأخذ العينات.

يتوقع العينة معدل عينة يتراوح بين 0 و1 ضمنا. معدل 0.1 يعني أن حوالي 10٪ من آثارك يتم إرسالها.

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

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    options.SamplingRatio = 0.1F;
});

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

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

تلميح

عند استخدام أخذ العينات بمعدل ثابت/النسبة المئوية ولست متأكدا مما يجب تعيين معدل أخذ العينات عليه، ابدأ من 5٪. (نسبة أخذ العينات 0.05) اضبط المعدل استنادا إلى دقة العمليات المعروضة في أجزاء الفشل والأداء. ينتج عن ارتفاع المعدل بشكل عام دقة أعلى. ومع ذلك، يؤثر أي أخذ عينات على الدقة لذلك نوصي بالتنبيه على مقاييس القياس المفتوح، والتي لا تتأثر بأخذ العينات.

المقاييس الحية

توفر المقاييس المباشرة لوحة معلومات تحليلات في الوقت الحقيقي للحصول على نظرة ثاقبة حول نشاط التطبيق وأدائه.

هام

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

يتم تمكين هذه الميزة بشكل افتراضي.

يمكن للمستخدمين تعطيل Live Metrics عند تكوين Distro.

builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
	// Disable the Live Metrics feature.
    options.EnableLiveMetrics = false;
});

تمكين مصادقة معرف Microsoft Entra (المعروف سابقا ب Azure AD)

قد ترغب في تمكين مصادقة Microsoft Entra لاتصال أكثر أمانا ب Azure، ما يمنع استيعاب بيانات تتبع الاستخدام غير المصرح بها في اشتراكك.

لمزيد من المعلومات، راجع صفحة مصادقة Microsoft Entra المخصصة المرتبطة بكل لغة مدعومة.

للحصول على معلومات حول تكوين مصادقة معرف Entra، راجع مصادقة Microsoft Entra ل Application Insights

التخزين غير المتصل وإعادة المحاولة التلقائية

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

تتضمن حزمة Distro AzureMonitorExporter، الذي يستخدم بشكل افتراضي أحد المواقع التالية للتخزين دون اتصال (مدرج بترتيب الأسبقية):

  • Windows
    • ٪LOCALAPPDATA٪\Microsoft\AzureMonitor
    • ٪TEMP٪\Microsoft\AzureMonitor
  • غير Windows
    • ٪TMPDIR٪/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

لتجاوز الدليل الافتراضي، يجب عليك تعيين AzureMonitorOptions.StorageDirectory.

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

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
    // Set the Azure Monitor storage directory to "C:\\SomeDirectory".
    // This is the directory where the OpenTelemetry SDK will store any telemetry data that cannot be sent to Azure Monitor immediately.
    options.StorageDirectory = "C:\\SomeDirectory";
});

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

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

لتعطيل هذه الميزة، يجب تعيين AzureMonitorOptions.DisableOfflineStorage = true.

تمكين مصدر OTLP

قد ترغب في تمكين مصدر بروتوكول القياس المفتوح (OTLP) جنبا إلى جنب مع مصدر Azure Monitor لإرسال بيانات تتبع الاستخدام إلى موقعين.

إشعار

يتم عرض مصدر OTLP للراحة فقط. نحن لا ندعم رسميًا المصدر OTLP أو أي مكونات أو تجارب طرف ثالث في المصب منه.

  1. قم بتثبيت حزمة OpenTelemetry.Exporter.OpenTelemetryProtocol في مشروعك.

    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
    
  2. أضف جزء التعليمة البرمجية المكررة التالي. يفترض هذا المثال أن لديك جامع OpenTelemetry مع جهاز استقبال OTLP قيد التشغيل. للحصول على التفاصيل، راجع المثال على GitHub.

    // Create a new ASP.NET Core web application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Add the OpenTelemetry OTLP exporter to the application.
    // This exporter will send telemetry data to an OTLP receiver, such as Prometheus
    builder.Services.AddOpenTelemetry().WithTracing(builder => builder.AddOtlpExporter());
    builder.Services.AddOpenTelemetry().WithMetrics(builder => builder.AddOtlpExporter());
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

تكوينات OpenTelemetry

يمكن الوصول إلى تكوينات OpenTelemetry التالية من خلال متغيرات البيئة أثناء استخدام Azure Monitor OpenTelemetry Distros.

متغير البيئة ‏‏الوصف
APPLICATIONINSIGHTS_CONNECTION_STRING قم بتعيينه إلى سلسلة الاتصال لمورد Application Insights الخاص بك.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED قم بتعيينه إلى true لإلغاء الاشتراك في مجموعة المقاييس الداخلية.
OTEL_RESOURCE_ATTRIBUTES أزواج قيمة المفتاح لاستخدامها كسمات مورد. لمزيد من المعلومات حول سمات المورد، راجع مواصفات Resource SDK.
OTEL_SERVICE_NAME تعيين قيمة سمة service.name المورد. إذا service.name تم توفيره أيضا في OTEL_RESOURCE_ATTRIBUTES، فإن له OTEL_SERVICE_NAME الأسبقية.

تنقيح سلاسل استعلام URL

لتنقية سلاسل استعلام URL، قم بإيقاف تشغيل مجموعة سلسلة الاستعلام. نوصي بهذا الإعداد إذا قمت باستدعاء تخزين Azure باستخدام رمز SAS المميز.

عند استخدام حزمة توزيع Azure.Monitor.OpenTelemetry.AspNetCore، يتم تضمين مكتبتي ASP.NET Core وHttpClient Instrumentation. تقوم حزمة distro الخاصة بنا بإيقاف تشغيل Query String Redaction بشكل افتراضي.

لتغيير هذا السلوك، يجب تعيين متغير بيئة إلى أو true false.

  • ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION يتم تعطيل Query String Redaction بشكل افتراضي. للتمكين، قم بتعيين متغير البيئة هذا إلى false.
  • Http Client Instrumentation: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION يتم تعطيل Query String Redaction بشكل افتراضي. للتمكين، قم بتعيين متغير البيئة هذا إلى false.