Saptiva-Agents tiene soporte nativo para Open Telemetry. Esto te permite recolectar datos de telemetría de tu aplicación y enviarlos a un backend de telemetría de tu elección.
Estos son los componentes que están actualmente instrumentados:
Para instrumentar tu aplicación, necesitarás un SDK y un exportador. Puede que ya tengas estos si tu aplicación ya está instrumentada con Open Telemetry.
Instrumentación Limpia
Si no tienes configurado Open Telemetry en tu aplicación, puedes seguir estos pasos para instrumentarla.
pip install opentelemetry-sdk
Dependiendo de tu colector de Open Telemetry, puedes usar gRPC o HTTP para exportar tu telemetría.
# Elige uno de los siguientes
pip install opentelemetry-exporter-otlp-proto-http
pip install opentelemetry-exporter-otlp-proto-grpc
A continuación, necesitamos obtener un tracer provider:
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
def configure_oltp_tracing(endpoint: str = None) -> trace.TracerProvider:
# Configurar el rastreo (Tracing)
tracer_provider = TracerProvider(resource=Resource({"service.name": "my-service"}))
processor = BatchSpanProcessor(OTLPSpanExporter())
tracer_provider.add_span_processor(processor)
trace.set_tracer_provider(tracer_provider)
return tracer_provider
Ahora puedes enviar el tracer_provider al crear tu runtime:
# para runtime de un solo hilo
single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider)
# o para runtime de trabajador
worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider)
¡Y eso es todo! Tu aplicación ahora está instrumentada con Open Telemetry. Puedes ver los datos de telemetría en tu backend de telemetría.
Instrumentación Existente
Si ya tienes Open Telemetry configurado en tu aplicación, puedes pasar el tracer_provider al runtime cuando lo crees:
from opentelemetry import trace
# Obtener el tracer provider de tu aplicación
tracer_provider = trace.get_tracer_provider()
# para runtime de un solo hilo
single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider)
# o para runtime de trabajador
worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider)