إعداد Azure Monitor لتطبيق Python الخاص بك

تنبيه

تم إيقاف OpenCensus Python SDK. نوصي بعرض Python المستند إلى OpenTelemetry وتوفير إرشادات الترحيل.

يدعم Azure Monitor التتبع الموزع، وجمع المقاييس، وتسجيل تطبيقات Python.

الحل المدعوم من Microsoft لتعقب البيانات وتصديرها لتطبيقات Python الخاصة بك هو من خلال OpenCensus Python SDK عبر مصدري Azure Monitor.

لا توصي Microsoft باستخدام أي حزم SDK أخرى لبيانات تتبع الاستخدام ل Python كحل لبيانات تتبع الاستخدام لأنها غير مدعومة.

يتقارب OpenCensus في OpenTelemetry. نستمر في التوصية ب OpenCensus بينما ينضج OpenTelemetry تدريجيا.

المتطلبات الأساسية

تحتاج إلى شتراك Azure. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

إشعار

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

تقديم OpenCensus Python SDK

OpenCensus هي مجموعة من المكتبات مفتوحة المصدر للسماح بجمع التتبع الموزع والمقاييس وبيانات تتبع الاستخدام للتسجيل. باستخدام مصدري Azure Monitor، يمكنك إرسال بيانات تتبع الاستخدام المجمعة هذه إلى Application Insights. ترشدك هذه المقالة خلال عملية إعداد مصدري OpenCensus وAzure Monitor ل Python لإرسال بيانات المراقبة إلى Azure Monitor.

أداة مع OpenCensus Python SDK مع مصدّري Azure Monitor

تثبيت مصدّري OpenCensus Azure Monitor:

python -m pip install opencensus-ext-azure

تستخدم SDK ثلاثة من مصدري Azure Monitor لإرسال أنواع مختلفة من بيانات تتبع الاستخدام إلى Azure Monitor. إنها traceو metricsو.logs لمزيد من المعلومات حول أنواع بيانات تتبع الاستخدام هذه، راجع نظرة عامة على النظام الأساسي للبيانات. استخدم التعليمات التالية لإرسال بيانات تتبع الاستخدام هذه عبر المصدرين الثلاثة.

تعيينات نوع بيانات تتبع الاستخدام

يقوم OpenCensus بتعيين المصدرين التاليين إلى أنواع بيانات تتبع الاستخدام التي تراها في Azure Monitor.

ركيزة الملاحظة نوع بيانات تتبع الاستخدام في Azure Monitor الشرح
السجلات التتبعات، والاستثناءات، والأحداث المخصصة سجل القياس عن بعد والاستثناءات والقياس عن بعد للأحداث
المقاييس customMetrics، performanceCounters عدادات أداء المقاييس المخصصة
التعقب تبعيات الطلبات الطلبات الواردة، والطلبات الصادرة

السجلات

  1. أولًا، دعونا ننشئ بعض بيانات السجل المحلي.

    
    import logging
    
    logger = logging.getLogger(__name__)
    
    def main():
        """Generate random log data."""
        for num in range(5):
            logger.warning(f"Log Entry - {num}")
    
    if __name__ == "__main__":
        main()
    
  2. يتم إصدار إدخال سجل لكل رقم في النطاق.

    Log Entry - 0
    Log Entry - 1
    Log Entry - 2
    Log Entry - 3
    Log Entry - 4
    
  3. نريد أن نرى بيانات السجل هذه إلى Azure Monitor. يمكنك تحديده في متغير بيئة، APPLICATIONINSIGHTS_CONNECTION_STRING. يمكنك أيضا تمرير connection_string مباشرة إلى AzureLogHandler، ولكن لا ينبغي إضافة سلسلة الاتصال إلى التحكم بالإصدار.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<appinsights-connection-string>
    

    نوصي باستخدام سلسلة الاتصال لإنشاء مثيل للمصدرين الذين يتم استخدامهم لإرسال بيانات تتبع الاستخدام إلى Application Insights. تعديل تعليمتك البرمجية من الخطوة السابقة استنادًا إلى نموذج التعليمات البرمجية التالية:

    import logging
    from opencensus.ext.azure.log_exporter import AzureLogHandler
    
    logger = logging.getLogger(__name__)
    logger.addHandler(AzureLogHandler())
    
    # Alternatively manually pass in the connection_string
    # logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))
    
    """Generate random log data."""
    for num in range(5):
        logger.warning(f"Log Entry - {num}")
    
  4. يرسل المصدّر بيانات السجل إلى مراقب Azure. يمكنك العثور على البيانات ضمن traces.

    في هذا السياق، traces ليست هي نفسها tracing. هنا، traces يشير إلى نوع بيانات تتبع الاستخدام التي تراها في Azure Monitor عند استخدام AzureLogHandler. ولكن tracing يشير إلى مفهوم في OpenCensus ويتعلق بـالتتبع الموزع.

    إشعار

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

  5. يمكنك أيضا إضافة خصائص مخصصة إلى رسائل السجل في وسيطة extra الكلمة الأساسية باستخدام custom_dimensions الحقل . تظهر هذه الخصائص كأزواج قيم رئيسية في customDimensionsAzure Monitor.

    إشعار

    لكي تعمل هذه الميزة، تحتاج إلى تمرير قاموس إلى custom_dimensions الحقل. يتجاهل المسجل أي وسيطات من أي نوع آخر.

    import logging
    
    from opencensus.ext.azure.log_exporter import AzureLogHandler
    
    logger = logging.getLogger(__name__)
    logger.addHandler(AzureLogHandler())
    # Alternatively manually pass in the connection_string
    # logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))
    
    properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}
    
    # Use properties in logging statements
    logger.warning('action', extra=properties)
    

