Telemetrie inschakelen voor functievlagmen in een Python-toepassing

In deze zelfstudie gebruikt u telemetrie in uw Python-toepassing om evaluaties van functievlagken en aangepaste gebeurtenissen bij te houden. Met telemetrie kunt u weloverwogen beslissingen nemen over uw strategie voor functiebeheer. U gebruikt de functievlag met telemetrie ingeschakeld die is gemaakt in het overzicht voor het inschakelen van telemetrie voor functievlagmen. Voordat u doorgaat, moet u ervoor zorgen dat u een functievlag maakt met de naam Begroeting in uw configuratiearchief, waarbij telemetrie is ingeschakeld. Deze zelfstudie bouwt voort op de zelfstudie voor het gebruik van variantfunctievlagmen in een Python-toepassing.

Vereiste voorwaarden

Telemetrie toevoegen aan uw Python-toepassing

  1. Installeer de vereiste pakketten met behulp van pip:

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. Open app.py en configureer uw toepassing om verbinding te maken met Application Insights en telemetriegegevens te publiceren. Zorg ervoor dat de bestaande from flask import Flask importinstructie wordt weergegeven na de configure_azure_monitor(...) aanroep die wordt weergegeven in de volgende code. Deze volgorde is vereist om automatische instrumentatie van OpenTelemetry correct te laten werken.

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    
    # Configure Azure Monitor
    configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
    
  3. app.py Laad ook uw functievlagmen vanuit App Configuration en laad ze in functiebeheer. FeatureManager gebruikt de publish_telemetry callback-functie om telemetrie te publiceren naar Azure Monitor.

    from featuremanagement.azuremonitor import publish_telemetry
    
    feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
    
  4. Open uw code en werk routes.py deze bij om uw eigen gebeurtenissen in uw toepassing bij te houden. Wanneer track_event wordt aangeroepen, wordt een aangepaste gebeurtenis gepubliceerd in Azure Monitor met de opgegeven gebruiker.

    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. Open index.html en werk de code bij om de knop Like te implementeren. De knop Like verzendt een POST-aanvraag naar het /heart eindpunt wanneer erop wordt geklikt.

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

De app bouwen en uitvoeren

  1. Application Insights vereist een verbindingsreeks om verbinding te maken met uw Application Insights-resource. Stel de APPLICATIONINSIGHTS_CONNECTION_STRING omgevingsvariabele in op de verbindingsreeks voor uw Application Insights-resource. Als u de verbindingsreeks wilt zoeken, opent u de Azure-portal, gaat u naar Application Insights, selecteert u de Application Insights-resource die u eerder hebt gemaakt en gaat u naar Overzicht. Kopieer de waarde van verbindingsreeks. Vervang de waarde van de plaatsaanduiding in het volgende commando door de verbindingsreeks die u hebt gekopieerd van uw Application Insights-resource.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Als u PowerShell gebruikt, voert u de volgende opdracht uit:

    $Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"
    

    Als u macOS of Linux gebruikt, voert u de volgende opdracht uit:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    

Telemetrie verzamelen

Implementeer uw toepassing om te beginnen met het verzamelen van telemetriegegevens van uw gebruikers. Als u de functionaliteit ervan wilt testen, kunt u gebruikersactiviteiten simuleren door veel testgebruikers te maken. Elke gebruiker krijgt een andere variant van welkomstberichten te zien en kan met de applicatie interageren door op de hartknop te klikken om een citaat leuk te vinden. Naarmate uw gebruikersbestand groeit, kunt u het toenemende aantal telemetriegegevens bewaken dat wordt verzameld in Azure App Configuration. Daarnaast kunt u inzoomen op de gegevens om te analyseren hoe elke variant van de functievlag het gedrag van gebruikers beïnvloedt.

Aanvullende bronnen