# 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
- 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.