This contains tracing client and server interceptors for grpc.
The client interceptor adds trace headers to outgoing requests. The server interceptor extracts trace state from incoming requests. Both report to Zipkin how long each request takes, along with relevant tags like the response status.
To enable tracing for a gRPC application, add the interceptors when when constructing the client and server bindings:
grpcTracing = GrpcTracing.create(tracing);
Server server = ServerBuilder.forPort(serverPort)
.addService(ServerInterceptors.intercept(
GreeterGrpc.bindService(new GreeterImpl()), grpcTracing.newServerInterceptor()))
.build()
.start();
ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", serverPort)
.intercept(grpcTracing.newClientInterceptor())
.usePlaintext(true)
.build();
If you are working on this module, then you need to run mvn install
to first compile the protos. Once the protos are compiled, then can be found in the directories:
./target/generated-test-sources/protobuf/grpc-java ./target/generated-test-sources/protobuf/java
You may need to add the above directories as test sources in your IDE.