Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. spandex

spandex

MITElixir3.2.0

A platform-agnostic tracing library for Elixir applications, enabling granular runtime monitoring and distributed tracing across microservices.

GitHubGitHub
346 stars53 forks0 contributors

What is spandex?

Spandex is a tracing library for Elixir applications that enables detailed monitoring of system runtime and distributed request flows across microservices. It captures granular span data to help developers diagnose performance issues and understand request lifecycles. The library is designed to be platform-agnostic, initially supporting Datadog but built to integrate with other trace viewers like Open Zipkin.

Target Audience

Elixir developers building microservices or distributed systems who need observability into request performance and system behavior. It's particularly useful for teams using Phoenix web frameworks and Ecto for database operations.

Value Proposition

Developers choose Spandex for its platform-agnostic design, allowing flexibility in trace visualization tools, and its deep integration with the Elixir ecosystem through Phoenix plugs and decorator-based tracing. Its focus on distributed tracing across asynchronous processes sets it apart for microservices architectures.

Overview

A platform agnostic tracing library

Use Cases

Best For

  • Adding distributed tracing to Elixir-based microservices
  • Monitoring request performance in Phoenix web applications
  • Integrating tracing with Ecto database operations
  • Visualizing cross-service request flows in distributed systems
  • Implementing decorator-based function-level tracing in Elixir
  • Collecting granular runtime metrics for performance optimization

Not Ideal For

  • Projects requiring immediate support for trace viewers other than Datadog, such as Jaeger or OpenTelemetry, without custom adapter development.
  • Highly concurrent, multi-process systems needing atomic trace management across processes, due to the non-atomic strategy limitations.
  • Teams seeking a fully automated, out-of-the-box tracing solution with zero configuration and no manual instrumentation.

Pros & Cons

Pros

Platform-Agnostic Design

Built to support multiple trace viewers, starting with Datadog and planned for Open Zipkin and Stackdriver, allowing flexibility in visualization tools as stated in the README's philosophy.

Deep Elixir Integration

Offers seamless Phoenix integration via plugs and community extensions like spandex_ecto and spandex_phoenix for specialized database and web tracing, reducing setup effort.

Flexible Tracing Methods

Supports both manual span management with macros and decorator-based annotations, enabling granular control or reduced boilerplate, as illustrated in the General Usage section.

Distributed Tracing Capabilities

Enables tracking requests across services and asynchronous processes with examples on continuing traces in new processes, crucial for microservices architectures.

Cons

Limited Adapter Support

Currently only supports Datadog as an adapter; support for other platforms like Open Zipkin is planned but not yet available, restricting immediate tool choice.

Non-Atomic Strategy

The storage strategy is not atomic and unsafe for concurrent use across processes, potentially leading to trace inconsistencies in highly concurrent applications, as admitted in the Strategies section.

Active Development Instability

Undergoing active development with breaking changes, such as the 2.0 and 3.0 releases requiring upgrade guides, posing risks for production stability.

Complex Decorator Setup

Decorator support relies on an optional dependency that can conflict with other libraries, requiring explicit management and adding setup complexity, as noted in the Decorators section.

Open Source Alternative To

spandex is an open-source alternative to the following products:

Datadog APM
Datadog APM

Datadog APM (Application Performance Monitoring) is a component of Datadog that provides distributed tracing and performance monitoring for applications.

Frequently Asked Questions

Quick Stats

Stars346
Forks53
Contributors0
Open Issues14
Last commit2 years ago
CreatedSince 2017

Tags

#hacktoberfest#platform-agnostic#elixir#apm#observability#phoenix-framework#distributed-tracing#monitoring#microservices#performance

Built With

E
Elixir

Included in

Elixir13.1k
Auto-fetched 16 hours ago

Related Projects

wobserverwobserver

Web based metrics, monitoring, and observer

Stars926
Forks82
Last commit6 years ago
telemetrytelemetry

Dynamic dispatching library for metrics and instrumentations.

Stars913
Forks74
Last commit2 months ago
elixometerelixometer

A light Elixir wrapper around exometer.

Stars825
Forks57
Last commit3 years ago
prom_exprom_ex

An Elixir Prometheus metrics collection library built on top of Telemetry with accompanying Grafana dashboards

Stars702
Forks132
Last commit1 month ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub