Abilitare la telemetria per i flag di funzionalità in un'applicazione Python

In questa esercitazione, verranno utilizzati i dati di telemetria nell'applicazione Python per tenere traccia delle valutazioni dei flag di funzionalità e degli eventi personalizzati. La telemetria consente di prendere decisioni informate sulla strategia di gestione delle funzionalità. Il flag di funzionalità viene utilizzato con i dati di telemetria abilitati creati nella panoramica per abilitare i dati di telemetria per i flag di funzionalità. Prima di procedere, assicurarsi di creare un flag di funzionalità denominato Messaggio di saluto nell'archivio di configurazione con i dati di telemetria abilitati. Questa esercitazione si basa su quella relativa a come utilizzare i feature flag di variante in un'applicazione Python.

Prerequisiti

Aggiungere dati di telemetria all'applicazione Python

  1. Installare i pacchetti necessari usando pip:

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. Aprire app.py e configurare l'applicazione per connettersi ad Application Insights e pubblicare i dati di telemetria. Assicurarsi che l'istruzione import esistente from flask import Flask compaia dopo la chiamata configure_azure_monitor(...) mostrata nel codice seguente. Questo ordine è necessario affinché la strumentazione automatica OpenTelemetry funzioni correttamente.

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    
    # Configure Azure Monitor
    configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
    
  3. Inoltre, in app.py, caricare i flag di funzionalità da Configurazione app e inserirli nella gestione delle funzionalità. FeatureManager usa la publish_telemetry funzione di callback per pubblicare i dati di telemetria su Monitoraggio di Azure.

    from featuremanagement.azuremonitor import publish_telemetry
    
    feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
    
  4. Aprire routes.py e aggiornare il codice per tenere traccia dei propri eventi nell'applicazione. Quando track_event viene chiamato, viene pubblicato un evento personalizzato in Monitoraggio di Azure con l'utente specificato.

    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. Aprire index.html e aggiornare il codice per implementare il pulsante like. Il pulsante like invia una richiesta POST all'endpoint /heart quando si fa clic su .

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

Compilare ed eseguire l'app

  1. Application Insights richiede una stringa di connessione per connettersi alla risorsa di Application Insights. Impostare la APPLICATIONINSIGHTS_CONNECTION_STRING variabile di ambiente sulla stringa di connessione per la risorsa di Application Insights. Per individuare il stringa di connessione, aprire il portale di Azure, passare ad Application Insights, selezionare la risorsa di Application Insights creata in precedenza e quindi passare a Panoramica. Copiare il valore di Stringa di connessione. Sostituisci il valore segnaposto nel comando seguente con la stringa di connessione copiata dalla risorsa Application Insights.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Se si usa PowerShell, eseguire il comando seguente:

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

    Se si usa macOS o Linux, eseguire il comando seguente:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    

Raccogliere i dati di telemetria

Distribuire l'applicazione per iniziare a raccogliere dati di telemetria dagli utenti. Per testare la funzionalità, è possibile simulare l'attività utente creando molti utenti di test. Ogni utente visualizzerà una variante diversa dei messaggi di saluto e potrà interagire con l'applicazione facendo clic sul pulsante con il cuore per mettere Mi piace a una citazione. Man mano che la base utente cresce, è possibile monitorare il volume crescente di dati di telemetria raccolti in Configurazione app di Azure. È anche possibile eseguire il drill-down dei dati per analizzare il modo in cui ogni variante del flag di funzionalità influisce sul comportamento dell'utente.

Risorse aggiuntive