added
OpenTelemetry Tracing Support
3 days ago by Anthony Diaz

Key Features
- Native OpenTelemetry (OTel) export for traces.
- Send spans directly to our OTLP/HTTP collector at: https://api.orq.ai/v2/otel.
- Works with standard OTel SDKs and exporters (Python, Node.js).
- Supports custom headers (e.g., bearer tokens) and resource attributes (e.g., service.name).
Quick Start
Environment based
# Common env vars (both Python & Node.js)
export OTEL_EXPORTER_OTLP_ENDPOINT="https://api.orq.ai/v2/otel"
# Optional: auth header if required in your org
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <ORQ_API_KEY>"
export OTEL_RESOURCE_ATTRIBUTES="service.name=my-service,service.version=1.0.0"
Python
# pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http opentelemetry-instrumentation
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
resource = Resource.create({
"service.name": "my-python-service",
"service.version": "1.0.0"
})
provider = TracerProvider(resource=resource)
trace.set_tracer_provider(provider)
exporter = OTLPSpanExporter(
endpoint="https://api.orq.ai/v2/otel",
# Optional if your setup requires auth
headers={"Authorization": "Bearer <ORQ_API_KEY>"}
)
provider.add_span_processor(BatchSpanProcessor(exporter))
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("demo-span"):
# your app logic here
pass
NodeJS
import { NodeSDK } from '@opentelemetry/sdk-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { Resource } from '@opentelemetry/resources';
const traceExporter = new OTLPTraceExporter({
url: 'https://api.orq.ai/v2/otel',
// Optional if your setup requires auth
headers: { Authorization: 'Bearer <ORQ_API_KEY>' },
});
const sdk = new NodeSDK({
resource: new Resource({
'service.name': 'my-node-service',
'service.version': '1.0.0',
}),
traceExporter,
});
sdk.start();
// Example span
import { context, trace } from '@opentelemetry/api';
const tracer = trace.getTracer('example');
const span = tracer.startSpan('demo-span');
try {
// your app logic here
} finally {
span.end();
}