Udostępnij za pośrednictwem


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. 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

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 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"))
    
  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
    
    @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.

    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'
    
  2. Uruchom aplikację, zobacz krok 2 sekcji Use variant feature flags (Użyj flag funkcji wariantu ).

  3. 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ń!".

  4. Kiedy niektórzy użytkownicy wybiorą przycisk Polubienie, aby wyzwolić zdarzenie telemetrii.

  5. 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)
    

    Zrzut ekranu usługi Application Insights przedstawiający tabelę wyników z czterema wierszami; Wszystkie, Proste, Długie i Brak z odpowiednimi liczbami użytkowników i wartościami procentowymi.

    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 nazwie TargetingId, która zawiera nazwę użytkownika, który polubił cytat.

Dodatkowe zasoby