Compartir vía


Migración desde el SDK de Python de OpenCensus y el exportador de OpenCensus de Azure Monitor para Python a la distribución de Python de OpenTelemetry de Azure Monitor

Nota:

El SDK de OpenCensus para Python está en desuso, pero Microsoft lo admite hasta la retirada el 30 de septiembre de 2024. Ahora se recomienda la oferta de Python basada en OpenTelemetry y se proporcionan instrucciones de migración.

Siga estos pasos para migrar aplicaciones de Python a la distribución de OpenTelemetry Distro de Application Insights de Azure Monitor.

Advertencia

Paso 1: Desinstalar bibliotecas de OpenCensus

Desinstale todas las bibliotecas relacionadas con OpenCensus, incluidos todos los paquetes de Pypi que comienzan por opencensus-*.

pip freeze | grep opencensus | xargs pip uninstall -y

Paso 2: Quitar OpenCensus del código

Quite todas las instancias del SDK de OpenCensus y el exportador de OpenCensus de Azure Monitor del código.

Compruebe si hay instrucciones de importación a partir opencensus de para buscar todas las integraciones, exportadores e instancias de OpenCensus API/SDK que se deben quitar.

A continuación se muestran ejemplos de instrucciones de importación que se deben quitar.

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

Paso 3: Familiarícese con las API/SDK de Python de OpenTelemetry

En la siguiente documentación se proporcionan conocimientos previos de las API o LOS SDK de Python de OpenTelemetry.

Nota:

OpenTelemetry Python y OpenCensus Python tienen diferentes superficies de API, funcionalidades de autocollection e instrucciones de incorporación.

Paso 4: Configuración de la distribución openTelemetry de Azure Monitor

Siga la página de introducción para incorporarla a la distribución openTelemetry de Azure Monitor.

Notas y limitaciones

Se pueden encontrar los siguientes cambios y limitaciones al migrar de OpenCensus a OpenTelemetry.

Compatibilidad Python < 3.7

Las soluciones de supervisión basadas en Python de OpenTelemetry solo admiten Python 3.7 y versiones posteriores, excepto las versiones de Python compatibles anteriormente 2.7, 3.4, 3.5 y 3.6 de OpenCensus. Se recomienda actualizar para los usuarios que están en las versiones anteriores de Python, ya que, a partir de la escritura de este documento, esas versiones ya han llegado al final del ciclo de vida. Los usuarios que están inflexibles sobre la no actualización pueden seguir usando las soluciones de OpenTelemetry, pero pueden encontrar un comportamiento inesperado o importante que no es compatible. En cualquier caso, la última versión soportada de opencensus-ext-azure siempre existe, y sigue funcionando para esas versiones, pero no se hacen nuevas versiones para ese proyecto.

Configurations

OpenCensus Python proporcionó algunas opciones de configuración relacionadas con la recopilación y exportación de telemetría. Puede lograr las mismas configuraciones, etc., mediante las API de Python y el SDK de OpenTelemetry . La distribución de Python de OpenTelemetry para Azure Monitor es más de una tienda única para las necesidades de supervisión más comunes para las aplicaciones de Python. Dado que la distribución encapsula las API/SDk de OpenTelemetry, es posible que algunas configuraciones para casos de uso más raros no se admita actualmente para la distribución. En su lugar, puede optar por incorporarse al exportador de OpenTelemetry de Azure Monitor, que, con las API o SDK de OpenTelemetry, debe ser capaz de adaptarse a sus necesidades de supervisión. Algunas de estas configuraciones son:

  • Propagadores personalizados
  • Samplers personalizados
  • Adición de procesadores de intervalos, registros o lectores de métricas adicionales

Cohesión con Azure Functions

Para proporcionar funcionalidades de seguimiento distribuido para las aplicaciones de Python que llaman a otras aplicaciones de Python dentro de una función de Azure, se proporcionó el paquete opencensus-extension-azure-functions para permitir un grafo distribuido conectado.

Actualmente, las soluciones de OpenTelemetry para Azure Monitor no admiten este escenario. Como solución alternativa, puede propagar manualmente el contexto de seguimiento en la aplicación de Azure Functions, como se muestra en el ejemplo siguiente.

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)

Extensiones y exportadores

El SDK de OpenCensus ofrece maneras de recopilar y exportar datos de telemetría a través de integraciones y exportadores de OpenCensus, respectivamente. En OpenTelemetry, las integraciones ahora se conocen como instrumentaciones, mientras que los exportadores se han mantenido con la misma terminología. Las instrumentaciones y exportadores de Python de OpenTelemetry son un superconjunto de lo que se proporcionó en OpenCensus, por lo que en términos de cobertura y funcionalidad de biblioteca, las bibliotecas de OpenTelemetry son una actualización directa. En cuanto a la distribución de OpenTelemetry de Azure Monitor, viene con algunas de las populares instrumentaciones de Python de OpenTelemetry de fábrica, por lo que no es necesario ningún código adicional. Microsoft admite totalmente estas instrumentaciones.

En cuanto a las demás instrumentaciones de Python de OpenTelemetry que no se incluyen en esta lista, los usuarios todavía pueden instrumentar manualmente con ellos. Sin embargo, es importante tener en cuenta que la estabilidad y el comportamiento no están garantizados ni admitidos en esos casos. Por lo tanto, úselos a su propia discreción.

Si quiere sugerirnos una biblioteca de instrumentación de la comunidad para incluirla en nuestra distribución, publique o vote una idea en nuestra comunidad de comentarios. En el caso de los exportadores, la distribución openTelemetry de Azure Monitor viene incluida con el exportador openTelemetry de Azure Monitor. Si también desea usar otros exportadores, puede usarlos con la distribución, como en este ejemplo.

TelemetryProcessors

Los procesadores de telemetría de Python de OpenCensus son un mecanismo eficaz en el que los usuarios pueden modificar su telemetría antes de enviarlos al exportador. No hay ningún concepto de TelemetryProcessors en el mundo de OpenTelemetry, pero hay API y clases que puede usar para replicar el mismo comportamiento.

Establecer el nombre del rol en la nube y la instancia del rol en la nube

Siga las instrucciones que se indican aquí para establecer el nombre del rol en la nube y la instancia de rol en la nube para la telemetría. La distribución de Azure Monitor de OpenTelemetry captura automáticamente los valores de las variables de entorno y rellena los campos respectivos.

Modificación de intervalos con SpanProcessors

Próximamente.

Modificación de métricas con vistas

Próximamente.

Contadores de rendimiento

El exportador de Azure Monitor de Python de OpenCensus recopiló automáticamente las métricas relacionadas con el sistema y el rendimiento denominadas contadores de rendimiento. Estas métricas aparecen en la performanceCounters instancia de Application Insights. En OpenTelemetry, ya no se envían estas métricas explícitamente a performanceCounters. Las métricas relacionadas con las solicitudes entrantes o salientes se pueden encontrar en métricas estándar. Si desea que OpenTelemetry realice la recopilación automática de métricas relacionadas con el sistema, puede usar la instrumentación experimental de métricas del sistema, aportada por la comunidad de Python de OpenTelemetry. Este paquete es experimental y no es compatible oficialmente con Microsoft.

Soporte técnico

Para revisar los pasos de solución de problemas, las opciones de soporte técnico o para proporcionar comentarios sobre OpenTelemetry, consulte solución de problemas, soporte técnico y comentarios de Azure Monitor Application Insights.