Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku użyjesz telemetrii w aplikacji Python do śledzenia ewaluacji flag funkcjonalności i zdarzeń niestandardowych. Telemetria umożliwia podejmowanie świadomych decyzji dotyczących strategii zarządzania funkcjami. Używasz flagi funkcji z włączoną telemetrią, która została utworzona w przeglądzie na potrzeby włączania telemetrii dla flag funkcji. Przed kontynuowaniem upewnij się, że utworzono flagę funkcji o nazwie Greeting w magazynie konfiguracji z włączoną telemetrią. Ten samouczek opiera się na samouczku dotyczącym używania flag funkcji wariantów w aplikacji napisanej w Pythonie.
Wymagania wstępne
- Flaga wariantu funkcji z włączoną telemetrią w Włącz telemetrię dla flag funkcji.
- Aplikacja korzystająca z flag funkcji wariantu w języku Python.
Dodawanie danych telemetrycznych do aplikacji w języku Python
Zainstaluj wymagane pakiety przy użyciu narzędzia pip.
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetryOtwórz
app.pyi skonfiguruj kod w celu nawiązania połączenia z usługą Application Insights w celu publikowania danych telemetrycznych.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))Ponadto załaduj
app.pyflagi funkcji z usługi App Configuration i załaduj je do zarządzania funkcjami.FeatureManagerużywa funkcji wywołania zwrotnegopublish_telemetrydo publikowania danych telemetrycznych w usłudze Azure Monitor.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)Otwórz
routes.pyi zaktualizuj kod, aby śledzić własne zdarzenia w aplikacji. Po wywołaniutrack_eventniestandardowe zdarzenie zostaje opublikowane w usłudze Azure Monitor z określonym użytkownikiem.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"})Otwórz
index.htmli zaktualizuj kod, aby zaimplementować przycisk polubienie. Po kliknięciu przycisku "Lubię to", żądanie POST jest wysyłane do punktu końcowego/heart.<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>
Kompilowanie i uruchamianie aplikacji
Usługa Application Insights wymaga parametrów połączenia w celu nawiązania połączenia z zasobem usługi Application Insights. Ustaw zmienną środowiskową
APPLICATIONINSIGHTS_CONNECTION_STRINGna ciąg połączenia dla zasobu usługi Application Insights.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"Jeśli używasz programu PowerShell, uruchom następujące polecenie:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'Uruchom aplikację, zobacz krok 2 sekcji Use variant feature flags (Używanie flag funkcji wariantu).
Utwórz 10 różnych użytkowników i zaloguj się do aplikacji. Podczas logowania się do każdego użytkownika otrzymujesz inny wariant komunikatu dla niektórych z nich. ~50% czasu nie dostajesz komunikatu. 25% czasu otrzymujesz komunikat "Hello!" i 25% czasu otrzymujesz "Mam nadzieję, że to poprawi twój dzień!".
Kiedy niektórzy użytkownicy wybiorą przycisk Polubienie, aby wyzwolić zdarzenie telemetrii.
Otwórz zasób usługi Application Insights w witrynie Azure Portal i wybierz pozycję Dzienniki w obszarze Monitorowanie. W oknie zapytania uruchom następujące zapytanie, aby wyświetlić zdarzenia telemetrii:
// 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)
Po każdym załadowaniu strony oferty zostanie wyświetlony jeden komunikat "FeatureEvaluation" i jedno zdarzenie "Lubiane" za każdym razem, gdy przycisk polubienia został kliknięty. Zdarzenie "FeatureEvaluation" ma właściwość niestandardową o nazwie
FeatureNamez nazwą flagi funkcji, która została obliczona. Oba zdarzenia mają właściwość niestandardową o nazwieTargetingId, która zawiera nazwę użytkownika, który polubił cytat.