Migrando do OpenCensus Python SDK e Azure Monitor OpenCensus exportador para Python para Azure Monitor OpenTelemetry Python Distro

Nota

O OpenCensus Python SDK foi preterido, mas a Microsoft o suporta até a aposentadoria em 30 de setembro de 2024. Agora recomendamos a oferta Python baseada em OpenTelemetry e fornecemos orientação de migração.

Siga estas etapas para migrar aplicativos Python para a Distro OpenTelemetry do Azure Monitor Application Insights.

Aviso

  • O blog "Como migrar para o OpenTelemetry" do OpenCensus não é aplicável aos usuários do Azure Monitor.
  • O shim OpenTelemetry OpenCensus não é recomendado ou suportado pela Microsoft.
  • A seguir descreve o único plano de migração para clientes do Azure Monitor.

Etapa 1: desinstalar bibliotecas OpenCensus

Desinstale todas as bibliotecas relacionadas ao OpenCensus, incluindo todos os pacotes Pypi que começam com opencensus-*.

pip freeze | grep opencensus | xargs pip uninstall -y

Passo 2: Remover OpenCensus do seu código

Remova todas as instâncias do SDK do OpenCensus e do exportador do Azure Monitor OpenCensus do seu código.

Verifique as instruções de importação começando com opencensus para encontrar todas as integrações, exportadores e instâncias da API/SDK do OpenCensus que devem ser removidas.

A seguir estão exemplos de instruções de importação que devem ser removidas.

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

from opencensus.ext.azure.log_exporter import AzureLogHandler

Etapa 3: Familiarize-se com APIs/SDKs Python do OpenTelemetry

A documentação a seguir fornece conhecimento de pré-requisitos das APIs/SDKs do OpenTelemetry Python.

Nota

O OpenTelemetry Python e o OpenCensus Python têm diferentes superfícies de API, recursos de coleta automática e instruções de integração.

Etapa 4: Configurar a Distro OpenTelemetry do Azure Monitor

Siga a página de introdução para integrar a Distro OpenTelemetry do Azure Monitor.

Alterações e limitações

As seguintes alterações e limitações podem ser encontradas ao migrar do OpenCensus para o OpenTelemetry.

Suporte a Python < 3.7

As soluções de monitoramento baseadas em Python da OpenTelemetry suportam apenas Python 3.7 e superior, excluindo as versões 2.7, 3.4, 3.5 e 3.6 do OpenCensus anteriormente suportadas. Sugerimos a atualização para usuários que estão nas versões mais antigas do Python, uma vez que, no momento em que escrevo este documento, essas versões já chegaram ao fim da vida útil. Os usuários que são inflexíveis sobre não atualizar ainda podem usar as soluções OpenTelemetria, mas podem encontrar um comportamento inesperado ou de quebra que não é suportado. Em qualquer caso, a última versão suportada do opencensus-ext-azure sempre existe, e ainda funciona para essas versões, mas nenhuma nova versão é feita para esse projeto.

Configurações

O OpenCensus Python forneceu algumas opções de configuração relacionadas à coleta e exportação de telemetria. Você obtém as mesmas configurações, e muito mais, usando as APIs e o SDK do OpenTelemetry Python . O OpenTelemetry Azure monitor Python Distro é mais um one-stop-shop para as necessidades de monitoramento mais comuns para seus aplicativos Python. Como a Distro encapsula as APIs/SDk do OpenTelemetry , algumas configurações para casos de uso mais incomuns podem não ser suportadas atualmente para a Distro. Em vez disso, você pode optar por integrar o exportador OpenTelemetry do monitor do Azure, que, com as APIs/SDKs do OpenTelemetria, deve ser capaz de atender às suas necessidades de monitoramento. Algumas dessas configurações incluem:

  • Propagadores personalizados
  • Amostradores personalizados
  • Adicionando processadores de extensão/log/leitores de métricas extras

Coesão com o Azure Functions

