Observability & Operations

OpenTelemetry Backends

Connect PURISTA traces and metrics to your preferred observability platform

PURISTA emits OpenTelemetry traces, metrics, and logs automatically for every command, subscription, stream, and queue job. You choose where that data goes by wiring a SpanProcessor at startup — no changes to business logic, no instrumentation required.

How it works in PURISTA

PURISTA instruments traces by accepting a SpanProcessor at construction time. You create a SpanProcessor wrapping your chosen exporter and pass it directly to the event bridge and each service — no global tracer registration required:

import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node'
import { AmqpBridge } from '@purista/amqpbridge'

const spanProcessor = new SimpleSpanProcessor(
  new OTLPTraceExporter({ url: 'http://localhost:4318/v1/traces' })
)

const eventBridge = new AmqpBridge({ spanProcessor })
const myService = await myV1Service.getInstance(eventBridge, { spanProcessor })

If you also want auto-instrumentation for Node.js built-ins (HTTP, fetch, database drivers), initialize NodeSDK before starting PURISTA:

import { NodeSDK } from '@opentelemetry/sdk-node'
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'

const sdk = new NodeSDK({
  traceExporter: new OTLPTraceExporter({ url: 'http://localhost:4318/v1/traces' }),
})
sdk.start()
// Then start your PURISTA event bridge and services

Both approaches are compatible — use NodeSDK for broad auto-instrumentation and the SpanProcessor injection for PURISTA-specific span control.

Supported backends

Choose the backend that fits your stack. Every one uses the same SpanProcessor pattern above — only the exporter changes.

Backend Protocol Self-hosted Managed
CloudGrid OTLP HTTP / gRPC
Jaeger OTLP HTTP
Zipkin Zipkin wire
Grafana Tempo OTLP HTTP Grafana Cloud
SigNoz OTLP HTTP SigNoz Cloud
Uptrace OTLP HTTP Uptrace Cloud
Teletrace OTLP HTTP
AWS X-Ray OTLP / ADOT Via ADOT AWS managed
Azure Monitor OTLP Azure managed
Google Cloud Trace Cloud Trace exporter GCP managed

For PURISTA AI Harness systems, CloudGrid AI Evaluation is the product layer around the harness eval helpers: datasets, experiment runs, per-item score records, comparisons, optimization candidates, and trace-backed evidence live beside the telemetry they depend on.

Choosing a backend

flowchart TD
    Q["Where do you run?"] --> A["Local dev / open source"]
    Q --> B["Already using Grafana"]
    Q --> C["AWS infrastructure"]
    Q --> D["Azure infrastructure"]
    Q --> E["GCP infrastructure"]
    A --> A1["Jaeger or SigNoz<br/>— single Docker container"]
    B --> B1["Grafana Tempo<br/>— Loki + trace correlation"]
    C --> C1["AWS X-Ray<br/>— via ADOT Collector"]
    D --> D1["Azure Monitor<br/>— Application Insights"]
    E --> E1["Google Cloud Trace<br/>— native GCP exporter"]

Graceful shutdown

Always flush spans before your process exits:

gracefulShutdown(logger, [
  eventBridge,
  myService,
  {
    name: 'OTSpanProcessor',
    destroy: () => spanProcessor.shutdown(),
  },
])

Next steps

Pick a backend from the list in the left sidebar, or start with Jaeger for the fastest local setup.

Related

Read Next
Getting Started

from Learning Paths & Tutorials