Sdílet prostřednictvím


Povolení telemetrie pro příznaky funkcí v aplikaci Node.js

V tomto kurzu použijete telemetrii ve své aplikaci Node.js ke sledování vyhodnocení feature flagů a vlastních událostí. Telemetrie umožňuje činit informovaná rozhodnutí o strategii správy funkcí. Použijete přepínač funkcí s povolenou telemetrií vytvořený v přehledu pro povolení telemetrie pro přepínače funkcí. Než budete pokračovat, ujistěte se, že vytvoříte příznak funkce s názvem Greeting v úložišti konfigurace s povolenou telemetrií. Tento kurz navazuje na kurz o použití příznaků variant v aplikaci Node.js.

Požadavky

Přidání telemetrie do aplikace Node.js

  1. Nainstalujte následující balíčky.

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Otevřete server.js a na začátku přidejte následující kód, který se připojí k Application Insights a publikuje telemetrii.

    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. Přidejte následující import.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Vytvořte a registrujte vydavatele telemetrie při inicializaci FeatureManager.

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

    publishTelemetry Zpětné volání odešle telemetrická data při každém vyhodnocení příznaku funkce.

  5. Sledujte vlastní události pro interakce uživatelů /api/like Upravte koncový bod tak, aby odesílal telemetrická data do Application Insights vždy, když se uživateli líbí obsah. To vám pomůže analyzovat, které varianty funkcí fungují lépe.

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

Spuštění aplikace

  1. K připojení k prostředku Application Insights je vyžadován připojovací řetězec. Nastavte proměnnou APPLICATIONINSIGHTS_CONNECTION_STRING prostředí na připojovací řetězec vašeho prostředku Application Insights.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Pokud používáte PowerShell, spusťte následující příkaz:

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

    Pokud používáte macOS nebo Linux, spusťte následující příkaz:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Spusťte aplikaci, viz krok 4 příznaků použití varianty.

  3. Vytvořte 10 různých uživatelů a přihlaste se k aplikaci. Když se přihlásíte s každým uživatelem, získáte pro některé z nich jinou variantu zprávy. ~50% času, kdy se žádná zpráva nedostane. 25% času, kdy dostanete zprávu "Hello!" a 25% času dostanete "Doufám, že vám to zpříjemní den!"

  4. Když někteří uživatelé kliknou na tlačítko To se mi líbí , aktivuje se událost telemetrie.

    Snímek obrazovky aplikace s kliknutím na tlačítko To se mi líbí

  5. Na webu Azure Portal otevřete prostředek Application Insights a v části Monitorování vyberte Protokoly. V okně dotazu spusťte následující dotaz, aby se zobrazily události telemetrie:

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

    Snímek obrazovky Application Insights zobrazující tabulku výsledků se čtyřmi řádky Vše, Simple, Long a None s příslušnými počty uživatelů a procenty.

    Při každém načtení stránky nabídky se zobrazí jedna událost FeatureEvaluation a pokaždé, když se kliklo na tlačítko Like, zobrazí se jedna událost Like. Událost FeatureEvaluation má vlastní vlastnost volanou FeatureName s názvem příznaku funkce, který byl vyhodnocen. Obě události mají vlastní vlastnost nazvanou TargetingId se jménem uživatele, který lajkoval citaci.

    Další informace o události FeatureEvaluation najdete v referenčních informacích k telemetrii příznaku funkce.

Dodatečné zdroje

Další kroky

Úplný přehled funkcí knihovny pro správu funkcí JavaScriptu najdete v následujícím dokumentu.