Skip to content

Commit a3b20f6

Browse files
radhusalethenorio
authored andcommitted
feat(pubsub): extract trace information
Pass a context that contains trace information extracted from the incoming message, allowing traces to span from publishers over to subscribers. In order for publishers to include tracing information, the pubsub client should be created with: ```go client, err := pubsub.NewClientWithConfig( ctx, cloudrunner.Runtime(ctx).ProjectID, &pubsub.ClientConfig{ EnableOpenTelemetryTracing: true, }, ``` Depends on googleapis/google-cloud-go#10827 which is included in [v1.43.0](https://github.com/googleapis/google-cloud-go/releases/tag/pubsub%2Fv1.43.0).
1 parent f4531b0 commit a3b20f6

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

cloudpubsub/httphandler.go

+12
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import (
77
"net/http"
88
"time"
99

10+
"cloud.google.com/go/pubsub"
1011
"cloud.google.com/go/pubsub/apiv1/pubsubpb"
1112
"go.einride.tech/cloudrunner/cloudrequestlog"
1213
"go.einride.tech/cloudrunner/cloudstatus"
14+
"go.opentelemetry.io/otel/propagation"
1315
"google.golang.org/grpc/status"
1416
"google.golang.org/protobuf/types/known/timestamppb"
1517
)
@@ -55,6 +57,16 @@ func (fn httpHandlerFn) ServeHTTP(w http.ResponseWriter, r *http.Request) {
5557
fields.Add(slog.Any("pubsubMessage", &pubsubMessage))
5658
}
5759
ctx := withSubscription(r.Context(), payload.Subscription)
60+
tc := propagation.TraceContext{}
61+
ctx = tc.Extract(ctx, pubsub.NewMessageCarrierFromPB(&pubsubMessage))
62+
carrier := make(propagation.MapCarrier)
63+
tc.Inject(ctx, &carrier)
64+
slog.InfoContext(
65+
ctx,
66+
"extracted carrier trace from pubsub",
67+
slog.Any("carrier", carrier),
68+
slog.Any("attributes", pubsubMessage.GetAttributes()),
69+
)
5870
if err := fn(ctx, &pubsubMessage); err != nil {
5971
if fields, ok := cloudrequestlog.GetAdditionalFields(r.Context()); ok {
6072
fields.Add(slog.Any("error", err))

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ require (
4343
cloud.google.com/go v0.118.1 // indirect
4444
cloud.google.com/go/auth v0.15.0 // indirect
4545
cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect
46+
cloud.google.com/go/iam v1.3.1 // indirect
4647
cloud.google.com/go/longrunning v0.6.4 // indirect
4748
cloud.google.com/go/monitoring v1.23.0 // indirect
4849
cloud.google.com/go/trace v1.11.3 // indirect

go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4
1111
cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
1212
cloud.google.com/go/iam v1.3.1 h1:KFf8SaT71yYq+sQtRISn90Gyhyf4X8RGgeAVC8XGf3E=
1313
cloud.google.com/go/iam v1.3.1/go.mod h1:3wMtuyT4NcbnYNPLMBzYRFiEfjKfJlLVLrisE7bwm34=
14+
cloud.google.com/go/kms v1.20.5 h1:aQQ8esAIVZ1atdJRxihhdxGQ64/zEbJoJnCz/ydSmKg=
15+
cloud.google.com/go/kms v1.20.5/go.mod h1:C5A8M1sv2YWYy1AE6iSrnddSG9lRGdJq5XEdBy28Lmw=
1416
cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc=
1517
cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA=
1618
cloud.google.com/go/longrunning v0.6.4 h1:3tyw9rO3E2XVXzSApn1gyEEnH2K9SynNQjMlBi3uHLg=
@@ -163,6 +165,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
163165
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
164166
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
165167
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
168+
go.einride.tech/aip v0.68.1 h1:16/AfSxcQISGN5z9C5lM+0mLYXihrHbQ1onvYTr93aQ=
169+
go.einride.tech/aip v0.68.1/go.mod h1:XaFtaj4HuA3Zwk9xoBtTWgNubZ0ZZXv9BZJCkuKuWbg=
166170
go.einride.tech/protobuf-sensitive v0.8.0 h1:EoeKBbjJFc+K1xvfut6Wat0AY1eMAdmBYmGiBdK8Plw=
167171
go.einride.tech/protobuf-sensitive v0.8.0/go.mod h1:YkjV9z/m+HxFxtvdEUKdjUhImB5QjTD+mzqAqP5pAnU=
168172
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=

0 commit comments

Comments
 (0)