إشعار

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

تكوين التسجيل لتطبيقات Django

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

للحصول على معلومات حول كيفية تكوين إعدادات Django، راجع إعدادات Django. لمزيد من المعلومات حول كيفية تكوين التسجيل، راجع تسجيل Django.

LOGGING = {
    "handlers": {
        "azure": {
            "level": "DEBUG",
            "class": "opencensus.ext.azure.log_exporter.AzureLogHandler",
            "connection_string": "<appinsights-connection-string>",
        },
        "console": {
            "level": "DEBUG",
            "class": "logging.StreamHandler",
            "stream": sys.stdout,
        },
      },
    "loggers": {
        "logger_name": {"handlers": ["azure", "console"]},
    },
}

تأكد من استخدام المسجل بنفس الاسم المحدد في التكوين الخاص بك.

# views.py

import logging
from django.shortcuts import request

logger = logging.getLogger("logger_name")
logger.warning("this will be tracked")

إرسال الاستثناءات

لا يقوم OpenCensus Python بتتبع exceptionبيانات تتبع الاستخدام وإرسالها تلقائيًا. يتم إرسالها AzureLogHandler باستخدام الاستثناءات من خلال مكتبة تسجيل Python. يمكنك إضافة خصائص مخصصة كما تفعل مع التسجيل العادي.

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler())
# Alternatively, manually pass in the connection_string
# logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))

properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}

# Use properties in exception logs
try:
    result = 1 / 0  # generate a ZeroDivisionError
except Exception:
    logger.exception('Captured an exception.', extra=properties)

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

إرسال الأحداث

يمكنك إرسال customEvent بيانات تتبع الاستخدام بنفس الطريقة التي ترسل trace بها بيانات تتبع الاستخدام، إلا باستخدام AzureEventHandler بدلا من ذلك.

import logging
from opencensus.ext.azure.log_exporter import AzureEventHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureEventHandler())
# Alternatively manually pass in the connection_string
# logger.addHandler(AzureEventHandler(connection_string=<appinsights-connection-string>))

logger.setLevel(logging.INFO)
logger.info('Hello, World!')

أخذ عينات

للحصول على معلومات حول أخذ العينات في OpenCensus، راجع أخذ العينات في OpenCensus.

ارتباط السجل

للحصول على معلومات حول كيفية إثراء سجلاتك ببيانات سياق التتبع، راجع تكامل سجلات OpenCensus Python.

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

للحصول على تفاصيل حول كيفية تعديل بيانات تتبع الاستخدام المتبعة قبل الإرسال إلى Azure Monitor، راجع معالجات بيانات تتبع الاستخدام في OpenCensus Python.

المقاييس

يدعم OpenCensus.stats أربع طرق تجميع ولكنه يوفر دعما جزئيا ل Azure Monitor:

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

