ما هو التتبع الموزع وارتباط بيانات تتبع الاستخدام؟

إشعار

تعتمد الوثائق التالية على واجهة برمجة تطبيقات Application Insights الكلاسيكية. الخطة طويلة الأجل ل Application Insights هي جمع البيانات باستخدام OpenTelemetry. لمزيد من المعلومات، راجع تمكين Azure Monitor OpenTelemetry لتطبيقات .NET Node.js وPython وJava.

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

يوفر Azure Monitor تجربتين لاستهلاك بيانات التتبع الموزعة: طريقة عرض تشخيص المعاملات لمعاملة/طلب واحد وعرض خريطة التطبيق لإظهار كيفية تفاعل الأنظمة.

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

تمكين التتبع الموزع

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

تمكين عبر Application Insights من خلال الإتلاف التلقائي أو SDKs

يدعم كل من وكلاء Application Insights و SDKs لـ .NET و .NET Core و Java و Node.js و JavaScript التتبع الموزع محليًا. تتوفر إرشادات حول تثبيت وتكوين كل حزمة SDK من Application Insights لـ:

مع تثبيت وتكوين Application Insights SDK المناسب، يتم جمع معلومات التتبع تلقائيا لأطر العمل والمكتبات والتقنيات الشائعة بواسطة أجهزة التحكم التلقائية لتبعية SDK. تتوفر القائمة الكاملة للتقنيات المدعومة في وثائق التبعية التلقائية.

يمكن أيضًا تتبع أي تقنية يدويًا من خلال استدعاء TrackDependency على TelemetryClient.

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

يدعم Insights Application الآن تتبع الموزع من خلال OpenTelemetry يوفر OpenTelemetry تقريرًا عن حالة النظام للمورد لإرسال التتبع المكدس والمقاييس والسجلات إلى Application Insights . في البداية، تولى مجتمع OpenTelemetry عملية التتبع الموزع. المقاييس والسجلات لا تزال قيد التقدم.

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

تتكون الصفحات التالية من إرشادات لغة تلو الأخرى لتمكين عروض Microsoft القائمة على OpenTelemetry وتكوينها. والأهم من ذلك، نشارك الوظائف والقيود المتاحة لكل عرض حتى تتمكن من تحديد ما إذا كان OpenTelemetry مناسبًا لمشروعك.

يُمكّن عبر OpenCensus

بالإضافة إلى حزم SDK لـ Application Insights، يدعم Application Insights التتبع الموزع من خلال OpenCensus. OpenCensus هو توزيع مفتوح المصدر للمكتبات غير محدد البائعين لتوفير جمع المقاييس والتتبع الموزع للخدمات. كما أنه يمكّن المجتمع مفتوح المصدر من تمكين التتبع الموزع باستخدام التقنيات الشائعة مثل Redis أو Memcached أو MongoDB. تتعاون Microsoft على OpenCensus مع العديد من شركاء المراقبة والسحابة الآخرين.

لمزيد من المعلومات حول OpenCensus for Python، راجع إعداد Azure Monitor لتطبيق Python الخاص بك.

يحتفظ موقع OpenCensus على الويب بوثائق مرجعية لـ API لـ Python و Go وأدلة مختلفة لاستخدام OpenCensus.

نموذج البيانات لارتباط التتبع

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

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

يمثل القياس عن بعد للتبعية كل عملية صادرة، مثل استدعاء HTTP لمكون آخر. كما أنها تحدد خاصتها id الفريدة عالميا. طلب القياس عن بعد، الذي بدأه استدعاء التبعية هذا، يستخدم هذا id ك .operation_parentId

يمكنك إنشاء طريقة عرض للعملية المنطقية الموزعة باستخدام operation_Idو operation_parentIdو request.id مع dependency.id. تحدد هذه الحقول أيضًا ترتيب السببية لمكالمات التتبع.

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

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

للحصول على معلومات حول الاستعلام من مثيلات متباينة متعددة باستخدام app تعبير الاستعلام، راجع تعبير app () في استعلام Azure Monitor.

مثال

