Compartir a través de


Habilitación de la telemetría para las marcas de características en una aplicación de Python

En este tutorial, usará la telemetría en la aplicación de Python 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. Use la marca de características con la telemetría habilitada en Habilitar telemetría para las marcas 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 uso de marcas de características variantes.

Prerrequisitos

Incorporación de telemetría a la aplicación de Python

  1. Instale los paquetes necesarios mediante pip:

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. Abra app.py y configure el código para conectarse a Application Insights para publicar datos de telemetría.

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    
    # Configure Azure Monitor
    configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
    
  3. app.py Cargue también las marcas de características desde App Configuration y cárgelas en la administración de características. FeatureManager usa la publish_telemetry función de devolución de llamada para publicar datos de telemetría en Azure Monitor.

    from featuremanagement.azuremonitor import publish_telemetry
    
    feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
    
  4. Abra routes.py y actualice el código para realizar un seguimiento de sus propios eventos en la aplicación. Cuando se llama a track_event, se publica un evento personalizado en Azure Monitor con el usuario proporcionado.

    from featuremanagement import track_event
    
    @bp.route("/heart", methods=["POST"])
    def heart():
        if current_user.is_authenticated:
            user = current_user.username
    
            # Track the appropriate event based on the action
            track_event("Liked", user)
        return jsonify({"status": "success"})
    
  5. Abra index.html y actualice el código para implementar el botón like. El botón de 'me gusta' envía una solicitud POST al /heart punto de conexión cuando se hace clic.

    <script>
        function heartClicked(button) {
            var icon = button.querySelector('i');
    
            // Toggle the heart icon appearance
            icon.classList.toggle('far');
            icon.classList.toggle('fas');
    
            // Only send a request to the dedicated heart endpoint when it's a like action
            if (icon.classList.contains('fas')) {
                fetch('/heart', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                    }
                });
            }
        }
    </script>
    

Compilación y ejecución de 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 2 de Usar banderas de funciones 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% por ciento de las veces recibes el mensaje "¡Hola!" y 25% por ciento de las veces recibes "¡Espero que esto te alegre el día!".

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

  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:

    // Total users
    let total_users =
        customEvents
        | where name == "FeatureEvaluation"
        | summarize TotalUsers = count() by Variant = tostring(customDimensions.Variant);
    
    // Hearted users
    let hearted_users =
        customEvents
        | where name == "FeatureEvaluation"
        | extend TargetingId = tostring(customDimensions.TargetingId)
        | join kind=inner (
            customEvents
            | where name == "Liked"
            | extend TargetingId = tostring(customDimensions.TargetingId)
        ) on TargetingId
        | summarize HeartedUsers = count() by Variant = tostring(customDimensions.Variant);
    
    // Calculate the percentage of hearted users over total users
    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;
    
    // Calculate the sum of total users and hearted users of all variants
    let total_sum =
        combined_data
        | summarize Variant="All", TotalUsers = sum(TotalUsers), HeartedUsers = sum(HeartedUsers);
    
    // Display the combined data along with the sum of total users and hearted users
    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á una "FeatureEvaluation" para cada vez que se cargó la página de citas y 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.

Recursos adicionales