This component leverages zipkin-reporter-java interfaces to send spans to Amazon Kinesis for collection and processing. Kinesis is an alternative to kafka that is fully managed in the AWS cloud.
A minimal configuration of this sender would be:
sender = KinesisSender.create("my-stream");
Additionally, CredentialsProvider
, EndpointConfiguration
and region
can all be customized as needed.
sender = KinesisSender.builder()
.streamName("my-stream")
.region("us-west-1")
.credentialsProvider(new AWSStaticCredentialsProvider(new AnonymousAWSCredentials()))
.endpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:8080/", "us-east-1"))
.build();
The credentials that your service has requires the following permissions in order to function:
kinesis:DescribeStream
for health checking
kinesis:PutRecord
for placing spans on the stream
The message's binary data includes a list of spans. Supported encodings are the same as the http POST /spans body.
Encoding defaults to json, but can be overridden to PROTO3 if required.
Note: Span encoding happens before Kinesis Base64 data encoding.
For example, if you look at a raw PutRecord
request, the Data
field
will always be Base64 encoded.
collector-kinesis integrates with zipkin-server to pull spans off of a Kinesis stream instead of http or kafka.
sparkstreaming-stream-kinesis is a module for the zipkin-sparkstreaming project that allows to reading the spans and running real-time spark processing on them.