هيا بنا نلقي نظرة على مثال. يظهر تطبيق يسمى Stock Prices سعر السوق الحالي للسهم باستخدام واجهة برمجة تطبيقات خارجية تسمى Stock. يحتوي تطبيق أسعار الأسهم على صفحة تسمى صفحة الأسهم التي يفتحها مستعرض ويب العميل باستخدام GET /Home/Stock. يستعلم التطبيق عن Stock API باستخدام استدعاء GET /api/stock/valueHTTP .

يمكنك تحليل التتبع الناتج عن طريق تشغيل استعلام:

(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id

في النتائج، كافة عناصر التتبع تشترك في الجذر operation_Id. عند إجراء استدعاء Ajax من الصفحة، يتم تعيين معرف فريد جديد (qJSXU) إلى القياس عن بعد للتبعية، ويتم استخدام معرف pageView ك operation_ParentId. ثم يستخدم طلب الخادم معرف Ajax ك operation_ParentId.

itemType الاسم المعرف operation_ParentId operation_Id
pageView صفحة الأسهم STYz STYz
التبعية GET/ الصفحة الرئيسة/ المخزون qJSXU STYz STYz
طلب صفحة GET/ المخزون KqKwlrSt9PA= qJSXU STYz
التبعية GET/api/ المخزون/ القيمة bBrf2L7mm2g= KqKwlrSt9PA= STYz

عند إجراء الاستدعاء GET /api/stock/value إلى خدمة خارجية، تحتاج إلى معرفة هوية هذا الخادم حتى تتمكن من تعيين dependency.target الحقل بشكل مناسب. وعندما لا تدعم الخدمة الخارجية المراقبة، يتم تعيين target إلى اسم مضيف الخدمة. مثال على ذلك stock-prices-api.com . ولكن إذا كانت الخدمة تعرف نفسها عن طريق إرجاع عنوان HTTP معرف مسبقا، target تحتوي على هوية الخدمة التي تسمح ل Application Insights بإنشاء تتبع موزع عن طريق الاستعلام عن القياس عن بعد من تلك الخدمة.

رؤوس الارتباط باستخدام W3C TraceContext

ينتقل Application Insights إلى W3C Trace-Context، والذي يحدد:

  • traceparent: يحمل معرف العملية الفريد عالميا والمعرف الفريد للمكالمة.
  • tracestate: يحمل سياق تتبع خاص بالنظام.

يدعم أحدث إصدار عدة تطوير البرامج لـ Application Insights بروتوكول Trace-Context؛ ولكن قد تحتاج إلى الاشتراك فيه. (يتم الاحتفاظ بالتوافق مع الإصدارات السابقة مع بروتوكول الارتباط السابق المدعوم من قبل Application Insights SDK.)

يتم إهمال بروتوكول HTTP الارتباط، المسمى أيضا Request-Id. يعرف هذا البروتوكول عنوانين:

  • Request-Id: يحمل المعرف الفريد عالميا للمكالمة.
  • Correlation-Context: يحمل مجموعة أزواج الاسم والقيمة لخصائص التتبع الموزعة.

يحدد Application Insights أيضا ملحق بروتوكول HTTP الارتباط. يستخدم Request-Context أزواج قيمة الاسم لنشر مجموعة الخصائص المستخدمة من قبل المتصل الفوري أو المتصل. يستخدم Application Insights SDK هذا العنوان لتعيين الحقلين dependency.target و request.source .

يتم تعيين نماذج بيانات W3C Trace-Context وApplication Insights بالطريقة التالية:

Application Insights W3C TraceContext
Id من Request و Dependency معرف الأصل
Operation_Id معرف التتبع
Operation_ParentId معرف الأصل للامتداد الأصل لهذا النطاق. يجب أن يكون هذا الحقل فارغا إذا كان امتدادًا جذريًا.

لمزيد من المعلومات، راجع نموذج بيانات تتبع الاستخدام Application Insights.

تمكين دعم التتبع الموزع عن طريق W3C لتطبيقات .NET

يتم تمكين التتبع الموزع المستند إلى W3C TraceContext افتراضيًا في جميع حزم .NET Framework / .NET Core SDK الحديثة، جنبًا إلى جنب مع التوافق مع بروتوكول معرف الطلب القديم.

تمكين دعم التتبع الموزع عن طريق W3C لتطبيقات Java

وكيل Java 3.0

يدعم وكيل Java 3.0 W3C خارج الصندوق، ولا يلزم تكوين آخر.

Java SDK

  • التكوين الوارد

    بالنسبة لتطبيقات Java EE، أضف التعليمات البرمجية الآتية إلى <TelemetryModules> علامة في ApplicationInsights.xml:

    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule>
       <Param name = "W3CEnabled" value ="true"/>
       <Param name ="enableW3CBackCompat" value = "true" />
    </Add>
    

    لتطبيقات Spring Boot، أضف هذه الخصائص:

    • azure.application-insights.web.enable-W3C=true
    • azure.application-insights.web.enable-W3C-backcompat-mode=true
  • التكوين الصادر

    أضف التعليمات البرمجية التالية إلى AI-Agent.xml:

    <Instrumentation>
      <BuiltIn enabled="true">
        <HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
      </BuiltIn>
    </Instrumentation>
    

    إشعار

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

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

من المهم التأكد من أن التكوينات الواردة والصادرة متطابقة تمامًا.

تمكين دعم التتبع الموزع لـ W3C لتطبيقات الويب

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

إذا تم إرسال طلبات XMLHttpRequest أو Fetch Ajax إلى مضيف مجال مختلف، بما في ذلك المجالات الفرعية، فلن يتم تضمين رؤوس الارتباط بشكل افتراضي. لتمكين هذه الميزة enableCorsCorrelation ، قم بتعيين حقل التكوين إلى true. إذا قمت بتعيين enableCorsCorrelation إلى true، فإن جميع طلبات XMLHttpRequest و Fetch Ajax تتضمن رؤوس الارتباط. ونتيجة لذلك، إذا كان التطبيق على الخادم الذي يتم استدعاؤه لا يدعم traceparent العنوان، فقد يفشل الطلب، اعتمادا على ما إذا كان المستعرض / الإصدار يمكنه التحقق من صحة الطلب بناء على الرؤوس التي يقبلها الخادم. يمكنك استخدام correlationHeaderExcludedDomains حقل التكوين لاستبعاد مجال الخادم من حقن عنوان الارتباط عبر المكونات. على سبيل المثال، يمكنك استخدام correlationHeaderExcludedDomains: ['*.auth0.com'] لاستبعاد رؤوس الارتباطات من الطلبات المرسلة إلى موفر هوية Auth0.

هام

لمشاهدة جميع التكوينات المطلوبة لتمكين الارتباط، راجع وثائق ارتباط JavaScript.

ارتباط التتبع في OpenCensus Python

يدعم OpenCensus Python W3C Trace-Context دون الحاجة إلى تكوين إضافي.

للحصول على مرجع، يمكنك العثور على نموذج بيانات OpenCensus في صفحة GitHub هذه.

ارتباط الطلب الوارد

يربط OpenCensus Python عناوين Trace-Context W3C من الطلبات الواردة إلى الامتدادات التي يتم إنشاؤها من الطلبات نفسها. يرتبط OpenCensus تلقائيا بالتكاملات لأطر عمل تطبيقات الويب الشائعة هذه: Flask و Django و هرم. تحتاج فقط إلى ملء عناوين W3C Trace-Context بالتنسيق الصحيح وإرسالها مع الطلب.

استكشف نموذج تطبيق Flask هذا. تثبيت Flask وOpenCensus وملحقات Flask وAzure.


pip install flask opencensus opencensus-ext-flask opencensus-ext-azure

تحتاج إلى إضافة سلسلة الاتصال Application Insights إلى متغير البيئة.

APPLICATIONINSIGHTS_CONNECTION_STRING=<appinsights-connection-string>

نموذج تطبيق Flask

from flask import Flask
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.ext.flask.flask_middleware import FlaskMiddleware
from opencensus.trace.samplers import ProbabilitySampler

app = Flask(__name__)
middleware = FlaskMiddleware(
    app,
    exporter=AzureExporter(
        connection_string='<appinsights-connection-string>', # or set environment variable APPLICATION_INSIGHTS_CONNECTION_STRING
    ), 
    sampler=ProbabilitySampler(rate=1.0),
)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='localhost', port=8080, threaded=True)

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

