Freigeben über


Aktivieren der Telemetrie für Featurekennzeichnungen in einer Node.js-Anwendung

In diesem Tutorial verwenden Sie Telemetrie in Ihrer Node.js-Anwendung, um Feature-Flag-Bewertungen und benutzerdefinierte Ereignisse nachzuverfolgen. Telemetrie ermöglicht Es Ihnen, fundierte Entscheidungen über Ihre Featureverwaltungsstrategie zu treffen. Sie verwenden das Featureflag mit aktivierter Telemetrie, das in der Übersicht für das Aktivieren von Telemetrie für Feature-Flags erstellt wurde. Vor dem Fortfahren stellen Sie sicher, dass Sie ein Feature-Flag namens Begrüßung in Ihrem Konfigurationsspeicher mit aktivierter Telemetrie erstellen. Dieses Tutorial basiert auf dem Tutorial für die Verwendung von Variantenfeatureflags in einer Node.js- Anwendung.

Voraussetzungen

Hinzufügen von Telemetrie zu Ihrer Node.js-Anwendung

  1. Installieren Sie die folgenden Pakete.

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Öffnen Sie server.js und fügen Sie am Anfang den folgenden Code hinzu, um eine Verbindung zu Application Insights herzustellen und Telemetrie zu veröffentlichen.

    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. Fügen Sie den folgenden Import hinzu.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Erstellen und registrieren Sie den Telemetrieherausgeber beim Initialisieren von FeatureManager.

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

    Das publishTelemetry Callback sendet Telemetriedaten jedes Mal, wenn ein Feature-Flag ausgewertet wird.

  5. Nachverfolgen benutzerdefinierter Ereignisse für Benutzerinteraktionen. Ändern Sie den /api/like Endpunkt so, dass Telemetriedaten an Application Insights gesendet werden, wenn ein Benutzer Inhalte gefällt. Auf diese Weise können Sie analysieren, welche Featurevarianten besser funktionieren.

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

Ausführen der Anwendung

  1. Application Insights erfordert eine Verbindungszeichenfolge, um eine Verbindung mit Ihrer Application Insights-Ressource herzustellen. Legen Sie die APPLICATIONINSIGHTS_CONNECTION_STRING Umgebungsvariable auf die Verbindungszeichenfolge für Ihre Application Insights-Ressource fest.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Wenn Sie PowerShell verwenden, führen Sie den folgenden Befehl aus:

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

    Führen Sie bei Verwendung von macOS oder Linux den folgenden Befehl aus:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Führen Sie die Anwendung aus, siehe Schritt 4 der Verwendung von Featurekennzeichnungen für Varianten.

  3. Erstellen Sie 10 verschiedene Benutzer, und melden Sie sich bei der Anwendung an. Während Sie sich bei jedem Benutzer anmelden, erhalten Sie für einige benutzer eine andere Nachrichtenvariante. ~50 % der Zeit, in der Sie keine Nachricht erhalten. Zu 25 % der Zeit erhalten Sie die Nachricht „Hallo!“, und zu 25 % der Zeit erhalten Sie die Nachricht „Ich hoffe, dass dies Ihnen den Tag verschönert!“.

  4. Einige der Benutzer klicken auf die Schaltfläche "Gefällt mir", um das Telemetrieereignis auszulösen.

    Screenshot der Anwendung mit angeklickter Schaltfläche

  5. Öffnen Sie Ihre Application Insights-Ressource im Azure-Portal, und wählen Sie "Protokolle " unter "Überwachung" aus. Führen Sie im Abfragefenster die folgende Abfrage aus, um die Telemetrieereignisse anzuzeigen:

    // 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 von Application Insights mit der Ergebnistabelle mit vier Zeilen: Alle, Einfach, Lang und Keine, jeweils mit den entsprechenden Benutzerzahlen und Prozentsätzen.

    Für jedes Laden der Zitatseite wird ein "FeatureEvaluation"-Ereignis angezeigt, und für jedes Klicken auf die "Gefällt mir"-Schaltfläche ein "Liked"-Ereignis. Das Ereignis "FeatureEvaluation" weist eine benutzerdefinierte Eigenschaft mit dem Namen des ausgewerteten Feature-Kennzeichens FeatureName auf. Beide Ereignisse haben eine benutzerdefinierte Eigenschaft namens TargetingId mit dem Namen des Benutzers, der das Zitat mochte.

    Weitere Informationen zum Ereignis "FeatureEvaluation" finden Sie in der Telemetriereferenz für Feature-Flags.

Weitere Ressourcen

Nächste Schritte

Die vollständige Funktionsausführung der JavaScript-Featureverwaltungsbibliothek finden Sie im folgenden Dokument.