مثال على تجميع العد

  1. أولًا، دعونا نولد بعض بيانات القياس المحلية. نقوم بإنشاء مقياس لتتبع عدد المرات التي يحدد فيها المستخدم المفتاح Enter .

    
    from datetime import datetime
    from opencensus.stats import aggregation as aggregation_module
    from opencensus.stats import measure as measure_module
    from opencensus.stats import stats as stats_module
    from opencensus.stats import view as view_module
    from opencensus.tags import tag_map as tag_map_module
    
    stats = stats_module.stats
    view_manager = stats.view_manager
    stats_recorder = stats.stats_recorder
    
    prompt_measure = measure_module.MeasureInt("prompts",
                                               "number of prompts",
                                               "prompts")
    prompt_view = view_module.View("prompt view",
                                   "number of prompts",
                                   [],
                                   prompt_measure,
                                   aggregation_module.CountAggregation())
    view_manager.register_view(prompt_view)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()
    
    def main():
        for _ in range(4):
            mmap.measure_int_put(prompt_measure, 1)
            mmap.record(tmap)
            metrics = list(mmap.measure_to_view_map.get_metrics(datetime.utcnow()))
            print(metrics[0].time_series[0].points[0])
    
    if __name__ == "__main__":
        main()
    
  2. يتم إنشاء المقاييس لتتبع عدة مرات. مع كل إدخال، يتم زيادة القيمة وتظهر معلومات القياس في وحدة التحكم. تتضمن المعلومات القيمة الحالية والطابع الزمني الحالي عند تحديث المقياس.

    Point(value=ValueLong(5), timestamp=2019-10-09 20:58:04.930426)
    Point(value=ValueLong(6), timestamp=2019-10-09 20:58:05.170167)
    Point(value=ValueLong(7), timestamp=2019-10-09 20:58:05.438614)
    Point(value=ValueLong(7), timestamp=2019-10-09 20:58:05.834216)
    
  3. يعد إدخال القيم مفيدا لأغراض العرض التوضيحي، لكننا نريد إرسال البيانات القياسية إلى Azure Monitor. تمرير سلسلة الاتصال مباشرة إلى المصدّر. أو يمكنك تحديده في متغير بيئة، APPLICATIONINSIGHTS_CONNECTION_STRING. نوصي باستخدام سلسلة الاتصال لإنشاء مثيل للمصدرين الذين يتم استخدامهم لإرسال بيانات تتبع الاستخدام إلى Application Insights. تعديل تعليمتك البرمجية من الخطوة السابقة استنادًا إلى نموذج التعليمات البرمجية التالية:

    from datetime import datetime
    from opencensus.ext.azure import metrics_exporter
    from opencensus.stats import aggregation as aggregation_module
    from opencensus.stats import measure as measure_module
    from opencensus.stats import stats as stats_module
    from opencensus.stats import view as view_module
    from opencensus.tags import tag_map as tag_map_module
    
    stats = stats_module.stats
    view_manager = stats.view_manager
    stats_recorder = stats.stats_recorder
    
    prompt_measure = measure_module.MeasureInt("prompts",
                                               "number of prompts",
                                               "prompts")
    prompt_view = view_module.View("prompt view",
                                   "number of prompts",
                                   [],
                                   prompt_measure,
                                   aggregation_module.CountAggregation())
    view_manager.register_view(prompt_view)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()
    
    exporter = metrics_exporter.new_metrics_exporter()
    # Alternatively manually pass in the connection_string
    # exporter = metrics_exporter.new_metrics_exporter(connection_string='<appinsights-connection-string>')
    
    view_manager.register_exporter(exporter)
    
    def main():
        for _ in range(10):
            input("Press enter.")
            mmap.measure_int_put(prompt_measure, 1)
            mmap.record(tmap)
            metrics = list(mmap.measure_to_view_map.get_metrics(datetime.utcnow()))
            print(metrics[0].time_series[0].points[0])
    
    if __name__ == "__main__":
        main()
    
  4. يرسل المصدّر بيانات القياس إلى Azure Monitor على فواصل زمنية ثابتة. يجب تعيين هذه القيمة إلى 60 ثانية حيث تفترض الواجهة الخلفية ل Application Insights تجميع نقاط المقاييس على فاصل زمني مدته 60 ثانية. نحن نتتبع مقياسًا واحدًا، لذا يتم إرسال بيانات القياس هذه، مهما كانت قيمتها وطوابعها الزمنية، كل فترة زمنية. البيانات تراكمية، ويمكن زيادتها فقط، وإعادة تعيينها إلى 0 عند إعادة التشغيل.

    يمكنك العثور على البيانات ضمن customMetrics، ولكن لا يتم استخدام الخصائص valueMinvalueSumvalueMaxcustomMetrics valueCountو valueStdDev بشكل فعال.

