Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você usará a telemetria em seu aplicativo Python para acompanhar avaliações de sinalizador de recursos e eventos personalizados. A telemetria permite que você tome decisões informadas sobre sua estratégia de gerenciamento de recursos. Você usa o sinalizador de recurso com telemetria habilitada criado em Habilitar telemetria para sinalizadores de recurso. Antes de continuar, certifique-se de criar um sinalizador de recurso chamado Saudação em seu repositório de configuração com telemetria habilitada. Esse tutorial é baseado em usar sinalizadores de recurso de variante.
Pré-requisitos
- O sinalizador de recurso de variante com telemetria habilitada de Habilitar telemetria para sinalizadores de recurso.
- O aplicativo de Usar sinalizadores de recurso de variante.
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-opentelemetry
Abra
app.py
e configure seu código para se conectar ao Application Insights para publicar a telemetria.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
Também em
app.py
, carregue sinalizadores de recursos da Configuração de Aplicativos e os integre ao gerenciamento de recursos.FeatureManager
usa a função de retorno de chamadapublish_telemetry
para publicar telemetria no Azure Monitor.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
Abra
routes.py
e 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.html
e atualize o código para implementar o botão curtir. O botão Curtir envia uma solicitação POST para o endpoint/heart
quando 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>
Compilar e executar o aplicativo
O Application Insights exige uma cadeia de conexão para se conectar ao seu recurso do Application Insights. Defina a variável de ambiente
APPLICATIONINSIGHTS_CONNECTION_STRING
para a cadeia de conexão do 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 comando a seguir:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
Execute o aplicativo, consulte a etapa 2 de Usar sinalizadores de recursos variantes .
Crie 10 usuários diferentes e faça logon no aplicativo. Ao fazer logon com cada usuário, você obtém uma variante de mensagem diferente para alguns deles. Em cerca de 50% dos casos, nenhuma mensagem é exibida. Em 25% dos casos, a mensagem exibida é "Olá!", e nos outros 25%, "Espero que isso melhore o seu dia!".
Com alguns usuários, selecione o botão Curtir para disparar o evento de telemetria.
Abra o 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:
// 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)
Você verá um evento "FeatureEvaluation" cada vez que a página de citações for carregada, e um evento "Liked" cada vez que o botão curtir for clicado. O evento "FeatureEvaluation" tem uma propriedade personalizada chamada
FeatureName
com o nome do sinalizador de recurso que foi avaliado. Ambos os eventos têm uma propriedade personalizada chamadaTargetingId
com o nome do usuário que gostou da citação.