Habilitar telemetria para sinalizadores de recursos em um aplicativo Python

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

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 a sua aplicação para se ligar ao Application Insights e publicar dados de telemetria. Certifique-se de que a declaração de importação existente from flask import Flask aparece após a configure_azure_monitor(...) chamada apresentada no código seguinte. Esta ordem é necessária para que a auto-instrumentação da 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. Além disso, app.py carregue seus sinalizadores de recursos da Configuração do aplicativo e carregue-os no gerenciamento de recursos. FeatureManager usa a função de callback de 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 like. O botão "gostar" 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>
    

Criar e executar o aplicativo

  1. A Application Insights requer uma string de conexão para se conectar ao seu recurso do Application Insights. Defina a APPLICATIONINSIGHTS_CONNECTION_STRING variável de ambiente como a cadeia de conexão para seu recurso do Application Insights. Para localizar a cadeia de ligação, abra o portal Azure, navegue até Application Insights, selecione o recurso Application Insights criado anteriormente e depois vá a Visão Geral. Copie o valor da cadeia de ligação. Substitua o valor provisório no comando seguinte pela cadeia de ligação que copiou do seu recurso 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'
    

Recolha de telemetria

Implemente a sua aplicação para começar a recolher telemetria dos seus utilizadores. Para testar a sua funcionalidade, pode simular a atividade do utilizador criando muitos utilizadores de teste. Cada utilizador irá experienciar uma variante diferente de mensagens de saudação e poderá interagir com a aplicação clicando no botão de coração para gostar de uma citação. À medida que a sua base de utilizadores cresce, pode monitorizar o volume crescente de dados de telemetria recolhidos no Azure App Configuration. Além disso, pode aprofundar os dados para analisar como cada variante do flag de funcionalidade influencia o comportamento do utilizador.

Recursos adicionais