Włączanie telemetrii dla flag funkcji w aplikacji języka Python

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

Dodawanie danych telemetrycznych do aplikacji w języku Python

  1. Zainstaluj wymagane pakiety przy użyciu narzędzia pip.

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. Otwórz app.py i skonfiguruj aplikację w celu nawiązania połączenia z usługą Application Insights i opublikowania danych telemetrycznych. Upewnij się, że istniejąca instrukcja importu from flask import Flask znajduje się po wywołaniu configure_azure_monitor(...) przedstawionym w poniższym kodzie. Ta kolejność jest wymagana, aby automatyczna instrumentacja OpenTelemetry działała poprawnie.

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    
    # Configure Azure Monitor
    configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
    
  3. 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 zwrotnego publish_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)
    
  4. Otwórz routes.py i zaktualizuj kod, aby śledzić własne zdarzenia w aplikacji. Po wywołaniu track_event niestandardowe zdarzenie zostaje opublikowane w usłudze Azure Monitor z określonym użytkownikiem.

    from featuremanagement import track_event
    from flask import jsonify
    
    @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"})
    
  5. 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

  1. 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. Aby zlokalizować parametry połączenia, otwórz portal Azure, przejdź do pozycji Application Insights, wybierz utworzony wcześniej zasób usługi Application Insights, a następnie przejdź do pozycji Przegląd. Skopiuj wartość elementu Connection String. Zastąp wartość symbolu zastępczego w poniższym poleceniu parametrami połączenia skopiowanymi z 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'
    

Zbieranie danych telemetrycznych

Wdróż aplikację, aby rozpocząć zbieranie danych telemetrycznych od użytkowników. Aby przetestować jego funkcjonalność, możesz symulować aktywność użytkownika, tworząc wielu użytkowników testowych. Każdy użytkownik zobaczy inny wariant wiadomości powitalnych i będzie mógł wchodzić w interakcję z aplikacją, klikając przycisk z sercem, aby polubić cytat. Wraz ze wzrostem bazy użytkowników można monitorować rosnącą ilość danych telemetrycznych zebranych w usłudze Azure App Configuration. Ponadto możesz przejść do szczegółów danych, aby przeanalizować, jak każdy wariant flagi funkcji wpływa na zachowanie użytkownika.

Dodatkowe zasoby