Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo solucionar problemas de OpenTelemetry en Python.
Lista de comprobación de solución de problemas
Habilitar registro de diagnóstico
Microsoft Azure Monitor Exporter usa la Biblioteca de registro estándar de Python para sus registros internos. A la API de OpenTelemetry y a los registros de Azure Monitor Exporter se les asigna un nivel de gravedad WARNING
o ERROR
para las actividades irregulares. El nivel de gravedad INFO
se usa con relación a las actividades normales o correctas.
De manera predeterminada, la biblioteca de registro de Python establece el nivel de gravedad en WARNING
. Por lo tanto, debe cambiar el nivel de gravedad para ver los registros en esta configuración de gravedad. En el código de ejemplo siguiente, se muestra cómo generar registros de todos los niveles de gravedad en la consola y en un archivo:
...
import logging
logging.basicConfig(format = "%(asctime)s:%(levelname)s:%(message)s", level = logging.DEBUG)
logger = logging.getLogger(__name__)
file = logging.FileHandler("example.log")
stream = logging.StreamHandler()
logger.addHandler(file)
logger.addHandler(stream)
...
Prueba de la conectividad entre el host de la aplicación y el servicio de ingesta
Tanto los SDK como los agentes de Application Insights envían telemetría para ingerirse como llamadas de REST en los puntos de conexión de ingesta. Para probar la conectividad entre el servidor web o el equipo host de la aplicación y los puntos de conexión del servicio de ingesta, use comandos cURL o solicitudes REST sin procesar de PowerShell. Para obtener más información, consulte Solución de problemas de telemetría de aplicaciones que faltan en Application Insights de Azure Monitor.
Evitar telemetría duplicada
La telemetría duplicada suele deberse a que se crean varias instancias de procesadores o exportadores. Asegúrese de ejecutar solo un exportador y procesador a la vez para cada pilar de telemetría (registros, métricas y seguimiento distribuido).
En las secciones siguientes, se describen escenarios que pueden generar telemetría duplicada.
Registros de seguimiento duplicados en Azure Functions
Si ve un par de entradas para cada registro de seguimiento en Application Insights, probablemente habilitó los siguientes tipos de instrumentación de registro:
- La instrumentación de registro nativa en Azure Functions
- La instrumentación de registro
azure-monitor-opentelemetry
dentro de la distribución
Para evitar la duplicación, puede deshabilitar el registro de la distribución, pero dejar habilitada la instrumentación de registro nativa en Azure Functions. Para ello, establezca la variable de entorno OTEL_LOGS_EXPORTER
en None
.
Telemetría duplicada en "Always On" de Azure Functions
Si la configuración Always On de Azure Functions está establecida en Activada, Azure Functions mantiene algunos procesos en ejecución en segundo plano una vez completada cada ejecución. Por ejemplo, supongamos que tiene una función de temporizador de cinco minutos que llama a configure_azure_monitor
cada vez. Después de 20 minutos, es posible que tenga cuatro exportadores de métricas que se ejecutan al mismo tiempo. Esta situación podría ser el origen de la telemetría de métricas duplicadas.
En esta situación, establezca el valor Always On en Desactivadao intente apagar manualmente los proveedores entre cada llamada configure_azure_monitor
. Para apagar cada proveedor, ejecute llamadas de apagado para cada medidor, seguimiento y proveedor de registrador actuales, como se muestra en el código siguiente:
get_meter_provider().shutdown()
get_tracer_provider().shutdown()
get_logger_provider().shutdown()
Azure Workbooks y Jupyter Notebooks
Azure Workbooks y Jupyter Notebooks pueden mantener los procesos de los exportadores en ejecución en segundo plano. Para evitar la telemetría duplicada, borre la memoria caché antes de realizar más llamadas a configure_azure_monitor
.
Falta telemetría de las solicitudes de aplicaciones FastAPI o Flask
Si faltan datos de la tabla Requests pero no otras categorías de datos, es posible que el marco HTTP no se instrumente correctamente. Este problema puede producirse en las aplicaciones fastAPI y Flask mediante la biblioteca cliente de Distribución de OpenTelemetry de Azure Monitor para Python si no estructura correctamente las import
declaraciones. Es posible que importe fastapi.FastAPI
o flask.Flask
respectivamente, antes de llamar a la configure_azure_monitor
función para instrumentar las bibliotecas FastAPI y Flask. Por ejemplo, el código siguiente no instrumenta correctamente las aplicaciones FastAPI y Flask:
# FastAPI
from azure.monitor.opentelemetry import configure_azure_monitor
from fastapi import FastAPI
configure_azure_monitor()
app = FastAPI()
# Flask
from azure.monitor.opentelemetry import configure_azure_monitor
from flask import Flask
configure_azure_monitor()
app = Flask(__name__)
En su lugar, se recomienda importar el módulo fastapi
o flask
en su conjunto y, después, llamar a configure_azure_monitor
para configurar OpenTelemetry para usar Azure Monitor antes de acceder a fastapi.FastAPI
o flask.Flask
:
# FastAPI
from azure.monitor.opentelemetry import configure_azure_monitor
import fastapi
configure_azure_monitor()
app = fastapi.FastAPI(__name__)
# Flask
from azure.monitor.opentelemetry import configure_azure_monitor
import flask
configure_azure_monitor()
app = flask.Flask(__name__)
Como alternativa, puede llamar a configure_azure_monitor
antes de importar fastapi.FastAPI
o flask.Flask
:
# FastAPI
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
from fastapi import FastAPI
app = FastAPI(__name__)
# Flask
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
from flask import Flask
app = Flask(__name__)
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.