curl --header "traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01" localhost:8080

من خلال النظر إلى تنسيق عنوان Trace-Context، يمكنك اشتقاق المعلومات التالية:

version: 00

trace-id: 4bf92f3577b34da6a3ce929d0e0e4736

parent-id/span-id: 00f067aa0ba902b7

trace-flags: 01

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

Screenshot that shows Request telemetry in Logs (Analytics).

idالحقل في التنسيق<trace-id>.<span-id>، حيثtrace-id يتم أخذها من رأس التتبع الذي تم تمريره في الطلب وهو span-id عبارة عن صفيف مكون من 8 بايت تم إنشاؤه لهذا النطاق.

operation_ParentIdالحقل في التنسيق<trace-id>.<parent-id>، حيث يتم أخذ كليهما trace-id و parent-idيتم أخذهما من رأس التتبع الذي تم تمريره في الطلب.

ارتباط السجل

يتيح لك OpenCensus Python ربط السجلات بإضافة معرف تتبع ومعرف نطاق، وإشارة أخذ عينات للسجلات. يمكنك إضافة هذه السمات عن طريق تثبيت تكامل تسجيل OpenCensus. تتم إضافة السمات التالية إلى كائنات Python LogRecord : traceIdو spanIdو traceSampled (ينطبق فقط على المسجلات التي تم إنشاؤها بعد التكامل).

