Condividi tramite


Abilitare la telemetria per i flag di funzionalità in un'applicazione Node.js

In questa esercitazione, verranno utilizzati i dati di telemetria nell'applicazione Node.js per tenere traccia delle valutazioni dei flag di funzionalità e degli eventi personalizzati. La telemetria consente di prendere decisioni informate sulla strategia di gestione delle funzionalità. Il flag di funzionalità viene utilizzato con i dati di telemetria abilitati creati nella panoramica per abilitare i dati di telemetria per i flag di funzionalità. Prima di procedere, assicurarsi di creare un flag di funzionalità denominato Messaggio di saluto nell'archivio di configurazione con i dati di telemetria abilitati. Questa esercitazione si basa sull'esercitazione per l'uso di flag di funzionalità varianti in un'applicazione Node.js.

Prerequisiti

Aggiungere dati di telemetria all'applicazione Node.js

  1. Installare i pacchetti seguenti.

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Aprire server.js e aggiungere il codice seguente all'inizio per connettersi ad Application Insights per pubblicare i dati di telemetria.

    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. Aggiungere l'importazione seguente.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Creare e registrare l'editore di telemetria durante l'inizializzazione di FeatureManager.

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

    Il publishTelemetry callback invierà dati di telemetria ogni volta che viene valutato un flag di funzionalità.

  5. Tenere traccia degli eventi personalizzati per le interazioni dell'utente. Modificare l'endpoint /api/like per inviare i dati di telemetria ad Application Insights ogni volta che un utente ama il contenuto. Ciò consente di analizzare le varianti di funzionalità che offrono prestazioni migliori.

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

Eseguire l'applicazione

  1. Application Insights richiede una stringa di connessione per connettersi alla risorsa di Application Insights. Impostare la APPLICATIONINSIGHTS_CONNECTION_STRING variabile di ambiente sulla stringa di connessione per la risorsa di Application Insights.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Se si usa PowerShell, eseguire il comando seguente:

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

    Se si usa macOS o Linux, eseguire il comando seguente:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Eseguire l'applicazione, vedere il passaggio 4 di Utilizzo dei flag di funzionalità varianti.

  3. Creare 10 utenti diversi e accedere all'applicazione. Quando si accede con ogni utente, viene visualizzata una variante del messaggio diversa per alcune di esse. Circa 50% dell'intervallo di tempo in cui non viene ricevuto alcun messaggio. 25% dell'intervallo di tempo in cui si riceve il messaggio "Salve!" e 25% dell’intervallo di tempo in cui si ottiene "Ti auguro una buona giornata!"

  4. Quando alcuni utenti fanno clic sul pulsante Like, viene attivato l'evento di telemetria.

    Screenshot dell'applicazione con il pulsante like selezionato.

  5. Aprire la risorsa di Application Insights nel portale di Azure e selezionare Log in Monitoraggio. Nella finestra di query eseguire la query seguente per visualizzare gli eventi di telemetria:

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

    Screenshot di Application Insights che mostra la tabella dei risultati con quattro righe; All, Simple, Long e None con i rispettivi conteggi utente e percentuali.

    Viene visualizzato un evento "FeatureEvaluation" ogni volta che è stata caricata la pagina del preventivo e un evento "Liked" per ogni volta che è stato fatto clic sul pulsante "Like". L'evento "FeatureEvaluation" ha una proprietà personalizzata denominata FeatureName con il nome del flag di funzionalità valutato. Entrambi gli eventi hanno una proprietà personalizzata denominata TargetingId con il nome dell'utente che ha apprezzato la citazione.

    Per altre informazioni sull'evento "FeatureEvaluation", vedere le informazioni di riferimento sulla telemetria dei flag di funzionalità

Risorse aggiuntive

Passaggi successivi

Per il rundown completo delle funzionalità della libreria di gestione delle funzionalità JavaScript, vedere il documento seguente.