InvergeDocs
Telescope

OpenTelemetry (any language)

Point any OpenTelemetry SDK — Go, Java / Spring, Ruby / Rails, Rust, Elixir, .NET, Node, Python — at Telescope over OTLP/HTTP JSON.

Telescope accepts OTLP/HTTP traces in JSON encoding. Anything with an OpenTelemetry SDK can send journeys, and they join traces recorded by the Nexus SDKs through the shared W3C trace context.

Configure the exporter

OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://services.inverge.net/partner/telescope/otlp/v1/traces
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/json
OTEL_EXPORTER_OTLP_TRACES_HEADERS=x-api-key=nxs_live_xxx
OTEL_SERVICE_NAME=billing-service

JSON only

The endpoint accepts http/json, not protobuf (http/protobuf) or gRPC. Set the protocol explicitly — many SDKs default to protobuf.

How spans become journeys

All spans of one trace from one service form one batch. A SERVER or CONSUMER span — or a span with no parent in that service — is its root.

SpanBecomes
SERVER with http.request.methodrequest (method, route, URL, status, client IP, user agent, captured headers)
CLIENT with http.request.methodhttp (outgoing call)
Any span with db.system (db.query.text / db.statement)query — or redis when the system is Redis
PRODUCER / CONSUMER with messaging.systemjob (dispatched / processed / failed); a consumer is a root
Event named exceptionexception (type, message, stack) — filed in Errors
Anything elsespan

Both the current and the older semantic-convention attribute names are read (http.request.method / http.method, db.query.text / db.statement, …).

Exporters usually ship child spans before their parent. That's handled: when the root arrives, Nexus re-analyses the children already stored, so N+1 and duplicate detection cover the whole batch.

SDKs that only speak protobuf

Some exporters (Go's otlptracehttp, for example) only send protobuf. Run them through an OpenTelemetry Collector, whose otlphttp exporter can re-encode as JSON:

otel-collector.yaml
receivers:
  otlp:
    protocols: { grpc: {}, http: {} }
exporters:
  otlphttp/nexus:
    traces_endpoint: https://services.inverge.net/partner/telescope/otlp/v1/traces
    encoding: json
    headers: { x-api-key: ${env:NEXUS_API_KEY} }
service:
  pipelines:
    traces: { receivers: [otlp], exporters: [otlphttp/nexus] }

On this page