تثبيت تكامل تسجيل OpenCensus:

python -m pip install opencensus-ext-logging

نموذج التطبيق

import logging

from opencensus.trace import config_integration
from opencensus.trace.samplers import AlwaysOnSampler
from opencensus.trace.tracer import Tracer

config_integration.trace_integrations(['logging'])
logging.basicConfig(format='%(asctime)s traceId=%(traceId)s spanId=%(spanId)s %(message)s')
tracer = Tracer(sampler=AlwaysOnSampler())

logger = logging.getLogger(__name__)
logger.warning('Before the span')
with tracer.span(name='hello'):
    logger.warning('In the span')
logger.warning('After the span')

عند تشغيل هذا الكود، يُكتب التالي في وحدة التحكم:

2019-10-17 11:25:59,382 traceId=c54cb1d4bbbec5864bf0917c64aeacdc spanId=0000000000000000 Before the span
2019-10-17 11:25:59,384 traceId=c54cb1d4bbbec5864bf0917c64aeacdc spanId=70da28f5a4831014 In the span
2019-10-17 11:25:59,385 traceId=c54cb1d4bbbec5864bf0917c64aeacdc spanId=0000000000000000 After the span

لاحظ أن هناك spanId هدية لرسالة السجل الموجودة ضمن النطاق. و⁧spanId⁩ هو نفسه الذي ينتمي إلى امتداد اسمه ⁧hello⁩.

يمكنك تصدير بيانات السجل باستخدام AzureLogHandler. لمزيد من المعلومات، راجع إعداد Azure Monitor لتطبيق Python الخاص بك.

يمكننا أيضًا تمرير معلومات التتبع من مكون إلى آخر من أجل الارتباط الصحيح. على سبيل المثال، ضع في اعتبارك سيناريو يوجد فيه مكونان، module1 و module2. تستدعي الوحدة 1 الوظائف في الوحدة 2. للحصول على سجلات من كليهما module1وmodule2 في تتبع واحد، يمكننا استخدام النهج التالي:

# module1.py
import logging

from opencensus.trace import config_integration
from opencensus.trace.samplers import AlwaysOnSampler
from opencensus.trace.tracer import Tracer
from module_2 import function_1

config_integration.trace_integrations(["logging"])
logging.basicConfig(
    format="%(asctime)s traceId=%(traceId)s spanId=%(spanId)s %(message)s"
)
tracer = Tracer(sampler=AlwaysOnSampler())

