Skip to content

Commit 400962a

Browse files
committed
Add metric exporter for google cloud
1 parent 336b2dc commit 400962a

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

api/go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.18
55
require (
66
cloud.google.com/go/cloudtasks v1.10.0
77
firebase.google.com/go v3.13.0+incompatible
8+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.36.0
89
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.12.0
910
github.com/NdoleStudio/go-otelroundtripper v0.0.7
1011
github.com/NdoleStudio/lemonsqueezy-go v0.0.8
@@ -36,6 +37,7 @@ require (
3637
go.opentelemetry.io/otel v1.14.0
3738
go.opentelemetry.io/otel/metric v0.37.0
3839
go.opentelemetry.io/otel/sdk v1.14.0
40+
go.opentelemetry.io/otel/sdk/metric v0.37.0
3941
go.opentelemetry.io/otel/trace v1.14.0
4042
google.golang.org/api v0.114.0
4143
google.golang.org/genproto v0.0.0-20230320173215-1fe4d14fc725
@@ -52,6 +54,7 @@ require (
5254
cloud.google.com/go/firestore v1.9.0 // indirect
5355
cloud.google.com/go/iam v0.13.0 // indirect
5456
cloud.google.com/go/longrunning v0.4.1 // indirect
57+
cloud.google.com/go/monitoring v1.12.0 // indirect
5558
cloud.google.com/go/storage v1.30.0 // indirect
5659
cloud.google.com/go/trace v1.9.0 // indirect
5760
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.36.0 // indirect
@@ -123,7 +126,6 @@ require (
123126
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect
124127
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 // indirect
125128
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.14.0 // indirect
126-
go.opentelemetry.io/otel/sdk/metric v0.37.0 // indirect
127129
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
128130
go.uber.org/atomic v1.10.0 // indirect
129131
go.uber.org/multierr v1.10.0 // indirect

api/go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5
3838
cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM=
3939
cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=
4040
cloud.google.com/go/monitoring v1.12.0 h1:+X79DyOP/Ny23XIqSIb37AvFWSxDN15w/ktklVvPLso=
41+
cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w=
4142
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
4243
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
4344
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
@@ -56,6 +57,8 @@ firebase.google.com/go v3.13.0+incompatible h1:3TdYC3DDi6aHn20qoRkxwGqNgdjtblwVA
5657
firebase.google.com/go v3.13.0+incompatible/go.mod h1:xlah6XbEyW6tbfSklcfe5FHJIwjt8toICdV5Wh9ptHs=
5758
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
5859
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
60+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.36.0 h1:vzdNJ7Xwp+7PYRB2B1d7pN5vrckQkkyR5Zvu0JBjSxc=
61+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.36.0/go.mod h1:8uQOxrsZvhhoSAKoV5v6BvB6dCblBQBk+6DyBDt7sso=
5962
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.12.0 h1:VqRrsKqdr9rEDAqu3Rowg63OAQU3r8cIAFpbLxCbBtA=
6063
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.12.0/go.mod h1:5+A4DITfFAc62a48+Tolz/7Pvnn7LitOwlqRQnOtrlY=
6164
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.36.0 h1:X80uwIJN1QTdM/Ou7V/flg7YmY36mQGsEEhNb9+hQkI=

api/pkg/di/container.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import (
99
"strconv"
1010
"time"
1111

12+
mexporter "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric"
13+
cloudtrace "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace"
14+
"go.opentelemetry.io/otel/sdk/metric"
15+
1216
"github.com/NdoleStudio/httpsms/pkg/cache"
1317
"github.com/redis/go-redis/v9"
1418

@@ -31,7 +35,6 @@ import (
3135
semconv "go.opentelemetry.io/otel/semconv/v1.10.0"
3236

3337
"firebase.google.com/go/messaging"
34-
cloudtrace "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace"
3538
"github.com/hirosassa/zerodriver"
3639
"github.com/rs/zerolog"
3740
"go.opentelemetry.io/otel/sdk/trace"
@@ -1029,23 +1032,38 @@ func (container *Container) InitializeTraceProvider() func() {
10291032
}
10301033

10311034
func (container *Container) initializeGoogleTraceProvider(version string, namespace string) func() {
1032-
container.logger.Debug("initializing google trace provider")
1035+
container.logger.Debug("initializing google trace meterProvider")
10331036

1034-
exporter, err := cloudtrace.New(cloudtrace.WithProjectID(os.Getenv("GCP_PROJECT_ID")))
1037+
traceExporter, err := cloudtrace.New(cloudtrace.WithProjectID(os.Getenv("GCP_PROJECT_ID")))
10351038
if err != nil {
1036-
container.logger.Fatal(stacktrace.Propagate(err, "cannot create cloud trace exporter"))
1039+
container.logger.Fatal(stacktrace.Propagate(err, "cannot create cloud trace traceExporter"))
10371040
}
10381041

10391042
tp := trace.NewTracerProvider(
1040-
trace.WithBatcher(exporter),
1043+
trace.WithBatcher(traceExporter),
10411044
trace.WithSampler(trace.AlwaysSample()),
10421045
trace.WithResource(container.OtelResources(version, namespace)),
10431046
)
1044-
10451047
otel.SetTracerProvider(tp)
10461048

1049+
metricExporter, err := mexporter.New(mexporter.WithProjectID(os.Getenv("GCP_PROJECT_ID")))
1050+
if err != nil {
1051+
container.logger.Fatal(stacktrace.Propagate(err, "cannot create cloud metric traceExporter"))
1052+
}
1053+
1054+
meterProvider := metric.NewMeterProvider(
1055+
metric.WithReader(metric.NewPeriodicReader(metricExporter)),
1056+
metric.WithResource(container.OtelResources(version, namespace)),
1057+
)
1058+
global.SetMeterProvider(meterProvider)
1059+
10471060
return func() {
1048-
_ = exporter.Shutdown(context.Background())
1061+
if err = metricExporter.Shutdown(context.Background()); err != nil {
1062+
container.logger.Error(stacktrace.Propagate(err, "cannot shutdown cloud metric metric exporter"))
1063+
}
1064+
if err = traceExporter.Shutdown(context.Background()); err != nil {
1065+
container.logger.Error(stacktrace.Propagate(err, "cannot shutdown cloud trace trace exporter"))
1066+
}
10491067
}
10501068
}
10511069

0 commit comments

Comments
 (0)