Distributed tracing records the path of a request as it travels through a distributed application. This is especially useful for microservice, event-driven, and serverless architectures, where one user action can cross many services, processes, hosts, and infrastructure components.
A trace represents the end-to-end request. It contains one or more spans, where each span records a timed unit of work such as an HTTP request, RPC call, database query, or message-processing operation. A root span represents the entry point, and child spans represent downstream work. Shared trace identifiers and parent-span identifiers connect the spans into a call tree.
Tracing helps answer questions that isolated logs and metrics cannot answer on their own:
- Which services handled this request?
- Where was time spent?
- Which operation introduced an error or delay?
- How did a downstream dependency affect the request?
- Are failures concentrated in a service, operation, resource, or deployment?
OpenTelemetry provides common APIs, SDKs, semantic conventions, and the OTLP wire protocol. Manually instrumented applications send OTLP spans to the OpsRamp trace proxy, optionally through an upstream OpenTelemetry Collector.
Each span can include operation timing, service and resource identity, parent context, attributes, timestamped events, and status. OpsRamp uses this information to reconstruct complete traces, search spans, calculate service and operation insights, and visualize dependencies.