Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu použijete telemetrii v aplikaci Pythonu ke sledování vyhodnocení příznaků funkcí a vlastních událostí. Telemetrie umožňuje činit informovaná rozhodnutí o strategii správy funkcí. Použijete přepínač funkcí s povolenou telemetrií vytvořený v přehledu pro povolení telemetrie pro přepínače funkcí. Než budete pokračovat, ujistěte se, že vytvoříte příznak funkce s názvem Greeting v úložišti konfigurace s povolenou telemetrií. Tento kurz navazuje na kurz o používání variantních příznaků funkcí v Python aplikaci.
Požadavky
- Varianta příznaku funkce s povolenou telemetrií z možnosti Povolit telemetrii pro příznaky funkcí.
- Aplikace z Použití variantních příznaků v aplikaci v Pythonu.
Přidání telemetrie do aplikace v Pythonu
Nainstalujte požadované balíčky pomocí nástroje pip:
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetryOtevřete
app.pya nakonfigurujte kód pro připojení k Application Insights pro publikování telemetrie.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))Také při
app.pynačítání příznaků funkcí z Konfigurace aplikace a jejich načtení do správy funkcí.FeatureManagerpoužívá funkci zpětnéhopublish_telemetryvolání k publikování telemetrie do služby Azure Monitor.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)Otevřete
routes.pya aktualizujte kód, abyste mohli sledovat vlastní události ve vaší aplikaci. Při volánítrack_eventse vlastní událost publikuje ve službě Azure Monitor se zadaným uživatelem.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"})Otevřete
index.htmla aktualizujte kód, aby implementovali tlačítko like. Tlačítko Like odešle požadavek POST koncovému/heartbodu po kliknutí.<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>
Sestavení a spuštění aplikace
K připojení k prostředku Application Insights je vyžadován připojovací řetězec. Nastavte proměnnou
APPLICATIONINSIGHTS_CONNECTION_STRINGprostředí na připojovací řetězec vašeho prostředku Application Insights.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"Pokud používáte PowerShell, spusťte následující příkaz:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"Pokud používáte macOS nebo Linux, spusťte následující příkaz:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'Spusťte aplikaci, viz krok 2 funkce použití variantních příznaků.
Vytvořte 10 různých uživatelů a přihlaste se k aplikaci. Když se přihlásíte s každým uživatelem, získáte pro některé z nich jinou variantu zprávy. ~50% času, kdy se žádná zpráva nedostane. 25% času, kdy dostanete zprávu "Hello!" a 25% času, kdy dostanete "Doufám, že to dělá váš den!".
Někteří z uživatelů vyberou tlačítko To se mi líbí, čímž spustí událost telemetrie.
Na webu Azure Portal otevřete prostředek Application Insights a v části Monitorování vyberte Protokoly. V okně dotazu spusťte následující dotaz, aby se zobrazily události telemetrie:
// 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)
Při každém načtení stránky nabídky uvidíte jedno "FeatureEvaluation" a pokaždé, když je kliknuto na tlačítko "Like", zobrazí se událost "Liked". Událost FeatureEvaluation má vlastní vlastnost volanou
FeatureNames názvem příznaku funkce, který byl vyhodnocen. Obě události mají vlastní vlastnost nazvanouTargetingIdse jménem uživatele, který lajkoval citaci.