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

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

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

إضافة بيانات تتبع الاستخدام إلى تطبيق Node.js

  1. ثبت الحزم التالية:

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. افتح server.js وأضف التعليمات البرمجية التالية في البداية للاتصال ب Application Insights لنشر بيانات تتبع الاستخدام.

    const appInsightsConnectionString = process.env.APPLICATIONINSIGHTS_CONNECTION_STRING;
    const applicationInsights = require("applicationinsights");
    applicationInsights.setup(appInsightsConnectionString).start();
    
    const express = require("express");
    const server = express();
    // existing code ...
    
  3. أضف الاستيراد التالي.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. إنشاء ناشر بيانات تتبع الاستخدام وتسجيله عند تهيئة FeatureManager.

    // existing code ...
    const featureFlagProvider = new ConfigurationMapFeatureFlagProvider(appConfig);
    const publishTelemetry = createTelemetryPublisher(applicationInsights.defaultClient);
    featureManager = new FeatureManager(featureFlagProvider, {
        onFeatureEvaluated: publishTelemetry
    });
    // existing code ...
    

    publishTelemetry سيرسل رد الاتصال بيانات القياس عن بعد في كل مرة يتم فيها تقييم علامة ميزة.

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

    server.post("/api/like", (req, res) => {
        const { UserId } = req.body;
        if (UserId === undefined) {
            return res.status(400).send({ error: "UserId is required" });
        }
        trackEvent(applicationInsights.defaultClient, UserId, { name: "Liked" });
        res.status(200).send();
    });
    

شغّل التطبيق

  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. قم بتشغيل التطبيق، راجع الخطوة 4 من استخدام علامات ميزة المتغير.

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

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

    لقطة شاشة للتطبيق مع النقر فوق زر مثل.

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

    // Step 1: Get distinct users and their Variant from FeatureEvaluation
    let evaluated_users =
        customEvents
        | where name == "FeatureEvaluation"
        | extend TargetingId = tostring(customDimensions.TargetingId),
                Variant = tostring(customDimensions.Variant)
        | summarize Variant = any(Variant) by TargetingId;
    
    // Step 2: Get distinct users who emitted a "Like"
    let liked_users =
        customEvents
        | where name == "Liked"
        | extend TargetingId = tostring(customDimensions.TargetingId)
        | summarize by TargetingId;
    
    // Step 3: Join them to get only the evaluated users who also liked
    let hearted_users =
        evaluated_users
        | join kind=inner (liked_users) on TargetingId
        | summarize HeartedUsers = dcount(TargetingId) by Variant;
    
    // Step 4: Total evaluated users per variant
    let total_users =
        evaluated_users
        | summarize TotalUsers = dcount(TargetingId) by Variant;
    
    // Step 5: Combine results
    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;
    
    // Step 6: Add total row
    let total_sum =
        combined_data
        | summarize
            TotalUsers = sum(TotalUsers),
            HeartedUsers = sum(HeartedUsers)
        | extend
            Variant = "All",
            PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
        | project Variant, TotalUsers, HeartedUsers, PercentageHearted;
    
    // Step 7: Output
    combined_data
    | union (total_sum)
    

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

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

    لمزيد من المعلومات حول حدث "تقييم الميزات"، انتقل إلى مرجع القياس عن بعد لعلامة الميزة

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

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

للحصول على قائمة تشغيل الميزة الكاملة لمكتبة إدارة ميزات JavaScript، راجع المستند التالي.