Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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à. Verrà utilizzato il flag di funzionalità con i dati di telemetria abilitati creato in 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 sull'utilizzo dei flag di funzionalità varianti.
Prerequisiti
- Flag di funzionalità varianti con i dati di telemetria abilitati in Abilitare i dati di telemetria per i flag di funzionalità.
- Applicazione derivante da Utilizzo dei flag di funzionalità varianti.
Aggiungere dati di telemetria all'applicazione Python
Installare i pacchetti necessari usando pip:
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetry
Aprire
app.py
e configurare il codice per connettersi ad Application Insights per pubblicare i dati di telemetria.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
Inoltre, in
app.py
, caricare i flag di funzionalità da Configurazione app e inserirli nella gestione delle funzionalità.FeatureManager
usa lapublish_telemetry
funzione di callback per pubblicare i dati di telemetria su Azure Monitor.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
Aprire
routes.py
e aggiornare il codice per tenere traccia dei propri eventi nell'applicazione. Quandotrack_event
viene chiamato, viene pubblicato un evento personalizzato in Monitoraggio di Azure con l'utente specificato.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"})
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
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.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'
Eseguire l'applicazione, vedere il passaggio 2 di Utilizzo dei flag di funzionalità varianti .
Creare 10 utenti diversi e accedere all'applicazione. Quando si accede con ogni utente, viene visualizzata una variante del messaggio diversa per alcune di esse. Circa 50% dell'intervallo di tempo in cui non viene ricevuto alcun messaggio. 25% dell'intervallo di tempo in cui si riceve il messaggio "Salve!" e 25% dell’intervallo di tempo in cui si ottiene "Ti auguro una buona giornata!".
Alcuni utenti devono selezionare il pulsante Like per attivare un evento di telemetria.
Aprire la risorsa di Application Insights nel portale di Azure e selezionare Log in Monitoraggio. Nella finestra di query eseguire la query seguente per visualizzare gli eventi di telemetria:
// 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)
Viene visualizzato un evento "FeatureEvaluation" per ogni volta che è stata caricata la pagina delle citazioni e un evento "Mi piace" per ogni volta che si è fatto clic sul pulsante mi piace. L'evento "FeatureEvaluation" ha una proprietà personalizzata denominata
FeatureName
con il nome del flag di funzionalità valutato. Entrambi gli eventi hanno una proprietà personalizzata denominataTargetingId
con il nome dell'utente che ha apprezzato la citazione.