تعيين أبعاد مخصصة في المقاييس

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

  1. أدرج العلامات التي تريد استخدامها في مخطط العلامة. يعمل مخطط العلامة كنوع من "تجمع" جميع العلامات المتوفرة التي يمكنك استخدامها.

    ...
    tmap = tag_map_module.TagMap()
    tmap.insert("url", "http://example.com")
    ...
    
  2. بالنسبة إلى معين View، حدد العلامات التي تريد استخدامها عند تسجيل المقاييس باستخدام طريقة العرض هذه عبر مفتاح العلامة.

    ...
    prompt_view = view_module.View("prompt view",
                                "number of prompts",
                                ["url"], # <-- A sequence of tag keys used to specify which tag key/value to use from the tag map
                                prompt_measure,
                                aggregation_module.CountAggregation())
    ...
    
  3. تأكد من استخدام خريطة العلامة عند التسجيل في خريطة القياس. يجب العثور على مفاتيح العلامة المحددة في View مخطط العلامة المستخدم للتسجيل.

    ...
    mmap = stats_recorder.new_measurement_map()
    mmap.measure_int_put(prompt_measure, 1)
    mmap.record(tmap) # <-- pass the tag map in here
    ...
    
  4. customMetrics ضمن الجدول، تحتوي جميع سجلات القياس المنبعثة باستخدام prompt_view على أبعاد {"url":"http://example.com"}مخصصة .

  5. لإنتاج علامات ذات قيم مختلفة باستخدام نفس المفاتيح، قم بإنشاء خرائط علامات جديدة لها.

    ...
    tmap = tag_map_module.TagMap()
    tmap2 = tag_map_module.TagMap()
    tmap.insert("url", "http://example.com")
    tmap2.insert("url", "https://www.wikipedia.org/wiki/")
    ...
    

عدادات الأداء

بشكل افتراضي، يرسل مصدر المقاييس مجموعة من عدادات الأداء إلى Azure Monitor. يمكنك تعطيل هذه الإمكانية عن طريق تعيين العلامة enable_standard_metrics إلى False في الدالة الإنشائية لمصدر المقاييس.

...
exporter = metrics_exporter.new_metrics_exporter(
  enable_standard_metrics=False,
  )
...

يتم حاليا إرسال عدادات الأداء التالية:

  • الذاكرة المتوفرة (بايت)
  • وقت معالج وحدة المعالجة المركزية (النسبة المئوية)
  • معدل الطلب الوارد (في الثانية)
  • متوسط وقت تنفيذ الطلب الوارد (مللي ثانية)
  • معالجة استخدام وحدة المعالجة المركزية (النسبة المئوية)
  • معالجة وحدات البايت الخاصة (بايت)

يجب أن تكون قادرًا على رؤية هذه المقاييس في performanceCounters. لمزيد من المعلومات، راجع عدادات الأداء.

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

للحصول على تفاصيل حول كيفية تعديل بيانات تتبع الاستخدام المتبعة قبل الإرسال إلى Azure Monitor، راجع معالجات بيانات تتبع الاستخدام في OpenCensus Python.

التعقب

إشعار

