Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm verwenden Sie Telemetrie in Ihrer Python-Anwendung, um Feature-Flag-Bewertungen und benutzerdefinierte Ereignisse nachzuverfolgen. Telemetrie ermöglicht Es Ihnen, fundierte Entscheidungen über Ihre Featureverwaltungsstrategie zu treffen. Sie verwenden das mit aktivierter Telemetrie erstellte Feature-Flag aus der Übersicht, um Telemetrie für Feature-Flags zu aktivieren. Vor dem Fortfahren stellen Sie sicher, dass Sie ein Feature-Flag namens Begrüßung in Ihrem Konfigurationsspeicher mit aktivierter Telemetrie erstellen. Dieses Tutorial baut auf dem Tutorial zur Verwendung von Varianten-Feature-Flags in einer Python-Anwendung auf.
Voraussetzungen
- Das Varianten-Feature-Flag mit aktivierter Telemetrie aus Telemetrie für Feature-Flags aktivieren.
- Die Anwendung aus Verwendung von Varianten-Feature-Flags in einer Python-Anwendung.
Hinzufügen von Telemetrie zu Ihrer Python-Anwendung
Installieren Sie die erforderlichen Pakete mit pip:
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetryÖffnen und konfigurieren Sie
app.pyIhren Code, um eine Verbindung mit Application Insights herzustellen, um Telemetrie zu veröffentlichen.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))app.pyLaden Sie auch Ihre Featurekennzeichnungen aus der App-Konfiguration und laden Sie sie in die Featureverwaltung.FeatureManagerverwendet diepublish_telemetryRückruffunktion, um Telemetrie in Azure Monitor zu veröffentlichen.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)Öffnen Sie
routes.pyund aktualisieren Sie Ihren Code, um Ihre eigenen Ereignisse in Ihrer Anwendung nachzuverfolgen. Wenntrack_eventein benutzerdefiniertes Ereignis aufgerufen wird, wird ein benutzerdefiniertes Ereignis mit dem bereitgestellten Benutzer in Azure Monitor veröffentlicht.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"})Öffnen Sie
index.htmlund aktualisieren Sie ihn, um die Schaltfläche "Gefällt mir" zu implementieren. Die Schaltfläche "Gefällt mir" sendet beim Klicken eine POST-Anforderung an den/heartEndpunkt.<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>
Erstellen und Ausführen der App
Application Insights erfordert eine Verbindungszeichenfolge, um eine Verbindung mit Ihrer Application Insights-Ressource herzustellen. Legen Sie die
APPLICATIONINSIGHTS_CONNECTION_STRINGUmgebungsvariable auf die Verbindungszeichenfolge für Ihre Application Insights-Ressource fest.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"Wenn Sie PowerShell verwenden, führen Sie den folgenden Befehl aus:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"Führen Sie bei Verwendung von macOS oder Linux den folgenden Befehl aus:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'Führen Sie die Anwendung aus, siehe Schritt 2 der Verwendung von Variant-Featurekennzeichnungen.
Erstellen Sie 10 verschiedene Benutzer, und melden Sie sich bei der Anwendung an. Während Sie sich bei jedem Benutzer anmelden, erhalten Sie für einige benutzer eine andere Nachrichtenvariante. ~50 % der Zeit, in der Sie keine Nachricht erhalten. 25% der Zeit erhalten Sie die Nachricht "Hallo!" und 25% der Zeit erhalten Sie "Ich hoffe, dass Ihnen dies den Tag verschönert!".
Wählen Sie bei einigen Benutzern die Schaltfläche "Gefällt mir" aus, um das Telemetrieereignis auszulösen.
Öffnen Sie Ihre Application Insights-Ressource im Azure-Portal, und wählen Sie "Protokolle " unter "Überwachung" aus. Führen Sie im Abfragefenster die folgende Abfrage aus, um die Telemetrieereignisse anzuzeigen:
// 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)
Jedes Mal, wenn die Zitatseite geladen wurde, wird eine "FeatureEvaluation" angezeigt, und jedes Mal, wenn auf die Schaltfläche "Gefällt mir" geklickt wurde, wird ein "Gefällt mir"-Ereignis angezeigt. Das Ereignis "FeatureEvaluation" hat eine benutzerdefinierte Eigenschaft namens
FeatureName, die mit dem Namen des Feature-Flags, das ausgewertet wurde, versehen ist. Beide Ereignisse haben eine benutzerdefinierte Eigenschaft namensTargetingIdmit dem Namen des Benutzers, der das Zitat mochte.