Compartir a través de


Habilitar la telemetría para las banderas de características en una aplicación de Node.js

En este tutorial, usará la telemetría en la aplicación de Node.js para realizar un seguimiento de las evaluaciones de marcas de características y los eventos personalizados. La telemetría permite tomar decisiones fundamentadas sobre la estrategia de gestión de características. Utilizas la bandera de características con telemetría habilitada creada en el resumen para habilitar la telemetría para las banderas de características. Antes de continuar, asegúrese de crear una bandera de características denominada Greeting en el almacén de configuración con telemetría habilitada. Este tutorial se basa en el tutorial para usar marcas de características variantes en una aplicación de Node.js.

Prerrequisitos

Añadir telemetría a tu aplicación Node.js

  1. Instale los siguientes paquetes.

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Abra server.js y agregue el código siguiente al principio para conectarse a Application Insights para publicar telemetría.

    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. Agregue la siguiente importación.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Cree y registre el publicador de telemetría al inicializar el FeatureManager.

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

    La publishTelemetry devolución de llamada enviará datos de telemetría cada vez que se evalúe una marca de característica.

  5. Realice un seguimiento de eventos personalizados para las interacciones del usuario. Modifique el /api/like punto de conexión para enviar datos de telemetría a Application Insights siempre que un usuario quiera contenido. Esto le ayuda a analizar qué variantes de características funcionan mejor.

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

Ejecutar la aplicación

  1. Application Insights requiere una cadena de conexión para conectarse al recurso de Application Insights. Establezca la variable de entorno APPLICATIONINSIGHTS_CONNECTION_STRING en la cadena de conexión del recurso de Application Insights.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Si usa PowerShell, ejecute el siguiente comando:

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

    Si usa macOS o Linux, ejecute el siguiente comando:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Ejecute la aplicación; consulte el paso 4 de Uso de marcas de características variantes.

  3. Cree 10 usuarios diferentes e inicie sesión en la aplicación. Al iniciar sesión con cada usuario, obtendrá una variante de mensaje diferente para algunas de ellas. ~50 % del tiempo que no recibe ningún mensaje. 25% del tiempo que recibe el mensaje "¡Hola!" y el 25 % del tiempo que recibe "¡Espero que esto haga su día!"

  4. Algunos de los usuarios hacen clic en el botón Me gusta para desencadenar el evento de telemetría.

    Captura de pantalla de la aplicación con el botón like en el que se hace clic.

  5. Abra el recurso de Application Insights en Azure Portal y seleccione Registros en Supervisión. En la ventana de consulta, ejecute la consulta siguiente para ver los eventos de telemetría:

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

    Captura de pantalla de Application Insights que muestra la tabla de resultados con cuatro filas; All, Simple, Long y None con sus respectivos recuentos y porcentajes de usuarios.

    Verá un evento "FeatureEvaluation" para cada vez que se cargó la página de comillas y se hizo clic en un evento "Liked" para cada vez que se hizo clic en el botón de me gusta. El evento "FeatureEvaluation" tiene una propiedad personalizada denominada FeatureName con el nombre de la marca de característica que se evaluó. Ambos eventos tienen una propiedad personalizada denominada TargetingId con el nombre del usuario que gustó la cita.

    Para obtener más información sobre el evento "FeatureEvaluation", vaya a la referencia de telemetría de marcas de características

Recursos adicionales

Pasos siguientes

Para obtener la lista completa de características de la biblioteca de administración de características de JavaScript, consulte el siguiente documento.