boulder/grpc
Matthew McPherrin 0060e695b5
Introduce OpenTelemetry Tracing (#6750)
Add a new shared config stanza which all boulder components can use to
configure their Open Telemetry tracing. This allows components to
specify where their traces should be sent, what their sampling ratio
should be, and whether or not they should respect their parent's
sampling decisions (so that web front-ends can ignore sampling info
coming from outside our infrastructure). It's likely we'll need to
evolve this configuration over time, but this is a good starting point.

Add basic Open Telemetry setup to our existing cmd.StatsAndLogging
helper, so that it gets initialized at the same time as our other
observability helpers. This sets certain default fields on all
traces/spans generated by the service. Currently these include the
service name, the service version, and information about the telemetry
SDK itself. In the future we'll likely augment this with information
about the host and process.

Finally, add instrumentation for the HTTP servers and grpc
clients/servers. This gives us a starting point of being able to monitor
Boulder, but is fairly minimal as this PR is already somewhat unwieldy:
It's really only enough to understand that everything is wired up
properly in the configuration. In subsequent work we'll enhance those
spans with more data, and add more spans for things not automatically
traced here.

Fixes https://github.com/letsencrypt/boulder/issues/6361

---------

Co-authored-by: Aaron Gable <aaron@aarongable.com>
2023-04-21 10:46:59 -07:00
..
creds Update gRPC TLS handshake (#5968) 2022-02-24 14:23:32 -08:00
internal Upgrade GRPC to v1.53.0 (#6734) 2023-03-15 12:36:04 -07:00
noncebalancer Upgrade GRPC to v1.53.0 (#6734) 2023-03-15 12:36:04 -07:00
test_proto Update boulder-tools dependencies (#6129) 2022-05-20 14:24:01 -07:00
client.go Introduce OpenTelemetry Tracing (#6750) 2023-04-21 10:46:59 -07:00
client_test.go wfe2: don't pass through client-initiated cancellation (#6608) 2023-01-26 17:26:15 -08:00
errors.go Allow BoulderErrors to be interpreted as grpc.Statuses (#6654) 2023-02-16 14:17:09 -08:00
errors_test.go Add interceptor for per-rpc client auth (#6488) 2022-11-07 13:47:47 -08:00
generate.go Unify protobuf generation (#5458) 2021-06-07 08:49:15 -07:00
interceptors.go wfe2: don't pass through client-initiated cancellation (#6608) 2023-01-26 17:26:15 -08:00
interceptors_test.go Allow BoulderErrors to be interpreted as grpc.Statuses (#6654) 2023-02-16 14:17:09 -08:00
pb-marshalling.go Deprecate ROCSPStage6 feature flag (#6770) 2023-04-04 15:41:51 -07:00
pb-marshalling_test.go dependencies: Replace square/go-jose.v2 with go-jose/go-jose.v2 (#6598) 2023-01-24 12:08:30 -05:00
protogen.sh Unify protobuf generation (#5458) 2021-06-07 08:49:15 -07:00
resolver.go Re-enable errcheck linter (#6819) 2023-04-14 15:41:12 -04:00
resolver_test.go grpc: Implement a static multiple IP address gRPC resolver (#6270) 2022-08-05 10:20:57 -07:00
server.go Introduce OpenTelemetry Tracing (#6750) 2023-04-21 10:46:59 -07:00