@@ -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
10311034func (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