تكوين Azure Monitor OpenTelemetry

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

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

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

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

  • أضف UseAzureMonitor() إلى بدء تشغيل التطبيق الخاص بك، في فصلك program.cs الدراسي.

    // 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 => {
        options.ConnectionString = "<Your Connection String>";
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.    
    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 OpenTelemetry tracer provider to add the resource attributes to all traces.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => 
    builder.ConfigureResource(resourceBuilder => 
        resourceBuilder.AddAttributes(resourceAttributes)));

// 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(o =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    o.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) وضبط المعدل بناء على دقة العمليات الموضحة في شفرات الفشل والأداء. ينتج عن ارتفاع المعدل بشكل عام دقة أعلى. ومع ذلك، فإن أي أخذ عينات سيؤثر على الدقة لذلك نوصي بالتنبيه على مقاييس القياس المفتوح، والتي لا تتأثر بأخذ العينات.

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

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

نحن ندعم فئات بيانات الاعتماد التي توفرها Azure Identity.

  • نوصي DefaultAzureCredential بالتطوير المحلي.
  • نوصي بالهويات ManagedIdentityCredential المدارة المعينة من قبل النظام والمخصصة من قبل المستخدم.
    • بالنسبة إلى النظام المعين، استخدم المنشئ الافتراضي بدون معلمات.
    • بالنسبة إلى المعين من قبل المستخدم، قم بتوفير معرف العميل إلى الدالة الإنشائية.
  • نوصي بكيانات ClientSecretCredential الخدمة.
    • قم بتوفير معرف المستأجر ومعرف العميل وسر العميل إلى الدالة الإنشائية.
  1. تثبيت أحدث حزمة Azure.Identity :

    dotnet add package Azure.Identity
    
  2. توفير فئة بيانات الاعتماد المطلوبة:

    // 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 credential to the DefaultAzureCredential.
        // This credential will use the Azure identity of the current user or
        // the service principal that the application is running as to authenticate
        // to Azure Monitor.
        options.Credential = new DefaultAzureCredential();
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

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

لتحسين الموثوقية والمرونة، تكتب العروض المستندة إلى 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 الأسبقية.

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

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

ما هو 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.

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

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