Uptrace: open source APM

Uptrace is an open source APM tool that supports distributed tracing, metrics, and logs. You can use it to monitor applications and set up automatic alerts to receive notifications via email, Slack, Telegram, and more.

Open Source APM

Open Source

Uptrace is a APM that supports OpenTelemetry tracingopen in new window, metricsopen in new window, and logsopen in new window. You can use it to monitor applications and set up alerts to receive notifications via email, Slack, Telegram, and more.

Uptrace is licensed under the AGPL license, which is the same license used by Grafana. It collects and analyzes data from various sources, such as servers, databases, cloud providers, monitoring tools, and custom applications.

Uptrace provides a unified view of the entire technology stack, enabling you to monitor the performance, availability, and health of your systems in real time.

Uptrace allows to monitor your whole application stack on a compact and informative dashboard. You get a quick overview for all your services, hosts, and systems.

Overview dashboard

You can also analyze application performance with a fast and intuitive query language. You have the full power of SQL at your disposal to get deep insights from your data.

Faceted filters

Fill the gaps left by tracing with modern metrics. Uptrace comes with pre-built dashboards for popular instrumentations and the ability to use Promql-like expressions to visualize metrics.

Metrics

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 has built-in alerting capabilities and can send notifications via email, Slack, Telegram, and more.

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

Why Uptrace?

  • Single UI for traces, metrics, and logs.
  • SQL-like query language to aggregate spans.
  • Promql-like language to aggregate metrics.
  • Built-in alerts with notifications via Email, Slack, WebHook, and AlertManager.
  • Pre-built metrics dashboards.
  • Multiple users/projects via YAML config.
  • Single sign-on (SSO): Keycloak, Cloudflare, Google Cloud, and others.
  • Ingestion using OpenTelemetry, Vector, FluentBit, CloudWatch, and more.
  • Efficient processing: more than 10K spans / second on a single core.
  • Excellent on-disk compression: 1KB span can be compressed down to ~40 bytes.

Why ClickHouse?

ClickHouse excels at real-time analysis, making it ideal for APM systems that require immediate insight into application performance metrics.

ClickHouse is highly efficient at compressing data, making it an ideal choice for storing large volumes of trace data that can grow rapidly. This results in significant cost savings for storage.

ClickHouse is an open source database, which means there are no licensing costs. Its efficient storage and query capabilities make it a cost-effective storage solution for APM tools.

Why PostgreSQL?

PostgreSQL is a full-featured RDBMS with strong support for ACID (Atomicity, Consistency, Isolation, Durability) transactions. When used used unique indexes, transactions ensure data integrity by enforcing uniqueness constraints on specified columns within a table.

Since ClickHouse does not support transactions and unique indexes, Uptrace uses a PostgreSQL database to store metadata such as projects, users, alerts, and notifications.

The PostgreSQL database used by Uptrace is quite small and typically takes up only a few megabytes of disk space. So you don't have to worry about its performance or scalability.

Why not ...?

There are many distributed tracing toolsopen in new window available on the market and each of them offers varying features, integrations, and pricing models.

The choice of an OpenTelemetry backendopen in new window may depend on specific requirements, technology stack, and preferences of the organization or individual, but here are some open source APM projects that are both interesting and inspiring.

FeatureUptraceSkyWalkingSignozJaegerGrafana
Traces✔️✔️✔️✔️✔️
Metrics✔️✔️✔️✔️
Logs✔️✔️✔️✔️
OpenTelemetry✔️Adapter✔️✔️Adapter
StorageClickhouseBanyanDBClickHouseClickHouseCustom
Pluggable storage✔️✔️✔️
S3 storage✔️✔️
Alerting✔️✔️AlertManager✔️
Cloud version✔️✔️✔️
LicenseAGPLApacheApache+EEApacheAGPL
Demolinkopen in new windowlinkopen in new windowlinkopen in new window

SkyWalking

SkyWalkingopen in new window is an open source distributed tracing system designed to monitor and diagnose complex microservices-based architectures. It is an Apache project.

SkyWalking is often used in cloud-native and microservices-based architectures to gain visibility into application performance and troubleshoot issues.

The SkyWalking storage is pluggable so you can use BanyanDB or ElasticSearch to store traces, metrics, and logs. Uptrace uses ClickHouse database which is more mature than BanyanDB and more efficient than ElasticSearch.

SkyWalking does not directly support OpenTelemetry protocol and instead provides an OpenTelemetry adapter.

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

Signoz

Signoz is an emerging tool in the observability space that provides distributed tracing capabilities to improve monitoring and troubleshooting in microservices architectures.

  • Both projects use Go, OpenTelemetry, and ClickHouse.
  • Both projects support all 3 major observability signals: traces, metrics, and logs.
  • Uptrace uses the AGPL license. Signoz uses dual licensing: Apache 2.0 and Enterprise License.
  • Uptrace has built-in alerting capabilities, but Signoz uses AlertManager for notifications.
  • Uptrace provides span grouping and optimizes ClickHouse schema for filtering and analyzing similar spans. Signoz uses a more service-oriented DB schema design.
  • Uptrace provides preconfigured OpenTelemetry distributions, but Signoz provides instructions on how to configure OpenTelemetry SDKs.

Jaeger

Jaegeropen in new window is an open-source end-to-end distributed tracing system. It is designed to monitor and troubleshoot complex microservices-based architectures.

Jaeger is widely adopted in the cloud-native community and is used to monitor and diagnose complex microservices architectures.

Jaeger has a plugin to store data in ClickHouse, but it abstracts storage access which allows to support multiple backends at small performance cost.

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

See Jaeger vs OpenTelemetryopen in new window to learn how projects can be used together.

Grafana

Grafana is an open source analytics and visualization platform for monitoring and analyzing data from multiple sources. It provides a flexible and customizable interface for creating dashboards, charts, and graphs to display and analyze data in real time.

Grafana is primarily a visualization and analytics platform focused on displaying data from various sources. Configuring data sources, building queries, and designing complex dashboards can take time and effort to master.

Grafana was originally designed to visualize time series data, and while it can display traces and logs, it lacks some trace-specific features that dedicated tracing tools can provide.

What's next?

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

Last Updated: