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
- El blog "Cómo migrar a OpenTelemetry" de OpenCensus no es aplicable a los usuarios de Azure Monitor.
- Microsoft no recomienda ni admite la corrección de compatibilidad con OpenTelemetry OpenCensus .
- A continuación se describe el único plan de migración para los clientes de Azure Monitor.
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.
- Documentación de Python de OpenTelemetry
- Documentación de distribución de Azure Monitor sobre la configuración y la telemetría
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.