Skip to content

Commit 1857c60

Browse files
authored
try log (#513)
1 parent 13afec2 commit 1857c60

File tree

4 files changed

+36
-1
lines changed

4 files changed

+36
-1
lines changed

dataplane/standalone/lucius/BUILD

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ go_library(
1616
"//proto/forwarding",
1717
"@com_github_googlecloudplatform_opentelemetry_operations_go_exporter_trace//:trace",
1818
"@com_github_grpc_ecosystem_go_grpc_middleware_v2//interceptors/logging",
19+
"@com_google_cloud_go_trace//apiv2",
20+
"@com_google_cloud_go_trace//apiv2/tracepb",
1921
"@io_opentelemetry_go_contrib_detectors_gcp//:gcp",
2022
"@io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc//:otelgrpc",
2123
"@io_opentelemetry_go_otel//:otel",
@@ -30,6 +32,7 @@ go_library(
3032
"@org_golang_google_grpc//credentials/insecure",
3133
"@org_golang_google_grpc//metadata",
3234
"@org_golang_google_grpc//reflection",
35+
"@org_golang_google_protobuf//types/known/timestamppb",
3336
],
3437
)
3538

dataplane/standalone/lucius/lucius.go

+27
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import (
2222
"log"
2323
"log/slog"
2424
"net"
25+
"os"
2526

27+
traceapi "cloud.google.com/go/trace/apiv2"
28+
"cloud.google.com/go/trace/apiv2/tracepb"
2629
texporter "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace"
2730
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
2831
"go.opentelemetry.io/contrib/detectors/gcp"
@@ -39,6 +42,7 @@ import (
3942
"google.golang.org/grpc/credentials/insecure"
4043
"google.golang.org/grpc/metadata"
4144
"google.golang.org/grpc/reflection"
45+
"google.golang.org/protobuf/types/known/timestamppb"
4246

4347
"github.com/openconfig/lemming/dataplane/dplaneopts"
4448
"github.com/openconfig/lemming/dataplane/saiserver"
@@ -132,6 +136,29 @@ func setupOTelSDK(ctx context.Context) (func(context.Context) error, error) {
132136
if err != nil {
133137
return nil, err
134138
}
139+
// Create a test span and try exporting it to verify authentication is successful.
140+
c, err := traceapi.NewClient(ctx)
141+
if err != nil {
142+
return nil, err
143+
}
144+
_, span := tracer.Start(ctx, "ping")
145+
span.End()
146+
147+
batchCtx := metadata.NewOutgoingContext(ctx, metadata.New(map[string]string{"x-goog-user-project": *gcpProject}))
148+
err = c.BatchWriteSpans(batchCtx, &tracepb.BatchWriteSpansRequest{
149+
Name: fmt.Sprintf("projects/%s", *gcpProject),
150+
Spans: []*tracepb.Span{{
151+
Name: fmt.Sprintf("projects/%s/traces/%s/spans/%s", *gcpProject, span.SpanContext().TraceID().String(), span.SpanContext().SpanID().String()),
152+
SpanId: span.SpanContext().SpanID().String(),
153+
DisplayName: &tracepb.TruncatableString{Value: "test"},
154+
StartTime: timestamppb.Now(),
155+
EndTime: timestamppb.Now(),
156+
}},
157+
})
158+
if err != nil {
159+
fmt.Fprintf(os.Stderr, "failed to export test trace, disabling exporter: %v\n", err)
160+
exporter = nil
161+
}
135162
cloudlog.SetGlobalLogger(ctx, *gcpProject, "lucius")
136163
}
137164

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.23
55
require (
66
cloud.google.com/go/cloudbuild v1.16.3
77
cloud.google.com/go/logging v1.10.0
8+
cloud.google.com/go/trace v1.10.10
89
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.24.1
910
github.com/fatih/color v1.15.0
1011
github.com/go-logr/logr v1.4.2
@@ -69,7 +70,6 @@ require (
6970
cloud.google.com/go/iam v1.1.10 // indirect
7071
cloud.google.com/go/longrunning v0.5.9 // indirect
7172
cloud.google.com/go/pubsub v1.40.0 // indirect
72-
cloud.google.com/go/trace v1.10.10 // indirect
7373
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2 // indirect
7474
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
7575
github.com/Masterminds/semver/v3 v3.2.1 // indirect

internal/cloudlog/cloudlog.go

+5
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ func SetGlobalLogger(ctx context.Context, project, logName string) error {
3535
if err != nil {
3636
return err
3737
}
38+
if err := cl.Ping(ctx); err != nil {
39+
fmt.Fprintf(os.Stderr, "failed to ping cloud logging, not exporting logs: %v\n", err)
40+
return err
41+
}
3842

3943
h := &cloudLogHandle{
4044
Handler: slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{}),
@@ -52,6 +56,7 @@ func SetGlobalLogger(ctx context.Context, project, logName string) error {
5256
select {
5357
case <-sigs:
5458
h.l.Flush()
59+
os.Exit(1)
5560
case <-t.C:
5661
if err := h.l.Flush(); err != nil {
5762
fmt.Fprintf(os.Stderr, "log flush err: %v", err)

0 commit comments

Comments
 (0)