Usando bibliotecas de instrumentação

When you develop an app, you might use third-party libraries and frameworks to accelerate your work. If you then instrument your app using OpenTelemetry, you might want to avoid spending additional time to manually add traces, logs, and metrics to the third-party libraries and frameworks you use.

Many libraries and frameworks already support OpenTelemetry or are supported through OpenTelemetry instrumentation, so that they can generate telemetry you can export to an observability back end.

If you are instrumenting an app or service that use third-party libraries or frameworks, follow these instructions to learn how to use natively instrumented libraries and instrumentation libraries for your dependencies.

Use natively instrumented libraries

If a library comes with OpenTelemetry support by default, you can get traces, metrics, and logs emitted from that library by adding and setting up the OpenTelemetry SDK with your app.

The library might require some additional configuration for the instrumentation. Go to the documentation for that library to learn more.

Use bibliotecas de instrumentação

Se uma biblioteca não oferece suporte nativo ao OpenTelemetry, você pode usar bibliotecas de instrumentação para gerar dados de telemetria para uma biblioteca ou framework.

Por exemplo, a biblioteca de instrumentação para HTTPX cria automaticamente trechos com base em solicitações HTTP.

Configuração

Você pode instalar cada biblioteca de instrumentação separadamente usando pip. Por exemplo:

pip install opentelemetry-instrumentation-{instrumented-library}

No exemplo anterior, {instrumented-library} é o nome da instrumentação.

Para instalar uma versão de desenvolvimento, clone ou faça um fork do repositório opentelemetry-python-contrib e execute o seguinte comando para fazer uma instalação editável:

pip install -e ./instrumentation/opentelemetry-instrumentation-{integration}

Após a instalação, você precisará inicializar a biblioteca de instrumentação. Cada biblioteca geralmente tem sua própria maneira de inicializar.

Exemplo com instrumentação HTTPX

Veja como você pode instrumentar solicitações HTTP feitas usando a biblioteca httpx.

Primeiro, instale a biblioteca de instrumentação usando pip:

pip install opentelemetry-instrumentation-httpx

Em seguida, use o instrumentador para rastrear automaticamente as solicitações de todos os clientes:

import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor

url = "https://some.url/get"
HTTPXClientInstrumentor().instrument()

with httpx.Client() as client:
     response = client.get(url)

async with httpx.AsyncClient() as client:
     response = await client.get(url)

Desativar instrumentações

Se necessário, você pode desinstrumentar clientes específicos ou todos os clientes usando o método uninstrument_client. Por exemplo:

import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor

HTTPXClientInstrumentor().instrument()
client = httpx.Client()

# Desinstrumentar um cliente específico
HTTPXClientInstrumentor.uninstrument_client(client)

# Desinstrumentar todos os clientes
HTTPXClientInstrumentor().uninstrument()

Bibliotecas de instrumentação disponíveis

Uma lista completa de bibliotecas de instrumentação produzidas pelo OpenTelemetry está disponível no repositório opentelemetry-python-contrib.

Você também pode encontrar mais instrumentações disponíveis em registro.

Próximos passos

Depois de configurar as bibliotecas de instrumentação, você pode querer adicionar sua própria instrumentação no seu código, para coletar dados de telemetria personalizados.

Você também pode querer configurar um exporter apropriado para exportar seus dados de telemetria para um ou mais backends de telemetria.

Você também pode verificar a Instrumentação sem código para Python.