Some checks failed
codecov / upload (push) Failing after 13m59s
CodeQL / Analyze (push) Failing after 1s
govulncheck / govulncheck (.) (push) Failing after 1s
govulncheck / govulncheck (./cmd/protoc-gen-go-grpc) (push) Failing after 1s
govulncheck / govulncheck (./gcp/observability) (push) Failing after 1s
govulncheck / govulncheck (./security/advancedtls) (push) Failing after 1s
govulncheck / govulncheck (./stats/opencensus) (push) Failing after 1s
Testing / vet-proto (push) Failing after 1s
Testing / tests (arm, latest) (push) Waiting to run
Testing / extras (latest) (push) Failing after 1s
Testing / static checks (latest-1) (push) Failing after 1s
Testing / tests (-race, latest) (push) Failing after 1s
Testing / tests (i386, latest) (push) Failing after 1s
Testing / tests (latest) (push) Failing after 1s
Testing / tests (latest-1) (push) Failing after 1s
Lock Threads / lock (push) Failing after 1s
Stale bot / stale (push) Failing after 1s
40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
# OpenTelemetry
|
|
|
|
This example shows how to configure OpenTelemetry on a client and server, and
|
|
shows what type of telemetry data it can produce for certain RPCs.
|
|
This example shows how to enable experimental gRPC metrics, which are disabled
|
|
by default and must be explicitly configured on the client and/or server.
|
|
|
|
## Try it
|
|
|
|
```
|
|
go run server/main.go
|
|
```
|
|
|
|
```
|
|
go run client/main.go
|
|
```
|
|
|
|
```
|
|
curl localhost:9464/metrics
|
|
curl localhost:9465/metrics
|
|
```
|
|
|
|
## Explanation
|
|
|
|
The client continuously makes RPCs to a server. The client and server both
|
|
expose a prometheus exporter to listen and provide metrics. This defaults to
|
|
:9464 for the server and :9465 for the client. The client and server are also
|
|
configured to output traces directly to their standard output streams using
|
|
`stdouttrace`.
|
|
|
|
OpenTelemetry is configured on both the client and the server, and exports to
|
|
the Prometheus exporter. The exporter exposes metrics on the Prometheus ports
|
|
described above. OpenTelemetry exports traces using the `stdouttrace` exporter,
|
|
which prints structured trace data to the console output of both the client and
|
|
server. Each RPC call produces trace information that captures the execution
|
|
flow and timing of operations.
|
|
|
|
Curling to the exposed Prometheus ports outputs the metrics recorded on the
|
|
client and server.
|