# Introduction to distributed tracing

# What is Uptrace?

Uptraceopen in new window is a tracing system that monitors performance, errors, and logs. It collects traces, aggregates and processes them to help you pinpoint failures and find performance bottlenecks.

# Basic terms

To get started with tracing you need to understand the following terms:

  • Span is an operation (unit of work) in a trace. For example, a database query or an RPC call.
  • Trace is a tree of spans that shows the path that a request makes through an app.
  • Tracer creates spans. You only need one tracer in your app or library.
  • Event is an entity within a span. Think of it as a span that does not have end time (and thus duration).
  • Attribute is a key-value pair that carries some information. For example, host.name = 'localhost'.

# Uptrace client

Uptrace client is an OpenTelemery distribution configured to export traces to Uptrace. Uptrace client offers the following advantages over standard OpenTelemetry protocol (OTLP):

  • It is configured to work with Uptrace.
  • It uses MessagePack and HTTP 2 which offers the same performance as gRPC but is more lightweight.
  • It uses more efficient ZSTD compression.

But Uptrace also supports OTLP over gRPC or HTTP in case you are already using OTLP or OpenTelemetry Collector.