xref: /aosp_15_r20/external/grpc-grpc/examples/cpp/otel/README.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
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