Zipkin 2.13.0
Zipkin 2.13 includes several new features, notably a gRPC collection endpoint and remote service name indexing. Lens, our new UI, is fast approaching feature parity, which means it will soon be default. End users should note this is the last release to support Elasticsearch v2.x and Kafka v0.8.x. Finally, this our first Apache Incubating release, and we are thankful to the community's support and patience towards this.
Lens UI Improvements
Led by @tacigar, Lens has been fast improving. Let's look at a couple recent improvements: Given a trace ID or json, the page will load what you want.
Right now, you can opt-in to Lens by clicking a button. The next step is when Lens is default and finally when the classic UI is deleted. Follow the appropriate projects for status on this.
gRPC Collection endpoint
Due to popular demand, we now publish a gRPC endpoint /zipkin.proto3.SpanService/Report
which accepts the same protocol buffers ListOfSpans message as our POST /api/v2/spans
endpoint. This listens on the same port as normal http traffic when COLLECTOR_GRPC_ENABLED=true
. We will enable this by default after the feature gains more experience.
We chose to publish a unary gRPC endpoint first, as that is most portable with limited clients such as grpc-web. Our interop tests use the popular Android and Java client Square Wire. Special thanks to @ewhauser for leading this effort and @anuraaga who championed much of the work in Armeria.
Remote Service Name indexing
One rather important change in v2.13 is remote service name indexing. This means that the UI no longer confuses local and remote service name in the same drop-down. The impact is that some sites will have much shorter and more relevant drop-downs, and more efficient indexing. Here are some screen shots from Lens and Classic UIs:
Schema impact
We have tests to ensure the server can be upgraded ahead of schema change. Also, most storage types have the ability to automatically upgrade the schema. Here are relevant info if you are manually upgrading:
STORAGE_TYPE=cassandra
If you set CASSANDRA_ENSURE_SCHEMA=false
, you are opting out of automatic schema management. This means you need to execute these CQL commands manually to update your keyspace
STORAGE_TYPE=cassandra3
If you set CASSANDRA_ENSURE_SCHEMA=false
, you are opting out of automatic schema management. This means you need to execute these CQL commands manually to update your keyspace
STORAGE_TYPE=elasticsearch
No index changes were needed
STORAGE_TYPE=mysql
Logs include the following message until instructions are followed:
zipkin_spans.remote_service_name doesn't exist, so queries for remote service names will return empty.
Execute: ALTER TABLE zipkin_spans ADD `remote_service_name` VARCHAR(255);
ALTER TABLE zipkin_spans ADD INDEX `remote_service_name`;
Dependency group ID change
For those using Maven to download, note that the group ID for libraries changed from "io.zipkin.zipkin2" to "org.apache.zipkin.zipkin2". Our server components group ID changed from "io.zipkin.java" to "org.apache.zipkin"
This is the last version to support Elasticsearch 2.x
Elastic's current support policy is latest major version (currently 7) and last minor (currently 6.7). This limits our ability to support you. For example, Elasticsearch's hadoop library is currently broken for versions 2.x and 5.x making our dependencies job unable to work on that range and also work on version 7.x.
Our next release will support Elasticsearch 7.x, but we have to drop Elasticsearch 2.x support. Elasticsearch 5.x will be best efforts. We advise users to be current with Elastic's supported version policy, to avoid being unable to upgrade Zipkin.
This is the last version to support Kafka 0.8x
This is the last release of Zipkin to support connecting to a Kafka 0.8 broker (last release almost 4 years ago). Notably, this means those using KAFKA_ZOOKEEPER
to configure their broker need to switch to KAFKA_BOOTSTRAP_SERVERS
instead.
Other notable updates
- Zipkin Server is now using the latest Spring boot 2.1.4