Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här handledningen använder du telemetri i ditt Python-program för att spåra utvärderingar av funktionsflaggor och anpassade händelser. Med telemetri kan du fatta välgrundade beslut om din strategi för funktionshantering. Du använder funktionsflaggan med telemetri aktiverad som skapats i översikten för att aktivera telemetri för funktionsflaggor. Innan du fortsätter måste du skapa en funktionsflagga med namnet Greeting (Hälsning ) i konfigurationsarkivet med telemetri aktiverat. Den här självstudien bygger vidare på självstudien för att använda variantfunktionsflaggor i ett Python-program.
Förutsättningar
- Variantfunktionsflaggan med telemetri aktiverad från Aktivera telemetri för funktionsflaggor.
- Programmet från Använd variantfunktionsflaggor i ett Python-program.
Lägga till telemetri i python-programmet
Installera de nödvändiga paketen med pip:
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetryÖppna
app.pyoch konfigurera koden för att ansluta till Application Insights för att publicera telemetri.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))Läs även in
app.pydina funktionsflaggor från App Configuration och läs in dem i funktionshantering.FeatureManageranvänder återanropsfunktionenpublish_telemetryför att publicera telemetri till Azure Monitor.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)Öppna
routes.pyoch uppdatera koden för att spåra dina egna händelser i ditt program. Närtrack_eventanropas publiceras en anpassad händelse till Azure Monitor med den angivna användaren.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"})Öppna
index.htmloch uppdatera koden för att implementera gilla-knappen. Knappen Like skickar en POST-begäran till/heartslutpunkten när du klickar på den.<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>
Skapa och köra appen
Application Insights kräver en anslutningssträng för att ansluta till din Application Insights-resurs.
APPLICATIONINSIGHTS_CONNECTION_STRINGAnge miljövariabeln till anslutningssträngen för Application Insights-resursen.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"Om du använder PowerShell kör du följande kommando:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"Om du använder macOS eller Linux kör du följande kommando:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'Kör programmet, se steg 2 i Använda variantfunktionsflaggor.
Skapa 10 olika användare och logga in på programmet. När du loggar in med varje användare får du en annan meddelandevariant för vissa av dem. ~50% av tiden får du inget meddelande. 25% av tiden får du meddelandet "Hej!" och 25% av tiden får du "Jag hoppas att detta gör din dag!".
Med några av användarna väljer du knappen Gilla för att utlösa telemetrihändelsen.
Öppna Application Insights-resursen i Azure-portalen och välj Loggar under Övervakning. I frågefönstret kör du följande fråga för att se telemetrihändelserna:
// 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)
Du ser en "FeatureEvaluation" för varje gång offertsidan laddades och en "Gillad"-händelse för varje gång gillaknappen klickades. Händelsen "FeatureEvaluation" har en anpassad egenskap som heter
FeatureNamemed namnet på funktionsflaggan som utvärderades. Båda händelserna har en anpassad egenskap som heterTargetingIdmed namnet på den användare som gillade offerten.