Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste tutorial, você usa telemetria em seu aplicativo Python para rastrear avaliações de sinalizadores de recursos e eventos personalizados. A telemetria permite que você tome decisões informadas sobre sua estratégia de gerenciamento de recursos. Você utiliza o sinalizador de recurso com telemetria habilitada criado na visão geral para habilitar a telemetria para sinalizadores de recurso. Antes de continuar, certifique-se de criar um sinalizador de recurso chamado Saudação no repositório de configurações com a telemetria habilitada. Este tutorial se baseia no tutorial para usar sinalizadores de recursos variantes em um aplicativo Python.
Pré-requisitos
- O sinalizador de recurso variante com telemetria habilitada em Habilitar telemetria para sinalizadores de recurso.
- O aplicativo do recurso Use variant sinaliza em um aplicativo Python.
Adicionar telemetria ao seu aplicativo Python
Instale os pacotes necessários usando pip:
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetryAbra
app.pye configure seu código para se conectar ao Application Insights para publicar telemetria.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))Além disso,
app.pycarregue seus sinalizadores de recursos da Configuração do aplicativo e carregue-os no gerenciamento de recursos.FeatureManagerusa a função de callback depublish_telemetrypara publicar telemetria no Azure Monitor.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)Abra
routes.pye atualize seu código para acompanhar seus próprios eventos em seu aplicativo. Quandotrack_eventé chamado, um evento personalizado é publicado no Azure Monitor com o usuário fornecido.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"})Abra
index.htmle atualize o código para implementar o botão like. O botão "gostar" envia uma solicitação POST para o endpoint/heartquando clicado.<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>
Criar e executar o aplicativo
O Application Insights requer uma cadeia de conexão para se conectar ao seu recurso do Application Insights. Defina a
APPLICATIONINSIGHTS_CONNECTION_STRINGvariável de ambiente como a cadeia de conexão para seu recurso do Application Insights.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"Se você usar o PowerShell, execute o seguinte comando:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"Se você usa macOS ou Linux, execute o seguinte comando:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'Execute a aplicação, consulte o passo 2 de Usar sinalizadores de recurso variante.
Crie 10 usuários diferentes e faça login no aplicativo. À medida que inicia sessão com cada utilizador, obtém uma variante de mensagem diferente para alguns deles. Cerca de 50% das vezes você não recebe mensagem nenhuma. 25% das vezes recebes a mensagem "Olá!" e 25% das vezes recebes "Espero que isso te alegre o dia!".
Alguns dos utilizadores selecionam o botão Gosto para acionar o evento de telemetria.
Abra seu recurso do Application Insights no portal do Azure e selecione Logs em Monitoramento. Na janela de consulta, execute a seguinte consulta para ver os eventos de telemetria:
// 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)
Você verá um "FeatureEvaluation" para cada vez que a página de cotação foi carregada e um evento "Liked" para cada vez que o botão like foi clicado. O evento "FeatureEvaluation" tem uma propriedade personalizada chamada
FeatureNamecom o nome do sinalizador de recurso que foi avaliado. Ambos os eventos têm uma propriedade personalizada chamadaTargetingIdcom o nome do usuário que gostou da citação.