Compartilhar via


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

Observação

Para aplicativos de funções do Azure, consulte Usar OpenTelemetry com o Azure Functions.

O SDK do Python do OpenCensus está desativado.

Siga estas etapas para migrar aplicativos Python para o Azure MonitorApplication InsightsOpenTelemetry Distro.

Aviso

Etapa 1: desinstalar bibliotecas do 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

Etapa 2: Remova o OpenCensus do seu código

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

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

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 as APIs/SDKs do OpenTelemetry Python

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

Observação

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

Etapa 4: Configurar o Azure Monitor OpenTelemetry Distro

Siga a página de introdução para integrar a distribuição do 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 ao Python < 3.7

As soluções de monitoramento baseadas em Python da OpenTelemetry suportam apenas Python 3.7 e superiores, excluindo as versões Python 2.7, 3.4, 3.5 e 3.6 anteriormente suportadas pelo OpenCensus. Sugerimos a atualização para usuários que estão nas versões mais antigas do Python, pois, a partir da gravação deste documento, essas versões já atingiram o fim da vida útil. Usuários que insistem em não atualizar ainda podem usar as soluções OpenTelemetry, mas podem encontrar comportamento inesperado ou problemático que não é suportado. De qualquer forma, a última versão com suporte do opencensus-ext-azure sempre existe e as imagens funcionam 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 à coleção 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 monitor Python Distro do OpenTelemetry Azure é mais um serviço completo para as necessidades de monitoramento mais comuns de seus aplicativos Python. Como a distribuição encapsula as APIs/SDk do OpenTelemetry, algumas configurações para casos de uso mais incomuns podem não ser suportadas atualmente pela distribuição. Em vez disso, você pode optar por integrar o exportador OpenTelemetry do Azure Monitor, que, com as APIs/SDKs do OpenTelemetry, deve ser capaz de atender às suas necessidades de monitoramento. Algumas dessas configurações incluem:

  • Propagadores personalizados
  • Amostradores personalizados
  • Adicionar processadores de span/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 em uma função do Azure, o pacote opencensus-extension-azure-functions foi fornecido para permitir um grafo distribuído conectado.

Atualmente, as soluções OpenTelemetry para o Azure Monitor não oferecem suporte a esse cenário. Como solução alternativa, você pode propagar manualmente o contexto de rastreamento no 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 OpenCensus SDK oferece maneiras de coletar e exportar telemetria por meio de integrações e exportadores do OpenCensus, respectivamente. No OpenTelemetry, as integrações agora são chamadas de instrumentações, enquanto os exportadores permaneceram com a mesma terminologia. As instrumentações e exportadores do OpenTelemetry Python são um superconjunto do que foi fornecido no OpenCensus, portanto, em termos de cobertura e funcionalidade da biblioteca, as bibliotecas do OpenTelemetry são uma atualização direta. Quanto à distribuição do OpenTelemetry do Azure Monitor, ela é fornecida com algumas das instrumentações populares do OpenTelemetry do Python prontas para uso, de modo que nenhum código extra é necessário. A Microsoft oferece suporte total a essas instrumentações.

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

Se você quiser sugerir uma biblioteca de instrumentação da comunidade para incluirmos na distribuição, poste uma ideia ou vote em uma em nossa comunidade de comentários. Para exportadores, a distribuição do OpenTelemetry do Azure Monitor é fornecida com o exportador do OpenTelemetry do Azure Monitor. Se você também quiser usar outros exportadores, poderá usá-los com a distribuição, como neste exemplo.

Processadores de Telemetria

Não há 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 da função de nuvem

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

Modificando spans com SpanProcessors

em breve.

Modificando métricas com visualizações

em breve.

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 entre performanceCounters na sua instância do Application Insights. No OpenTelemetry, não enviamos mais essas métricas explicitamente para performanceCounters. As métricas relacionadas a solicitações de entrada/saída podem ser encontradas nas métricas padrão. Se você quiser que o OpenTelemetry colete automaticamente as métricas relacionadas ao sistema, poderá usar a instrumentação de métricas experimentais do sistema, contribuída pela comunidade do OpenTelemetry para Python. Esse pacote é experimental e não tem suporte oficial da Microsoft.

Suporte

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