Uptrace Open Source APM tool

Uptrace is an open-source APM tool that supports distributed tracingopen in new window, metricsopen in new window, and logs. Uptrace collects traces, aggregates and processes them to help you pinpoint failures and find performance bottlenecks.

What is OpenTelemetry?

Uptrace uses OpenTelemetryopen in new window to instrument code and collect traces, metrics, and logs. OpenTelemetry specifies how to collect and export telemetry data. With OpenTelemetry, you can instrument your application once and then add or change vendors without changing the instrumentation.

OpenTelemetry is available for most programming languages and provides interoperability across different languages and environments.

How Uptrace works?

Uptrace uses OpenTelemetry protocol to receive telemetry data directly from your application or from OpenTelemetry Collector.

Uptrace efficiently stores the data in ClickHouse database which, when compared with Elasticsearch or Cassandra, allows to significantly reduce storage requirements and improve query performance.

Uptrace comes with Vue-based UI that helps you analyze application performance using a fast and intuitive query language.

Basic terms

  • Spanopen in new window is an operation (unit of work) in a trace, for example, an HTTP endpoint or a database query.
  • Trace is a tree of spans that shows the path that a request makes through an app. Root span is the first span in a trace.
  • You create spans with a tracer. Usually, there is a single tracer for an app or a library.
  • Eventopen in new window is an entity within a span, for example, a read message event or an error event. You can also think of events as spans without end time (and thus duration).
  • Attributeopen in new window is a key-value pair on a span that carries some information about the operation. For example, host.name: localhost or http.request_content_length: 10000.
  • OpenTelemetryopen in new window is a vendor-neutral API for distributed traces and metrics. Uptrace uses OpenTelemetry to collect telemetry data.
  • Uptrace client is an OpenTelemery distribution configured to export data to Uptrace.

Why not ...?

See Open source distributed tracing tools for the detailed comparison.

Zipkin

Zipkinopen in new window does not support ClickHouse and requires OpenTelemetry -> Zipkin transformation to convert data between different protocols.

Zipkin's UI is minimalistic and can't be directly compared with Uptrace.

Jaeger

Jaegeropen in new window requires a plugin to work with ClickHouse. Because Jaeger supports multiple storages, the ClickHouse database schema and the plugin communication protocol can be considered sub-optimal.

Jaeger does not support charts or percentiles and has limited filtering capabilities.

SkyWalking

SkyWalkingopen in new window does not support ClickHouse and instead uses ElasticSearch/OpenSearch. SkyWalking also does not directly support OpenTelemetry protocol.

SkyWalking has an official demoopen in new window (skywalking:skywalking) so you can easily compare it with Uptraceopen in new window yourself.

What's next?

Next, get started with Uptrace by downloading Uptrace or creating a cloud account.