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. 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 Python.

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 la aplicación para conectarse a Application Insights y publicar datos de telemetría. Asegúrese de que la instrucción `import` existente from flask import Flask aparezca después de la llamada configure_azure_monitor(...) que se muestra en el código siguiente. Este orden es necesario para que la instrumentación automática de OpenTelemetry funcione correctamente.

    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
    from flask import jsonify
    
    @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. Para buscar el cadena de conexión, abra el portal de Azure, vaya a Application Insights, seleccione el recurso de Application Insights creado anteriormente y, a continuación, vaya a Información general. Copie el valor de Cadena de conexión. Sustituye el valor del marcador de posición en el siguiente comando por la cadena de conexión que has copiado de tu 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'
    

Recopilación de telemetría

Implemente la aplicación para empezar a recopilar datos de telemetría de los usuarios. Para probar su funcionalidad, puede simular la actividad del usuario mediante la creación de muchos usuarios de prueba. Cada usuario verá una variante distinta de los mensajes de saludo y podrá interactuar con la aplicación haciendo clic en el botón con el icono de corazón para indicar que le gusta una cita. A medida que crece la base de usuarios, puede supervisar el volumen creciente de datos de telemetría recopilados en Azure App Configuration. Además, puede explorar en profundidad los datos para analizar cómo cada variante de la marca de características influye en el comportamiento del usuario.

Recursos adicionales