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.
APM Open Source
Uptrace is an open source APM that supports OpenTelemetry tracing, metrics, and logs. You can use it to monitor applications and set up alerts to receive notifications via email, Slack, Telegram, and more.
Uptrace collects and analyzes data from a variety of sources, including servers, databases, cloud providers, monitoring tools, and custom applications. It 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.
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.
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.
What is OpenTelemetry?
Uptrace uses OpenTelemetry 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.
- 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 not ...?
There are many distributed tracing tools available on the market and each of them offers varying features, integrations, and pricing models.
The choice of an OpenTelemetry backend 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.
SkyWalking 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.
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 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 OpenTelemetry to learn how projects can be used together.
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.
All Uptrace code is open and battle-tested in production by thousands of happy users:
Next, get started with Uptrace by downloading the Uptrace binary or creating a cloud account.