1*cc02d7e2SAndroid Build Coastguard Worker# gRPC C++ OpenTelemetry Example 2*cc02d7e2SAndroid Build Coastguard Worker 3*cc02d7e2SAndroid Build Coastguard WorkerThe opentelemetry example builds on the 4*cc02d7e2SAndroid Build Coastguard Worker[Hello World Example](https://github.com/grpc/grpc/tree/master/examples/cpp/helloworld) 5*cc02d7e2SAndroid Build Coastguard Workerand changes the gRPC client and server to show a sample way of configuring the 6*cc02d7e2SAndroid Build Coastguard WorkergRPC OpenTelemetry plugin with a prometheus exporter. 7*cc02d7e2SAndroid Build Coastguard Worker 8*cc02d7e2SAndroid Build Coastguard WorkerFor more information on the gRPC OpenTelemetry plugin, please refer to - * 9*cc02d7e2SAndroid Build Coastguard Worker[A66: OpenTelemetry Metrics](https://github.com/grpc/proposal/blob/master/A66-otel-stats.md) 10*cc02d7e2SAndroid Build Coastguard Worker* [https://opentelemetry.io/]() 11*cc02d7e2SAndroid Build Coastguard Worker 12*cc02d7e2SAndroid Build Coastguard Worker## Running the example 13*cc02d7e2SAndroid Build Coastguard Worker 14*cc02d7e2SAndroid Build Coastguard WorkerTo run the server - 15*cc02d7e2SAndroid Build Coastguard Worker 16*cc02d7e2SAndroid Build Coastguard Worker``` 17*cc02d7e2SAndroid Build Coastguard Worker$ tools/bazel run examples/cpp/otel:greeter_callback_server 18*cc02d7e2SAndroid Build Coastguard Worker``` 19*cc02d7e2SAndroid Build Coastguard Worker 20*cc02d7e2SAndroid Build Coastguard WorkerTo run the client - 21*cc02d7e2SAndroid Build Coastguard Worker 22*cc02d7e2SAndroid Build Coastguard Worker``` 23*cc02d7e2SAndroid Build Coastguard Worker$ tools/bazel run examples/cpp/otel:greeter_callback_client 24*cc02d7e2SAndroid Build Coastguard Worker``` 25*cc02d7e2SAndroid Build Coastguard Worker 26*cc02d7e2SAndroid Build Coastguard WorkerThe client continuously sends an RPC to the server every second. 27*cc02d7e2SAndroid Build Coastguard Worker 28*cc02d7e2SAndroid Build Coastguard WorkerTo make sure that the server and client metrics are being exported properly, in 29*cc02d7e2SAndroid Build Coastguard Workera separate terminal, run the following - 30*cc02d7e2SAndroid Build Coastguard Worker 31*cc02d7e2SAndroid Build Coastguard Worker``` 32*cc02d7e2SAndroid Build Coastguard Worker$ curl localhost:9464/metrics 33*cc02d7e2SAndroid Build Coastguard Worker``` 34*cc02d7e2SAndroid Build Coastguard Worker 35*cc02d7e2SAndroid Build Coastguard Worker``` 36*cc02d7e2SAndroid Build Coastguard Worker$ curl localhost:9465/metrics 37*cc02d7e2SAndroid Build Coastguard Worker``` 38*cc02d7e2SAndroid Build Coastguard Worker 39*cc02d7e2SAndroid Build Coastguard Worker> ***NOTE:*** If the prometheus endpoint configured is overridden, please update 40*cc02d7e2SAndroid Build Coastguard Worker> the target in the above curl command. 41*cc02d7e2SAndroid Build Coastguard Worker 42*cc02d7e2SAndroid Build Coastguard Worker## CMake Instructions 43*cc02d7e2SAndroid Build Coastguard Worker 44*cc02d7e2SAndroid Build Coastguard WorkerThe following libraries need to be installed before building the example with CMake - 45*cc02d7e2SAndroid Build Coastguard Worker* absl 46*cc02d7e2SAndroid Build Coastguard Worker* protobuf 47*cc02d7e2SAndroid Build Coastguard Worker* prometheus-cpp 48*cc02d7e2SAndroid Build Coastguard Worker* opentelemetry-cpp (with the options `-DWITH_ABSEIL=ON` `-DWITH_PROMETHEUS=ON`) 49*cc02d7e2SAndroid Build Coastguard Worker* grpc (with the option `-DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON`) 50*cc02d7e2SAndroid Build Coastguard Worker 51*cc02d7e2SAndroid Build Coastguard WorkerYou can find a complete set of instructions for building gRPC and running the 52*cc02d7e2SAndroid Build Coastguard WorkerHello World app in the [C++ Quick Start][]. 53*cc02d7e2SAndroid Build Coastguard Worker 54*cc02d7e2SAndroid Build Coastguard Worker[C++ Quick Start]: https://grpc.io/docs/languages/cpp/quickstart 55