Para fornecer recursos de rastreamento distribuído para aplicativos Python que chamam outros aplicativos Python dentro de uma função do Azure, o pacote opencensus-extension-azure-functions foi fornecido para permitir um gráfico distribuído conectado.

Atualmente, as soluções OpenTelemetry para o Azure Monitor não suportam este cenário. Como solução alternativa, você pode propagar manualmente o contexto de rastreamento em seu aplicativo de funções do Azure, conforme mostrado no exemplo a seguir.

from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
  TraceContextTextMapPropagator

# Context parameter is provided for the body of the function
def main(req, context):
  functions_current_context = {
    "traceparent": context.trace_context.Traceparent,
    "tracestate": context.trace_context.Tracestate
  }
  parent_context = TraceContextTextMapPropagator().extract(
      carrier=functions_current_context
  )
  token = attach(parent_context)

  ...
  # Function logic
  ...
  detach(token)

Extensões e exportadores

O SDK do OpenCensus oferecia maneiras de coletar e exportar telemetria por meio de integrações e exportadores do OpenCensus, respectivamente. No OpenTelemetry, as integrações são agora referidas como instrumentações, enquanto os exportadores permaneceram com a mesma terminologia. As instrumentações e exportadores OpenTelemetry Python são um superconjunto do que foi fornecido no OpenCensus, portanto, em termos de cobertura e funcionalidade da biblioteca, as bibliotecas OpenTelemetry são uma atualização direta. Quanto à Distro OpenTelemetry do Azure Monitor, ela vem com algumas das instrumentações populares do OpenTelemetry Python prontas para uso, portanto, nenhum código extra é necessário. A Microsoft suporta totalmente estas instrumentações.

Quanto às outras instrumentações OpenTelemetry Python que não estão incluídas nesta lista, os usuários ainda podem instrumentar manualmente com elas. No entanto, é importante notar que a estabilidade e o comportamento não são garantidos ou suportados nesses casos. Portanto, use-os a seu critério.

Se você gostaria de sugerir uma biblioteca de instrumentação da comunidade para incluir em nossa distro, postar ou votar uma ideia em nossa comunidade de feedback. Para exportadores, a distro OpenTelemetry do Azure Monitor vem junto com o exportador do Azure Monitor OpenTelemetry . Se você gostaria de usar outros exportadores também, você pode usá-los com a distribuição, como neste exemplo.

TelemetryProcessors

Os processadores de telemetria OpenCensus Python são um mecanismo poderoso no qual os usuários permitem que os usuários modifiquem sua telemetria antes de serem enviados ao exportador. Não há nenhum conceito de TelemetryProcessors no mundo OpenTelemetry , mas há APIs e classes que você pode usar para replicar o mesmo comportamento.

Definindo o nome da função de nuvem e a instância de função de nuvem

Siga as instruções aqui para saber como definir o nome da função de nuvem e a instância de função de nuvem para sua telemetria. A Distro OpenTelemetry Azure Monitor busca automaticamente os valores das variáveis de ambiente e preenche os respetivos campos.

Modificando extensões com SpanProcessors

Disponível brevemente.

Modificando métricas com visualizações

Disponível brevemente.

Contadores de Desempenho

O exportador do OpenCensus Python Azure Monitor coletou automaticamente métricas relacionadas ao sistema e ao desempenho chamadas contadores de desempenho. Essas métricas aparecem em performanceCounters sua instância do Application Insights. No OpenTelemetry, não enviamos mais essas métricas explicitamente para .performanceCounters As métricas relacionadas às solicitações de entrada/saída podem ser encontradas em métricas padrão. Se você quiser que o OpenTelemetry colete automaticamente métricas relacionadas ao sistema, você pode usar a instrumentação experimental de métricas do sistema, contribuída pela comunidade OpenTelemetry Python. Este pacote é experimental e não é oficialmente suportado pela Microsoft.

Suporte

Para revisar as etapas de solução de problemas, as opções de suporte ou fornecer comentários sobre o OpenTelemetria, consulte Solução de problemas, suporte e comentários do OpenTelemetry para o Azure Monitor Application Insights.