Partager via


Activer la télémétrie pour les indicateurs de fonctionnalité dans une application Node.js

Dans ce tutoriel, vous utilisez la télémétrie dans votre application Node.js pour suivre les évaluations des indicateurs de fonctionnalité et les événements personnalisés. La télémétrie vous permet de prendre des décisions éclairées sur votre stratégie de gestion des fonctionnalités. Vous utilisez l’indicateur de fonctionnalité avec la télémétrie activée dans la vue d’ensemble pour activer la télémétrie pour les indicateurs de fonctionnalité. Avant de continuer, veillez à créer un indicateur de fonctionnalité nommé Greeting dans votre magasin de configuration avec la télémétrie activée. Ce didacticiel s’appuie sur le didacticiel pour utiliser des indicateurs de fonctionnalités variant dans une application Node.js.

Conditions préalables

Ajouter des données de télémétrie à votre application Node.js

  1. Installez les packages suivants :

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Ouvrez server.js et ajoutez le code suivant au début pour vous connecter à Application Insights pour publier des données de télémétrie.

    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. Ajoutez l’importation suivante.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Créez et inscrivez l’éditeur de télémétrie lors de l’initialisation du FeatureManager.

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

    Le publishTelemetry rappel envoie des données de télémétrie chaque fois qu’un indicateur de fonctionnalité est évalué.

  5. Suivez les événements personnalisés pour les interactions utilisateur. Modifiez le point de terminaison pour envoyer des données de télémétrie à Application Insights chaque fois qu’un utilisateur aime le /api/like contenu. Cela vous aide à analyser quelles variantes de fonctionnalités offrent de meilleures performances.

    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();
    });
    

Exécuter l’application

  1. Application Insights nécessite une chaîne de connexion pour se connecter à votre ressource Application Insights. Définissez la APPLICATIONINSIGHTS_CONNECTION_STRING variable d’environnement sur la chaîne de connexion de votre ressource Application Insights.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Si vous utilisez PowerShell, exécutez la commande suivante :

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

    Si vous utilisez macOS ou Linux, exécutez la commande suivante :

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Exécutez l’application, consultez l’étape 4 de l’utilisation des indicateurs de fonctionnalité variant.

  3. Créez 10 utilisateurs différents et connectez-vous à l’application. Lorsque vous vous connectez avec chaque utilisateur, vous obtenez une variante de message différente pour certains d’entre eux. ~50%% du temps vous ne recevez aucun message. 25 % du temps, vous recevez le message « Bonjour ! » et 25 % du temps, vous obtenez « J’espère que cela embellit votre journée ! »

  4. Avec certains utilisateurs, cliquez sur le bouton Like pour déclencher l’événement de télémétrie.

    Capture d’écran de l’application avec le bouton J'aime cliqué.

  5. Ouvrez votre ressource Application Insights dans le portail Azure et sélectionnez Journaux sous Surveillance. Dans la fenêtre de requête, exécutez la requête suivante pour afficher les événements de télémétrie :

    // 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)
    

    Capture d’écran d’Application Insights montrant la table des résultats avec quatre lignes ; All, Simple, Long et None avec leur nombre d’utilisateurs et pourcentages respectifs.

    Vous voyez un événement « FeatureEvaluation » à chaque fois que la page est chargée et un événement « J’aime » à chaque fois que le bouton j’aime est activé. L’événement « FeatureEvaluation » a une propriété personnalisée appelée FeatureName avec le nom de l’indicateur de fonctionnalité qui a été évalué. Les deux événements ont une propriété personnalisée appelée TargetingId avec le nom de l'utilisateur qui a aimé la citation.

    Pour plus d’informations sur l’événement « FeatureEvaluation », accédez à la référence de télémétrie de l’indicateur de fonctionnalité

Ressources supplémentaires

Étapes suivantes

Pour connaître l’exécution complète des fonctionnalités de la bibliothèque de gestion des fonctionnalités JavaScript, reportez-vous au document suivant.