Habilitar a telemetria para sinalizadores de recursos em um aplicativo Python

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. Use o sinalizador de recurso com a telemetria habilitada criada na visão geral para habilitar a telemetria para sinalizadores de recursos. Antes de continuar, certifique-se de criar um sinalizador de recurso chamado Saudação em seu repositório de configuração com telemetria habilitada. Este tutorial baseia-se no tutorial para usar sinalizadores de recursos variantes em um aplicativo Python.

Pré-requisitos

Adicionar telemetria ao seu aplicativo Python

  1. Instale os pacotes necessários usando pip:

    pip install azure-appconfiguration-provider
    pip install featuremanagement["AzureMonitor"]
    pip install azure-monitor-opentelemetry
    
  2. Abra app.py e configure seu aplicativo para se conectar ao Application Insights e publicar dados de telemetria. Verifique se a instrução de importação existente from flask import Flask é exibida após a configure_azure_monitor(...) chamada mostrada no código a seguir. Essa ordem é necessária para que a instrumentação automática do OpenTelemetry funcione corretamente.

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    
    # Configure Azure Monitor
    configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))
    
  3. 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 chamada publish_telemetry para publicar telemetria no Azure Monitor.

    from featuremanagement.azuremonitor import publish_telemetry
    
    feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)
    
  4. Abra routes.py e atualize seu código para acompanhar seus próprios eventos em seu aplicativo. Quando track_event é chamado, um evento personalizado é publicado no Azure Monitor com o usuário fornecido.

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

  1. O Application Insights requer uma cadeia de conexão para se conectar ao recurso do Application Insights. Defina a variável de ambiente APPLICATIONINSIGHTS_CONNECTION_STRING para a cadeia de conexão do recurso do Application Insights. Para localizar o cadeia de conexão, abra o portal Azure, navegue até o Application Insights, selecione o recurso do Application Insights criado anteriormente e vá para Visão geral. Copie o valor da cadeia de conexão. Substitua o valor do espaço reservado no comando a seguir pela cadeia de conexão que você copiou 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'
    

Coletar telemetria

Implante seu aplicativo para começar a coletar telemetria de seus usuários. Para testar sua funcionalidade, você pode simular a atividade do usuário criando muitos usuários de teste. Cada usuário verá uma variante diferente das mensagens de saudação e poderá interagir com o aplicativo clicando no botão com ícone de coração para curtir uma citação. À medida que sua base de usuários cresce, você pode monitorar o volume crescente de dados de telemetria coletados na Configuração de Aplicativos do Azure. Além disso, você pode fazer uma busca detalhada nos dados para analisar como cada variante do sinalizador de recurso influencia o comportamento do usuário.

Recursos adicionais