Dela via


Aktivera telemetri för funktionsflaggor i ett Node.js program

I den här handledningen använder du telemetri i ditt Node.js-program för att spåra utvärderingar av funktionsflaggor och anpassade händelser. Med telemetri kan du fatta välgrundade beslut om din strategi för funktionshantering. Du använder funktionsflaggan med telemetri aktiverad som skapats i översikten för att aktivera telemetri för funktionsflaggor. Innan du fortsätter måste du skapa en funktionsflagga med namnet Greeting (Hälsning ) i konfigurationsarkivet med telemetri aktiverat. Den här självstudiekursen bygger vidare på självstudiekursen för att använda variantfunktioners flaggor i ett Node.js-program.

Förutsättningar

Lägga till telemetri i ditt Node.js program

  1. Installera följande paket.

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Öppna server.js och lägg till följande kod i början för att ansluta till Application Insights för att publicera telemetri.

    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. Lägg till följande import.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Skapa och registrera telemetriutgivaren när du initierar FeatureManager.

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

    Återanropet publishTelemetry skickar telemetridata varje gång en funktionsflagga utvärderas.

  5. Spåra anpassade händelser för användarinteraktioner. /api/like Ändra slutpunkten för att skicka telemetridata till Application Insights när en användare gillar innehåll. Detta hjälper dig att analysera vilka funktionsvarianter som presterar bättre.

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

Starta programmet

  1. Application Insights kräver en anslutningssträng för att ansluta till din Application Insights-resurs. APPLICATIONINSIGHTS_CONNECTION_STRING Ange miljövariabeln till anslutningssträngen för Application Insights-resursen.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Om du använder PowerShell kör du följande kommando:

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

    Om du använder macOS eller Linux kör du följande kommando:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Kör programmet, se steg 4 i Använda variantfunktionsflaggor.

  3. Skapa 10 olika användare och logga in på programmet. När du loggar in med varje användare får du en annan meddelandevariant för vissa av dem. ~50% av tiden får du inget meddelande. 25% av gångerna får du meddelandet "Hello!" och 25% av gångerna får du "Jag hoppas att detta gör din dag!"

  4. Med några av användarna klickar du på knappen Gilla för att utlösa telemetrihändelsen.

    Skärmbild av programmet med gilla-knappen klickad.

  5. Öppna Application Insights-resursen i Azure-portalen och välj Loggar under Övervakning. I frågefönstret kör du följande fråga för att se telemetrihändelserna:

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

    Skärmbild av Application Insights som visar resultattabellen med fyra rader. Alla, Enkel, Lång och Ingen med respektive antal användare och procentandelar.

    Du ser en "FeatureEvaluation"-händelse för varje gång offertsidan laddades och en "Gillad"-händelse för varje gång gilla-knappen klickades. Händelsen "FeatureEvaluation" har en anpassad egenskap som heter FeatureName med namnet på funktionsflaggan som utvärderades. Båda händelserna har en anpassad egenskap som heter TargetingId med namnet på den användare som gillade offerten.

    Mer information om händelsen "FeatureEvaluation" finns i telemetrireferensen för funktionsflagga

Ytterligare resurser

Nästa steg

Fullständig funktionskörning av JavaScript-funktionshanteringsbiblioteket finns i följande dokument.