Introducing Java SpecialAgent: Start Tracing without Writing Any Code
by Ted Young
We’re excited to announce Java SpecialAgent!
It’s an extensible OSS Java agent for OpenTracing that enables end-to-end tracing without having to write any code.
With only a single command-line entry for installation, SpecialAgent seamlessly connects to OpenTracing-compliant tracers — such as the Jaeger and Lightstep tracers — allowing you to immediately start observing and propagating distributed traces.
SpecialAgent was built by the OpenTracing community with contributions from the Lightstep team. It is architected for compatibility, resiliency, and stability (you can read more about the architecture on the OpenTracing blog, and has a number of benefits:
- Automated. By automatically installing plugins, you can achieve end-to-end tracing without having to write any code.
- Extensible. SpecialAgent loads the same instrumentation you would load by hand. Adding new instrumentation plugins to SpecialAgent is easy, and anyone can extend the SpecialAgent to include their own plugins.
- Portable. Unlike proprietary agents, SpecialAgent can send data to any tracing system that supports OpenTracing.
- Robust. Safe and production ready. SpecialAgent can install all OpenTracing Java plugins, and runs on Java versions 1.7 and up.
- Seamless. SpecialAgent is able to do both static and dynamic attach, which means you can attach the agent to already-running programs without stopping.
Distributed traces capture and propagate critical details about transactions as they cross microservices boundaries.
Once you start aggregating and analyzing groups of traces, you can answer important questions about your system — quickly and with evidence:
- Which service should we roll back?
- Which host is overloaded?
- Which customer is sending bad requests?
- Will this optimization improve performance for my service?
- What services is my service dependent on?
In order to take advantage of these insights, you first have to install tracers and plugins for every service. For large organizations, manual instrumentation can require some work.
This is where Java SpecialAgent comes into play — it makes instrumentation easy.
We’re partnering with the OSS community to build a version of SpecialAgent for all commonly used frameworks.
We’ll be announcing support for other languages and frameworks on Twitter.