Sdílet prostřednictvím


Povolení telemetrie pro příznaky funkcí v aplikaci v Pythonu

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

Přidání telemetrie do aplikace v Pythonu

  1. Nainstalujte požadované balíčky pomocí nástroje pip:

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. Otevřete app.py a 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"))
    
  3. Také při app.py načítání příznaků funkcí z Konfigurace aplikace a jejich načtení do správy funkcí. FeatureManager používá funkci zpětného publish_telemetry volá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)
    
  4. Otevřete routes.py a aktualizujte kód, abyste mohli sledovat vlastní události ve vaší aplikaci. Při volání track_event se 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"})
    
  5. Otevřete index.html a aktualizujte kód, aby implementovali tlačítko like. Tlačítko Like odešle požadavek POST koncovému /heart bodu 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

  1. K připojení k prostředku Application Insights je vyžadován připojovací řetězec. Nastavte proměnnou APPLICATIONINSIGHTS_CONNECTION_STRING prostř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'
    
  2. Spusťte aplikaci, viz krok 2 funkce použití variantních příznaků.

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

  4. Někteří z uživatelů vyberou tlačítko To se mi líbí, čímž spustí událost telemetrie.

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

    Snímek obrazovky Application Insights zobrazující tabulku výsledků se čtyřmi řádky Vše, Simple, Long a None s příslušnými počty uživatelů a procenty.

    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 FeatureName s názvem příznaku funkce, který byl vyhodnocen. Obě události mají vlastní vlastnost nazvanou TargetingId se jménem uživatele, který lajkoval citaci.

Dodatečné zdroje