مشاركة عبر


تمكين بيانات تتبع الاستخدام لعلامات الميزات في تطبيق Python

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

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

إضافة بيانات تتبع الاستخدام إلى تطبيق Python الخاص بك

  1. تثبيت الحزم المطلوبة باستخدام pip:

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. افتح app.py التعليمات البرمجية الخاصة بك وقم بتكوينها للاتصال ب Application Insights لنشر بيانات تتبع الاستخدام.

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    
    # Configure Azure Monitor
    configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
    
  3. أيضا في app.py تحميل علامات الميزات الخاصة بك من App Configuration وتحميلها في إدارة الميزات. FeatureManager يستخدم دالة publish_telemetry رد الاتصال لنشر بيانات تتبع الاستخدام إلى Azure Monitor.

    from featuremanagement.azuremonitor import publish_telemetry
    
    feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
    
  4. افتح routes.py التعليمات البرمجية وتحديثها لتعقب الأحداث الخاصة بك في التطبيق الخاص بك. عند track_event استدعاء، يتم نشر حدث مخصص إلى Azure Monitor مع المستخدم المقدم.

    from featuremanagement import track_event
    
    @bp.route("/heart", methods=["POST"])
    def heart():
        if current_user.is_authenticated:
            user = current_user.username
    
            # Track the appropriate event based on the action
            track_event("Liked", user)
        return jsonify({"status": "success"})
    
  5. افتح index.html التعليمات البرمجية وحدثها لتنفيذ الزر like. يرسل الزر like طلب POST إلى /heart نقطة النهاية عند النقر فوقه.

    <script>
        function heartClicked(button) {
            var icon = button.querySelector('i');
    
            // Toggle the heart icon appearance
            icon.classList.toggle('far');
            icon.classList.toggle('fas');
    
            // Only send a request to the dedicated heart endpoint when it's a like action
            if (icon.classList.contains('fas')) {
                fetch('/heart', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                    }
                });
            }
        }
    </script>
    

إنشاء وتشغيل التطبيق

  1. تتطلب رؤى التطبيق سلسلة اتصال للاتصال بمورد Application Insights الخاص بك. APPLICATIONINSIGHTS_CONNECTION_STRING تعيين متغير البيئة إلى سلسلة الاتصال لمورد Application Insights الخاص بك.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    إذا كنت تستخدم PowerShell، فقم بتشغيل الأمر التالي:

    $Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"
    

    إذا كنت تستخدم macOS أو Linux، فقم بإجراء الأمر التالي:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. قم بتشغيل التطبيق، راجع الخطوة 2 من استخدام علامات ميزة المتغير .

  3. إنشاء 10 مستخدمين مختلفين وتسجيل الدخول إلى التطبيق. أثناء تسجيل الدخول مع كل مستخدم، تحصل على متغير رسالة مختلف لبعض منهم. ~50% من الوقت الذي لا تتلقى فيه أي رسالة. 25% من الوقت الذي تحصل فيه على الرسالة "مرحبا!" و25% من الوقت الذي تحصل فيه على "آمل أن هذا يجعل يومك!".

  4. مع بعض المستخدمين حدد الزر Like لتشغيل حدث القياس عن بعد.

  5. افتح مورد Application Insights في مدخل Microsoft Azure وحدد Logs ضمن Monitoring. في نافذة الاستعلام، قم بتشغيل الاستعلام التالي لمشاهدة أحداث بيانات تتبع الاستخدام:

    // Total users
    let total_users =
        customEvents
        | where name == "FeatureEvaluation"
        | summarize TotalUsers = count() by Variant = tostring(customDimensions.Variant);
    
    // Hearted users
    let hearted_users =
        customEvents
        | where name == "FeatureEvaluation"
        | extend TargetingId = tostring(customDimensions.TargetingId)
        | join kind=inner (
            customEvents
            | where name == "Liked"
            | extend TargetingId = tostring(customDimensions.TargetingId)
        ) on TargetingId
        | summarize HeartedUsers = count() by Variant = tostring(customDimensions.Variant);
    
    // Calculate the percentage of hearted users over total users
    let combined_data =
        total_users
        | join kind=leftouter (hearted_users) on Variant
        | extend HeartedUsers = coalesce(HeartedUsers, 0)
        | extend PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
        | project Variant, TotalUsers, HeartedUsers, PercentageHearted;
    
    // Calculate the sum of total users and hearted users of all variants
    let total_sum =
        combined_data
        | summarize Variant="All", TotalUsers = sum(TotalUsers), HeartedUsers = sum(HeartedUsers);
    
    // Display the combined data along with the sum of total users and hearted users
    combined_data
    | union (total_sum)
    

    لقطة شاشة ل Application Insights تعرض جدول النتائج بأربعة صفوف؛ الكل، بسيط، طويل، ولا شيء مع عدد المستخدمين والنسب المئوية الخاصة بهم.

    ترى "تقييم الميزات" واحدا لكل مرة تم فيها تحميل صفحة الاقتباس وحدث "تسجيل إعجاب" واحد لكل مرة تم فيها النقر فوق الزر like. يحتوي حدث "تقييم الميزات" على خاصية مخصصة تسمى FeatureName باسم علامة الميزة التي تم تقييمها. يحتوي كلا الحدثين على خاصية مخصصة تسمى TargetingId باسم المستخدم الذي أعجبه عرض الأسعار.

الموارد الإضافية