في OpenCensus، tracing يشير إلى التتبع الموزع. AzureExporter ترسل المعلمة requests بيانات تتبع الاستخدام إلى dependency Azure Monitor.

  1. أولًا، دعونا ننشئ بعض بيانات التتبع محليًا. في Python IDLE، أو المحرر الذي تختاره، أدخل الرمز التالي:

    from opencensus.trace.samplers import ProbabilitySampler
    from opencensus.trace.tracer import Tracer
    
    tracer = Tracer(sampler=ProbabilitySampler(1.0))
    
    def main():
        with tracer.span(name="test") as span:
            for value in range(5):
                print(value)
    
    
    if __name__ == "__main__":
        main()
    
  2. مع كل إدخال، تتم طباعة القيمة إلى shell. تنشئ الوحدة النمطية OpenCensus Python قطعة مقابلة من SpanData. يعرف مشروع OpenCensus التتبع كشجرة من الامتدادات.

    0
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='15ac5123ac1f6847', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:22.805429Z', end_time='2019-06-27T18:21:44.933405Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    1
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='2e512f846ba342de', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:44.933405Z', end_time='2019-06-27T18:21:46.156787Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    2
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='f3f9f9ee6db4740a', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:46.157732Z', end_time='2019-06-27T18:21:47.269583Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    
  3. يعد عرض الإخراج مفيدا لأغراض العرض التوضيحي، لكننا نريد إرساله SpanData إلى Azure Monitor. تمرير سلسلة الاتصال مباشرة إلى المصدّر. أو يمكنك تحديده في متغير بيئة، APPLICATIONINSIGHTS_CONNECTION_STRING. نوصي باستخدام سلسلة الاتصال لإنشاء مثيل للمصدرين الذين يتم استخدامهم لإرسال بيانات تتبع الاستخدام إلى Application Insights. تعديل تعليمتك البرمجية من الخطوة السابقة استنادًا إلى نموذج التعليمات البرمجية التالية:

    from opencensus.ext.azure.trace_exporter import AzureExporter
    from opencensus.trace.samplers import ProbabilitySampler
    from opencensus.trace.tracer import Tracer
    
    tracer = Tracer(
        exporter=AzureExporter(),
        sampler=ProbabilitySampler(1.0),
    )
    # Alternatively manually pass in the connection_string
    # exporter = AzureExporter(
    #   connection_string='<appinsights-connection-string>',
    #   ...
    # )
    
    def main():
        with tracer.span(name="test") as span:
            for value in range(5):
                print(value)
    
    if __name__ == "__main__":
        main()
    
  4. الآن عند تشغيل البرنامج النصي Python، تتم طباعة القيمة فقط في shell. يتم إرسال SpanData إلى Azure Monitor. يمكنك العثور على بيانات النطاق المرسلة ضمن dependencies

    لمزيد من المعلومات حول الطلبات الصادرة، راجع التبعيات في OpenCensus Python. لمزيد من المعلومات حول الطلبات الصادرة، راجع الطلبات في OpenCensus Python.

أخذ عينات

للحصول على معلومات حول أخذ العينات في OpenCensus، راجع أخذ العينات في OpenCensus.

تتبع الارتباط

لمزيد من المعلومات حول ارتباط بيانات تتبع الاستخدام في بيانات التتبع، راجع ارتباط بيانات تتبع الاستخدام OpenCensus Python.

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

لمزيد من المعلومات حول كيفية تعديل بيانات تتبع الاستخدام المتبعة قبل الإرسال إلى Azure Monitor، راجع معالجات بيانات تتبع الاستخدام في OpenCensus Python.

تكوين مصدري Azure Monitor

كما هو موضح، هناك ثلاثة مصدرين مختلفين لـAzure Monitor يدعمون OpenCensus. يرسل كل واحد أنواعًا مختلفة من بيانات تتبع الاستخدام إلى Azure Monitor. لمعرفة أنواع بيانات تتبع الاستخدام التي يرسلها كل مصدر، راجع الجدول التالي.

يقبل كل مصدر نفس الوسيطات للتكوين التي تم تمريرها من خلال المنشئين. يمكنك الاطلاع على معلومات حول كل منها هنا:

بيانات تتبع الاستخدام للمصدر ‏‏الوصف
connection_string سلسلة الاتصال المستخدمة للاتصال بمورد Azure Monitor. لها الأولوية على instrumentation_key.
credential فئة بيانات الاعتماد المستخدمة من قبل مصادقة Azure Active Directory. راجع قسم "المصادقة" التالي.
enable_standard_metrics يستخدم ل AzureMetricsExporter. إشارات المصدر لإرسال مقاييس عداد الأداء تلقائيًا إلى Azure Monitor. الإعدادات الافتراضية لـ True.
export_interval يستخدم لتحديد التردد في ثوان من التصدير. الإعدادات الافتراضية لـ 15s. بالنسبة للمقاييس، يجب تعيينه إلى 60 ثانية وإلا فإن تجميعات المقاييس الخاصة بك لا معنى لها في مستكشف المقاييس.
grace_period يستخدم لتحديد مهلة إيقاف تشغيل المصدرين بالثوان. الإعدادات الافتراضية لـ 5s.
instrumentation_key مفتاح الأجهزة المستخدم للاتصال بمورد Azure Monitor.
logging_sampling_rate يستخدم ل AzureLogHandler و AzureEventHandler. يوفر معدل أخذ عينات [0،1.0] لتصدير السجلات/الأحداث. الإعدادات الافتراضية لـ 1.0.
max_batch_size تحديد الحد الأقصى لحجم بيانات تتبع الاستخدام التي يتم تصديرها في وقت واحد.
proxies يحدد سلسلة من الوكلاء لاستخدامها لإرسال البيانات إلى Azure Monitor. لمزيد من المعلومات، انظر الوكلاء.
storage_path مسار إلى مكان وجود مجلد التخزين المحلي (بيانات تتبع الاستخدام غير الممرضة). اعتبارًا من opencensus-ext-azure v1.0.3، المسار الافتراضي هو دليل مؤقت نظام التشغيل + opencensus-python + your-ikey. قبل الإصدار 1.0.3، يكون المسار الافتراضي هو $USER.azure + python-file-name.opencensus + + .
timeout تحديد مهلة الشبكة لإرسال بيانات تتبع الاستخدام إلى خدمة الاستيعاب في ثوان. الإعدادات الافتراضية لـ 10s.

