| .. | ||
| protos | ||
| BUILD | ||
| client.cc | ||
| CMakeLists.txt | ||
| README.md | ||
| server.cc | ||
| tracer_common.h | ||
OpenTelemetry C++ Example
gRPC
This is a simple example that demonstrates tracing a gRPC request from client to server. There is an experimental directory in this example - the code within has been commented out to prevent any conflicts. The example shows several aspects of tracing such as:
- Using the
TracerProvider - Implementing the TextMapCarrier
- Context injection/extraction
- Span Attributes
- Span Semantic Conventions
- Using the ostream exporter
- Nested spans
- W3c Trace Context Propagation (Very soon!)
Running the example
-
The example uses gRPC C++ as well as Google's protocol buffers. Make sure you have installed both of these packages on your system, in such a way that CMake would know how to find them with this command:
find_package(gRPC) -
Build and Deploy the opentelemetry-cpp as described in INSTALL.md. Building the project will build all of the examples and create new folders containing their executables within the 'build' directory NOT the 'examples' directory.
-
Start the server from your
build/examples/grpcdirectory. Both the server and client are configured to use 8800 as the default port, but if you would like to use another port, you can specify that as an argument.$ ./server [port_num] Server listening on port: 0.0.0.0:8800 -
In a separate terminal window, run the client to make a single request:
$ ./client [port_num] ... -
You should see console exporter output for both the client and server sessions.
- Client console
{ name : GreeterClient/Greet trace_id : f5d16f8399be0d2c6b39d992634ffdbb span_id : 9c79a2dd744d7d2d tracestate : parent_span_id: 0000000000000000 start : 1622603339918985700 duration : 4960500 description : span kind : Client status : Ok attributes : rpc.grpc.status_code: 0 net.peer.port: 8080 net.peer.ip: 0.0.0.0 rpc.method: Greet rpc.service: grpc-example.GreetService rpc.system: grpc events : }- Server console
{ name : GreeterService/Greet trace_id : f5d16f8399be0d2c6b39d992634ffdbb span_id : 1e8a7d2d46e08573 tracestate : parent_span_id: 9c79a2dd744d7d2d start : 1622603339923163800 duration : 76400 description : span kind : Server status : Ok attributes : rpc.grpc.status_code: 0 rpc.method: Greet rpc.service: GreeterService rpc.system: grpc events : { name : Processing client attributes timestamp : 1622603339923180800 attributes : } { name : Response sent to client timestamp : 1622603339923233700 attributes : } links : }