Distributed Tracing Wrapper Libraries.
- Provide unified/tested set of libraries
- No need to load/maintain various
contrib
libraries
- No need to load/maintain various
- Provide high-level & simple interface over tracing standard APIs (e.g. OpenCensus)
- No need to know detail of API
- Provides simple interface
- Hide complicated object lifecycle of APIs (hide error prone things from you)
- Do not aim to provide
agent
, you need to activate/call this library explicitly- Do not prefer to use dynamic code rewriting / monkey patching to minimize risk
- To use feature of this library, please explicitly call/enable them
- Do not aim to support all libraries in the world (HTTP client library, logging library, ...)
- Focus on use case in our company.
- If you want to add library support, feel free to fork this.
See jvm/README.
Feature | Java (core) | Spring | Play (Scala) |
---|---|---|---|
Supported runtime | JRE >= 8 | ( Same as Java ) | ( Same as Java ) |
Capture incoming HTTP request | Servlet >= 3.0.1 | Spring Web | Play ?.? |
Capture & Propagate to outgoing HTTP request | Commons HTTP client >= ?.?, async-http-client | RestTemplate | ?????? (Play) |
Capture database call | p6spy support for JDBC/RDBMS | ( Same as Java ) | ( Same as Java ) |
Multi-thread | ( Custom context machanism ) | ( Same as Java ) | Future wrapper (Play) |
Log correlation | SLF4J, Log4j | ( Same as Java ) | ( Same as Java ) |
Capture method invocation | method annotation AOP | Play: ???? | |
Dependency injection | AutoConfiguration (Boot) | ???? |
Summary of each features are described below, but don't forget to see document of each language to see how to use/enable it.
With this feature, this library automatically create trace/span for each incoming requests.
With this feature:
- This library create span for each outgoing requests
- So that you can know duration/summary of outgoing requests
- This library adds
Trace ID
to outgoing HTTP requests- If destination service uses this library, we can trace request over services (-> "distributed" tracing)
With this feature, this library yield spans for each database call.
With this feature, this library wraps multi-thread (async) operations and propagate thread-bounded trace/span to threads.
With this feature, you can output Trace ID
in logs. So that you can find related logs from/to traces.
With this feature, you can capture method call of your own class.
With this feature, this library provides DI configuration so that you can get objects from DI context.