التكامل مع Azure Functions

لالتقاط بيانات تتبع الاستخدام المخصصة في بيئات Azure Functions، استخدم ملحق OpenCensus Python Azure Functions. لمزيد من المعلومات، راجع دليل مطور Azure Functions Python.

المصادقة (إصدار أولي)

إشعار

تتوفر ميزة المصادقة بدءا من opencensus-ext-azure الإصدار 1.1b0.

يدعم كل مصدر من مصدري Azure Monitor تكوين إرسال حمولات بيانات تتبع الاستخدام بأمان عبر مصادقة OAuth باستخدام Azure Active Directory. لمزيد من المعلومات، راجع وثائق المصادقة.

عرض بياناتك باستخدام الاستعلامات

يمكنك عرض بيانات تتبع الاستخدام التي تم إرسالها من التطبيق الخاص بك من خلال علامة التبويب سجلات (تحليلات).

لقطة شاشة لجزء Overview مع تحديد علامة التبويب Logs (Analytics).

في القائمة ضمن نشط:

  • بالنسبة لبيانات تتبع الاستخدام مع مصدر تتبع Azure Monitor، تظهر الطلبات الواردة ضمن requests. تظهر الطلبات الصادرة أو قيد التنفيذ ضمن dependencies.
  • بالنسبة لبيانات تتبع الاستخدام مع مصدر مقاييس Azure Monitor، تظهر المقاييس المرسلة ضمن customMetrics.
  • بالنسبة لبيانات تتبع الاستخدام المرسلة مع مصدر سجلات Azure Monitor، تظهر السجلات traces. تظهر الاستثناءات ضمن exceptions.

لمزيد من المعلومات حول كيفية استخدام الاستعلامات والسجلات، راجع السجلات في Azure Monitor.

تكوين وتمكين المصادقة المستندة إلى معرف Microsoft Entra

إشعار

تتوفر مصادقة Microsoft Entra فقط ل Python v2.7 وv3.6 وv3.7. يتم تضمين دعم معرف Microsoft Entra في Application Insights OpenCensus Python SDK بدءا من الإصدار التجريبي opencensus-ext-azure 1.1b0.

إشعار

تم إهمال OpenCensus Python SDK، ولكن Microsoft تدعمه حتى الإيقاف في 30 سبتمبر 2024. نوصي الآن بعرض Python المستند إلى OpenTelemetry وتقديم إرشادات الترحيل.

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

OpenCensus يدعم مصدرو Azure Monitor أنواع المصادقة هذه. نوصي باستخدام الهويات المدارة في بيئات الإنتاج.

الهوية المُدارة التي يُعيّنها النظام

from azure.identity import ManagedIdentityCredential

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

credential = ManagedIdentityCredential()
tracer = Tracer(
    exporter=AzureExporter(credential=credential, connection_string="InstrumentationKey=<your-instrumentation-key>;IngestionEndpoint=<your-ingestion-endpoint>"),
    sampler=ProbabilitySampler(1.0)
)
...

الهوية المُدارة التي يعيّنها المُستخدم

from azure.identity import ManagedIdentityCredential

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

credential = ManagedIdentityCredential(client_id="<client-id>")
tracer = Tracer(
    exporter=AzureExporter(credential=credential, connection_string="InstrumentationKey=<your-instrumentation-key>;IngestionEndpoint=<your-ingestion-endpoint>"),
    sampler=ProbabilitySampler(1.0)
)
...

تعرف على المزيد حول OpenCensus لـ Python

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

اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب

ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST إلى نقاط نهاية الاستيعاب الخاصة بنا. يمكنك اختبار الاتصال من خادم الويب أو الجهاز المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب باستخدام عملاء REST الخام من أوامر PowerShell أو curl. راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.

ملاحظات الإصدار

للحصول على أحدث ملاحظات الإصدار، راجع مصدر Python Azure Monitor

كما تلخص تحديثات الخدمة تحسينات Application Insights الرئيسية.

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

التنبيهات

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