|
|
|
# gRPC C++ OpenTelemetry Example
|
|
|
|
|
|
|
|
The opentelemetry example builds on the
|
|
|
|
[Hello World Example](https://github.com/grpc/grpc/tree/master/examples/cpp/helloworld)
|
|
|
|
and changes the gRPC client and server to show a sample way of configuring the
|
|
|
|
gRPC OpenTelemetry plugin with a prometheus exporter.
|
|
|
|
|
|
|
|
For more information on the gRPC OpenTelemetry plugin, please refer to - *
|
|
|
|
[A66: OpenTelemetry Metrics](https://github.com/grpc/proposal/blob/master/A66-otel-stats.md)
|
|
|
|
* [https://opentelemetry.io/]()
|
|
|
|
|
|
|
|
## Running the example
|
|
|
|
|
|
|
|
To run the server -
|
|
|
|
|
|
|
|
```
|
|
|
|
$ tools/bazel run examples/cpp/otel:greeter_callback_server
|
|
|
|
```
|
|
|
|
|
|
|
|
To run the client -
|
|
|
|
|
|
|
|
```
|
|
|
|
$ tools/bazel run examples/cpp/otel:greeter_callback_client
|
|
|
|
```
|
|
|
|
|
|
|
|
The client continuously sends an RPC to the server every second.
|
|
|
|
|
|
|
|
To make sure that the server and client metrics are being exported properly, in
|
|
|
|
a separate terminal, run the following -
|
|
|
|
|
|
|
|
```
|
|
|
|
$ curl localhost:9464/metrics
|
|
|
|
```
|
|
|
|
|
|
|
|
```
|
|
|
|
$ curl localhost:9465/metrics
|
|
|
|
```
|
|
|
|
|
|
|
|
> ***NOTE:*** If the prometheus endpoint configured is overridden, please update
|
|
|
|
> the target in the above curl command.
|
|
|
|
|
|
|
|
## CMake Instructions
|
|
|
|
|
|
|
|
The following libraries need to be installed before building the example with CMake -
|
|
|
|
* absl
|
|
|
|
* protobuf
|
|
|
|
* prometheus-cpp
|
|
|
|
* opentelemetry-cpp (with the options `-DWITH_ABSEIL=ON` `-DWITH_PROMETHEUS=ON`)
|
|
|
|
* grpc (with the option `-DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON`)
|
|
|
|
|
|
|
|
You can find a complete set of instructions for building gRPC and running the
|
|
|
|
Hello World app in the [C++ Quick Start][].
|
|
|
|
|
|
|
|
[C++ Quick Start]: https://grpc.io/docs/languages/cpp/quickstart
|