logger = logging.getLogger(__name__)
logger.warning("Before the span")

with tracer.span(name="hello"):
    logger.warning("In the span")
    function_1(logger, tracer)
logger.warning("After the span")
# module_2.py
import logging

from opencensus.trace import config_integration
from opencensus.trace.samplers import AlwaysOnSampler
from opencensus.trace.tracer import Tracer

config_integration.trace_integrations(["logging"])
logging.basicConfig(
    format="%(asctime)s traceId=%(traceId)s spanId=%(spanId)s %(message)s"
)
logger = logging.getLogger(__name__)
tracer = Tracer(sampler=AlwaysOnSampler())


def function_1(logger=logger, parent_tracer=None):
    if parent_tracer is not None:
        tracer = Tracer(
            span_context=parent_tracer.span_context,
            sampler=AlwaysOnSampler(),
        )
    else:
        tracer = Tracer(sampler=AlwaysOnSampler())

    with tracer.span("function_1"):
        logger.info("In function_1")

ارتباط التتبع في .NET

تتم معالجة الارتباط بشكل افتراضي عند إعداد تطبيق. لا يلزم اتخاذ إجراءات خاصة.

يدعم وقت تشغيل .NET التوزيع بمساعدة Activity و DiagnosticSource

يستخدم DiagnosticSource Application Insights .NET SDK و Activity لجمع بيانات تتبع الاستخدام وربطها.

ارتباط التتبع في Java

يدعم عامل Java الارتباط التلقائي لبيانات تتبع الاستخدام. يتم ملء operation_id تلقائيا لجميع بيانات تتبع الاستخدام (مثل التتبعات والاستثناءات والأحداث المخصصة) الصادرة ضمن نطاق الطلب. كما تقوم أيضًا بنشر عناوين الارتباط التي تم وصفها مسبقًا لمكالمات الخدمة إلى الخدمة عبر HTTP، إذا تم تكوين وكيل Java SDK.

إشعار

يقوم عامل Java لـ Application Insights بجمع الطلبات والتبعيات آليًا لـ JMS وKafka وNetty/Webflux وغيرهم. وبالنسبة إلى عدة تطوير البرامج لـ Java، يتم دعم الاستدعاءات التي تتم عبر Apache HttpClient فقط لميزة الارتباط. لا يتم دعم نشر السياق التلقائي عبر تقنيات المراسلة مثل Kafka و RabbitMQ و Azure Service Bus في SDK.

لجمع التتبعات المُخصصة، ستحتاج إلى أداة التطبيق باستخدام عدة تطوير البرامج Java 2.6.

اسم AOT للدور

قد ترغب في تخصيص طريقة عرض أسماء المكونات في خريطة التطبيق. وللقيام بذلك، يمكنك تعيين يدويًا cloud_RoleName بواسطة اتخاذ أحد الإجراءات التالية:

  • فيما يتعلق بـ Java لـ Application Insights، قم بتعيين اسم دور السحابة كما يلي:

    {
      "role": {
        "name": "my cloud role name"
      }
    }
    

    كما يمكنك تحديد اسم دور شبكة النظير باستخدام متغير البيئةAPPLICATIONINSIGHTS_ROLE_NAME.

  • وباستخدام عدة تطوير البرامج 2.5.0 لـ Java لـ Application Insights، يمكنك تحديد cloud_RoleName عن طريق إضافة <RoleName> إلى ملف ApplicationInsights.xml الخاص بك:

    Screenshot that shows Application Insights overview and connection string.

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
       <ConnectionString>InstrumentationKey=00000000-0000-0000-0000-000000000000</ConnectionString>
       <RoleName>** Your role name **</RoleName>
       ...
    </ApplicationInsights>
    
  • إذا كنت تستخدم Spring Boot مع Application Insights Spring Boot Starter، فقم بتعيين اسمك المخصص للتطبيق في ملف application.properties:

    spring.application.name=<name-of-app>

يمكنك أيضًا تعيين اسم دور السحابة عبر متغير البيئة أو خاصية النظام. راجع تكوين اسم دور السحابة للحصول على التفاصيل.

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