Zipkin 2.17
Zipkin 2.17 publishes a "master" Docker tag, adds a traceMany endpoint, and improves startup performance.
Before we get into these features, let's talk about logo :) You'll notice our website has been sporting a new logo designed by LINE recently. Thanks to @making, you can see this when booting zipkin, too!
Publishing a "master" docker tag
We've been doing docker images since 2015. One thing missing for a long time was test images. For example, if you wanted to verify Zipkin before a release in Docker, you'd have to build the image yourself. @anuraaga sorted that out by setting up automatic publication of the master branch as the tag "master" in docker.
Ex. "latest" is the last release, "master" is the last commit.
$ docker pull openzipkin/zipkin:master
Probably more interesting to some is how he used this. With significant advice from @bsideup, @anuraaga setup integrated benchmarks of integrated zipkin servers. This allows soak tests without the usual environment volatility.
A keen eye will notice that these benchmarks literally run our sleuth example! This is really amazing work, so let's all thank Rag!
Api for getting many traces by ID
While the primary consumer of our api is the Lens UI, we know there are multiple 3rd party consumers. Many of these prefer external discovery of trace IDs and just need an api to grab the corresponding json.
Here are some use cases:
- out-of-band aggregations, such histograms with attached representative IDs
- trace comparison views
- decoupled indexing and retrieval (Ex lucene over a blob store)
- 3rd party apis that offer stable pagination (via a cursor over trace IDs).
of the api was made to me like other endpoints in the same namespace, and be easy to discover. We have a rationale document if you are interested in details.
Thanks much for the code work from @zeagord and @llinder and api design review by @jcarres-mdsol @jeqo @devinsba and @jcchavezs!
Quicker startup
After hearing some complaints, we did a lot of digging in the last release to find ways to reduce startup time. For example, we found some folks were experiencing nearly 10 second delays booting up an instance of Zipkin, eventhough many were in the 3.5s range. Among many things, we turned off configuration not in use and deleted some dependencies we didn't need. Next, we directly implemented our supported admin endpoints with Armeria. Here are those endpoints in case you didn't read our README
- /health - Returns 200 status if OK
- /info - Provides the version of the running instance
- /metrics - Includes collector metrics broken down by transport type
- /prometheus - Prometheus scrape endpoint
Off the bat, Zipkin 2.17 should boot faster. For example, one "laptop test" went from "best of 5" 3.4s down to under 3s with no reduction in functionality. While docker containers always start slower than java directly, you should see similar reductions in startup time there, too.
For those still unsatisfied, please upvote our slim distribution which can put things in the 2s range with the same hardware, for those who are only using in-memory storage or Elasticsearch.
While we know bootstrap time is unimportant to most sites, it is very important emotionally to some. We'd like to make things as fun as possible, and hope this sort of effort keeps things snappy for you!