Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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. Korzystasz z flagi funkcji z włączoną telemetrią, utworzonej w sekcji Włączanie telemetrii dla flag funkcji. Przed kontynuowaniem upewnij się, że utworzono flagę funkcji o nazwie Greeting w magazynie konfiguracji z włączoną telemetrią. Ten samouczek jest rozwinięciem tematu używania flag funkcji wariantów.
Wymagania wstępne
- Flaga wariantu funkcji z włączoną telemetrią w Włącz telemetrię dla flag funkcji.
- Aplikacja z funkcji flag Użyj wariantu.
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-opentelemetry
Otwórz
app.py
i 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.py
flagi funkcji z usługi App Configuration i załaduj je do zarządzania funkcjami.FeatureManager
używa funkcji wywołania zwrotnegopublish_telemetry
do 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.py
i zaktualizuj kod, aby śledzić własne zdarzenia w aplikacji. Po wywołaniutrack_event
niestandardowe 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.html
i 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_STRING
na 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żyj 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:
// 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)
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
FeatureName
z 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.