diff --git a/cloudmonitoring/metricmiddleware.go b/cloudmonitoring/metricmiddleware.go index 5fbc47d..552e37b 100644 --- a/cloudmonitoring/metricmiddleware.go +++ b/cloudmonitoring/metricmiddleware.go @@ -9,7 +9,6 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric/global" "go.opentelemetry.io/otel/metric/instrument" - "go.opentelemetry.io/otel/metric/instrument/syncint64" "go.opentelemetry.io/otel/metric/unit" semconv "go.opentelemetry.io/otel/semconv/v1.7.0" "google.golang.org/grpc" @@ -20,8 +19,10 @@ import ( // Metric names are based on OTEL semantic conventions for metrics. // See: // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics +// We still had to implement the following metrics below, later we can remove some by following the progress of +// https://github.com/open-telemetry/opentelemetry-go-contrib/issues/2840 const ( - serverRequestDurationMetricName = "rpc.server.duration" + serverRequestDurationMetricName = "rpc.server.duration_deprecated" clientRequestDurationMetricName = "rpc.client.duration" // there is no rpc_count equivalent int OTEL semantic conventions yet. @@ -32,7 +33,7 @@ const ( func NewMetricMiddleware() (MetricMiddleware, error) { meter := global.MeterProvider().Meter("cloudrunner-go/cloudmonitoring") - serverRequestCount, err := meter.SyncInt64().Counter( + serverRequestCount, err := meter.Int64Counter( serverRequestCountMetricName, instrument.WithUnit(unit.Dimensionless), instrument.WithDescription("Count of RPCs received by a gRPC server."), @@ -40,7 +41,7 @@ func NewMetricMiddleware() (MetricMiddleware, error) { if err != nil { return MetricMiddleware{}, fmt.Errorf("create server request count counter: %w", err) } - serverRequestDuration, err := meter.SyncInt64().Histogram( + serverRequestDuration, err := meter.Int64Histogram( serverRequestDurationMetricName, instrument.WithUnit(unit.Milliseconds), instrument.WithDescription("Duration of RPCs received by a gRPC server."), @@ -48,7 +49,7 @@ func NewMetricMiddleware() (MetricMiddleware, error) { if err != nil { return MetricMiddleware{}, fmt.Errorf("create server request duration histogram: %w", err) } - clientRequestCount, err := meter.SyncInt64().Counter( + clientRequestCount, err := meter.Int64Counter( clientRequestCountMetricName, instrument.WithUnit(unit.Dimensionless), instrument.WithDescription("Count of RPCs sent by a gRPC client."), @@ -56,7 +57,7 @@ func NewMetricMiddleware() (MetricMiddleware, error) { if err != nil { return MetricMiddleware{}, fmt.Errorf("create client request count counter: %w", err) } - clientRequestDuration, err := meter.SyncInt64().Histogram( + clientRequestDuration, err := meter.Int64Histogram( clientRequestDurationMetricName, instrument.WithUnit(unit.Milliseconds), instrument.WithDescription("Duration of RPCs sent by a gRPC client."), @@ -73,10 +74,10 @@ func NewMetricMiddleware() (MetricMiddleware, error) { } type MetricMiddleware struct { - serverRequestCount syncint64.Counter - serverRequestDuration syncint64.Histogram - clientRequestCount syncint64.Counter - clientRequestDuration syncint64.Histogram + serverRequestCount instrument.Int64Counter + serverRequestDuration instrument.Int64Histogram + clientRequestCount instrument.Int64Counter + clientRequestDuration instrument.Int64Histogram } // GRPCUnaryServerInterceptor implements grpc.UnaryServerInterceptor and diff --git a/go.mod b/go.mod index 42ba503..097c106 100644 --- a/go.mod +++ b/go.mod @@ -6,29 +6,29 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 cloud.google.com/go/profiler v0.3.1 cloud.google.com/go/pubsub v1.28.0 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.34.1 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.10.1 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.0.0-20221104160235-e955c204f4f2 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.35.2 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.11.2 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.35.2 github.com/google/go-cmp v0.5.9 github.com/soheilhy/cmux v0.1.5 go.einride.tech/protobuf-sensitive v0.3.0 go.opencensus.io v0.24.0 - go.opentelemetry.io/contrib/detectors/gcp v1.11.1 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 - go.opentelemetry.io/contrib/instrumentation/host v0.36.4 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4 - go.opentelemetry.io/contrib/instrumentation/runtime v0.36.4 + go.opentelemetry.io/contrib/detectors/gcp v1.14.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.39.0 + go.opentelemetry.io/contrib/instrumentation/host v0.39.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.39.0 + go.opentelemetry.io/contrib/instrumentation/runtime v0.39.0 go.opentelemetry.io/otel v1.13.0 - go.opentelemetry.io/otel/bridge/opencensus v0.33.0 - go.opentelemetry.io/otel/metric v0.33.0 - go.opentelemetry.io/otel/sdk v1.11.1 - go.opentelemetry.io/otel/sdk/metric v0.33.0 + go.opentelemetry.io/otel/bridge/opencensus v0.36.0 + go.opentelemetry.io/otel/metric v0.36.0 + go.opentelemetry.io/otel/sdk v1.13.0 + go.opentelemetry.io/otel/sdk/metric v0.36.0 go.uber.org/zap v1.24.0 golang.org/x/oauth2 v0.4.0 golang.org/x/sync v0.1.0 google.golang.org/api v0.109.0 google.golang.org/genproto v0.0.0-20230202175211-008b39050e57 - google.golang.org/grpc v1.52.3 + google.golang.org/grpc v1.53.0 google.golang.org/grpc/examples v0.0.0-20220915225546-9c3e589d3ee6 google.golang.org/protobuf v1.28.1 gopkg.in/yaml.v3 v3.0.1 @@ -40,8 +40,8 @@ require ( cloud.google.com/go/compute v1.18.0 // indirect cloud.google.com/go/monitoring v1.12.0 // indirect cloud.google.com/go/trace v1.8.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.11.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.34.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.11.2 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.35.2 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/go-logr/logr v1.2.3 // indirect diff --git a/go.sum b/go.sum index 6e6bcfd..d367c19 100644 --- a/go.sum +++ b/go.sum @@ -19,17 +19,17 @@ cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcb cloud.google.com/go/trace v1.8.0 h1:GFPLxbp5/FzdgTzor3nlNYNxMd6hLmzkE7sA9F0qQcA= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.11.0 h1:hc3Fb+ufGf+EznhPOSvQODMl9Qn++cATyI/7q7E7geM= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.11.0/go.mod h1:HpmGbYLf1fsWiqVA0Z2oKh7qi7BroCgOl2NqB2N/TG4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.34.1 h1:kbfuKQkOFb2XuuEcMTYbWtlVPiNKhLTyDjQcKx1pFqQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.34.1/go.mod h1:pGSEvxQ2PGMKdz6oiiTjzfM8pWtoWHSymSyUHMsZkUA= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.10.1 h1:E0Hwk1YC0lWXJboAvQrOnDSyVpmdlqC2v4m+GNmNszA= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.10.1/go.mod h1:ZWWusXNLjdTConvbpJZf+/5xxtLfu7y3hRfKjmb/DOI= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.34.1 h1:2G1eO4RSvcTNncDivyGTd3Zh9tozmMeA2JpF07QEYlc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.34.1 h1:2zV0DiJaSJ+zoaYwMuWAkqMQyLggPfStnrwrFNv+ty4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.34.1/go.mod h1:oBeOrlgeIZVX6bRZ+TDJiEuL1bsDdgAWKa4iETycZf8= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.0.0-20221104160235-e955c204f4f2 h1:B5e6QFA7aJvO+vEXYJMW38Rv3riaQ7qbbVlMARRLP2Y= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.0.0-20221104160235-e955c204f4f2/go.mod h1:FwtSi1M0P8cuMlHxVso1vcivukprUr1bBwf15CRypOI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.11.2 h1:SX09eVD4XAKlpNyE5Pn01Zgxk02hNECeLFpNKL8bnvs= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.11.2/go.mod h1:HpmGbYLf1fsWiqVA0Z2oKh7qi7BroCgOl2NqB2N/TG4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.35.2 h1:++Qgr1MbEOUE23DXDSUDGFJ+U9ZLR660B90vukYPujw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.35.2/go.mod h1:pM+AqjI/HkONjZRQVQ8fMA1PB6fUm211G+8WBc0dm0Q= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.11.2 h1:Z5/bjyZhqXd7dNI76Z/KnyxtqavKF1UgGhInFSAIa8s= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.11.2/go.mod h1:mHbBqn8wTt1/+bTA55xe2mLX5b+RKz2dVcGz8sH2HsY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.35.2 h1:xXo67CnDmiDMhgD3zAiuejKKMQ9nNkAQZZ4RS5U5jJY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.35.2 h1:uH5W8NML+jD8iFiBbNUh5X7Nt0FVDK44Hel+Ux0ZEqU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.35.2/go.mod h1:H785fvlgotVZqht+1rHhXSs8EJ8uPVmpBYkTYO3ccpc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.35.2 h1:IQlPynyfnjOw8ftWF2bnejabsr5poV627y64Ued2I6o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.35.2/go.mod h1:1+b5oFxaeaSoN5Iapn/8DV9VCJOvNA9jVLXJFcoGXOM= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -129,26 +129,26 @@ go.einride.tech/protobuf-sensitive v0.3.0 h1:CRIEF833SXINoCaZp7V8GqB+65bLgNGzVH+ go.einride.tech/protobuf-sensitive v0.3.0/go.mod h1:nwu0o4M/iWVo24hAn+3PDs6Ja2Mw3g8oDgyy7Rzw8k0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/detectors/gcp v1.11.1 h1:y6EXzhjnuYY6EV12OYW3eITeZ+lHtxsXCR3KpCJCfUY= -go.opentelemetry.io/contrib/detectors/gcp v1.11.1/go.mod h1:AuTCkYDcf6pXtddWv8aWdz+ohbDg4RsjVYUHGMWM4fE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 h1:PRXhsszxTt5bbPriTjmaweWUsAnJYeWBhUMLRetUgBU= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4/go.mod h1:05eWWy6ZWzmpeImD3UowLTB3VjDMU1yxQ+ENuVWDM3c= -go.opentelemetry.io/contrib/instrumentation/host v0.36.4 h1:2D0q/69KewnkCkOI9I9uXgi1XQXvwQIfMebMcPft0no= -go.opentelemetry.io/contrib/instrumentation/host v0.36.4/go.mod h1:IQdse+GFHec/g2M4wtj6cE4uA5PJGQjjXP/602LjHBQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4 h1:aUEBEdCa6iamGzg6fuYxDA8ThxvOG240mAvWDU+XLio= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4/go.mod h1:l2MdsbKTocpPS5nQZscqTR9jd8u96VYZdcpF8Sye7mA= -go.opentelemetry.io/contrib/instrumentation/runtime v0.36.4 h1:7AY5NdRzyU5s1ek3E4VK3FBnPtQ6La1i7sIn9hNgjsk= -go.opentelemetry.io/contrib/instrumentation/runtime v0.36.4/go.mod h1:yFSLOnffweT7Es+IzY1DF5KP0xa2Wl15SJfKqAyDXq8= +go.opentelemetry.io/contrib/detectors/gcp v1.14.0 h1:o2NurqCUGl7GaHH5vQjzYnjijlX2zrKneN7qsgia138= +go.opentelemetry.io/contrib/detectors/gcp v1.14.0/go.mod h1:UJf0kFmOn9CIuLs1SgvqAMF8Pwna1cLHOKHqqTGSlK4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.39.0 h1:MUes2rbdXa1ce9mwKYzTyBG0CtqpLT0NgKTFAz8FIDs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.39.0/go.mod h1:tETUy0CG/bwb1vHaXyNZJJP9395sjxlQQ5e69KtvZMc= +go.opentelemetry.io/contrib/instrumentation/host v0.39.0 h1:Or1wW8y36CbHBoyDAlyaqC+MhOjCVWwEl0/918oZuFo= +go.opentelemetry.io/contrib/instrumentation/host v0.39.0/go.mod h1:zpJ1y4HkljiUwVaOqfZNLEMqnL2sT+2mTC61ilOMTzQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.39.0 h1:vFEBG7SieZJzvnRWQ81jxpuEqe6J8Ex+hgc9CqOTzHc= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.39.0/go.mod h1:9rgTcOKdIhDOC0IcAu8a+R+FChqSUBihKpM1lVNi6T0= +go.opentelemetry.io/contrib/instrumentation/runtime v0.39.0 h1:AtfO01+aMX/GUk4IORJ4digf2LhwnSxWt3WvoKBZUL4= +go.opentelemetry.io/contrib/instrumentation/runtime v0.39.0/go.mod h1:iEjHFZQDi7GrrAom60DLW/GC7dFLECacBhZjGC+Sf80= go.opentelemetry.io/otel v1.13.0 h1:1ZAKnNQKwBBxFtww/GwxNUyTf0AxkZzrukO8MeXqe4Y= go.opentelemetry.io/otel v1.13.0/go.mod h1:FH3RtdZCzRkJYFTCsAKDy9l/XYjMdNv6QrkFFB8DvVg= -go.opentelemetry.io/otel/bridge/opencensus v0.33.0 h1:DnSFYr/VxUVwkHL0UoaMcxx74Jugb1HO0B08cYBmi0c= -go.opentelemetry.io/otel/bridge/opencensus v0.33.0/go.mod h1:gylOY4P2e7kPYc6T9M8XfQ5+RK4+evGorTOOy+gO4Nc= -go.opentelemetry.io/otel/metric v0.33.0 h1:xQAyl7uGEYvrLAiV/09iTJlp1pZnQ9Wl793qbVvED1E= -go.opentelemetry.io/otel/metric v0.33.0/go.mod h1:QlTYc+EnYNq/M2mNk1qDDMRLpqCOj2f/r5c7Fd5FYaI= -go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= -go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys= -go.opentelemetry.io/otel/sdk/metric v0.33.0 h1:oTqyWfksgKoJmbrs2q7O7ahkJzt+Ipekihf8vhpa9qo= -go.opentelemetry.io/otel/sdk/metric v0.33.0/go.mod h1:xdypMeA21JBOvjjzDUtD0kzIcHO/SPez+a8HOzJPGp0= +go.opentelemetry.io/otel/bridge/opencensus v0.36.0 h1:/RJRbdVBP+Yoh6tx8zu0L+b1KE/iGmo3adr5LUvCGWA= +go.opentelemetry.io/otel/bridge/opencensus v0.36.0/go.mod h1:otgxgSPzGNRPjDYJUrQwqGu4MXRngDPEbFxuVl355Fk= +go.opentelemetry.io/otel/metric v0.36.0 h1:t0lgGI+L68QWt3QtOIlqM9gXoxqxWLhZ3R/e5oOAY0Q= +go.opentelemetry.io/otel/metric v0.36.0/go.mod h1:wKVw57sd2HdSZAzyfOM9gTqqE8v7CbqWsYL6AyrH9qk= +go.opentelemetry.io/otel/sdk v1.13.0 h1:BHib5g8MvdqS65yo2vV1s6Le42Hm6rrw08qU6yz5JaM= +go.opentelemetry.io/otel/sdk v1.13.0/go.mod h1:YLKPx5+6Vx/o1TCUYYs+bpymtkmazOMT6zoRrC7AQ7I= +go.opentelemetry.io/otel/sdk/metric v0.36.0 h1:dEXpkkOAEcHiRiaZdvd63MouV+3bCtAB/bF3jlNKnr8= +go.opentelemetry.io/otel/sdk/metric v0.36.0/go.mod h1:Lv4HQQPSCSkhyBKzLNtE8YhTSdK4HCwNh3lh7CiR20s= go.opentelemetry.io/otel/trace v1.13.0 h1:CBgRZ6ntv+Amuj1jDsMhZtlAPT6gbyIRdaIzFhfBSdY= go.opentelemetry.io/otel/trace v1.13.0/go.mod h1:muCvmmO9KKpvuXSf3KKAXXB2ygNYHQ+ZfI5X08d3tds= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= @@ -235,8 +235,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc/examples v0.0.0-20220915225546-9c3e589d3ee6 h1:pp7qdLe0KT/hXMNr0KxZeCFQvIudg8Ltp5yKmuzB2r0= google.golang.org/grpc/examples v0.0.0-20220915225546-9c3e589d3ee6/go.mod h1:gxndsbNG1n4TZcHGgsYEfVGnTxqfEdfiDv6/DADXX9o= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=