@@ -7,10 +7,12 @@ import (
77 "strings"
88 "sync"
99
10- "github.com/redis/go-redis/v9"
1110 "go.opentelemetry.io/otel"
1211 "go.opentelemetry.io/otel/attribute"
1312 "go.opentelemetry.io/otel/metric"
13+ "go.opentelemetry.io/otel/semconv/v1.38.0/dbconv"
14+
15+ "github.com/redis/go-redis/v9"
1416)
1517
1618// Metric name constants
@@ -183,22 +185,17 @@ func (o *ObservabilityInstance) createRecorder(meter metric.Meter, cfg config) (
183185 var operationDuration metric.Float64Histogram
184186 if cfg .isMetricGroupEnabled (MetricGroupCommand ) {
185187 var operationDurationOpts []metric.Float64HistogramOption
186- operationDurationOpts = append (operationDurationOpts ,
187- metric .WithDescription ("Duration of database client operations" ),
188- metric .WithUnit ("s" ),
189- )
190188 if cfg .histAggregation == HistogramAggregationExplicitBucket {
191189 operationDurationOpts = append (operationDurationOpts ,
192190 metric .WithExplicitBucketBoundaries (cfg .bucketsOperationDuration ... ),
193191 )
194192 }
195- operationDuration , err = meter .Float64Histogram (
196- MetricOperationDuration ,
197- operationDurationOpts ... ,
198- )
193+ var operationDurationConv dbconv.ClientOperationDuration
194+ operationDurationConv , err = dbconv .NewClientOperationDuration (meter , operationDurationOpts ... )
199195 if err != nil {
200196 return nil , fmt .Errorf ("failed to create operation duration histogram: %w" , err )
201197 }
198+ operationDuration = operationDurationConv .Inst ()
202199 }
203200
204201 var connectionCountGauge metric.Int64ObservableGauge
@@ -208,31 +205,26 @@ func (o *ObservabilityInstance) createRecorder(meter metric.Meter, cfg config) (
208205
209206 if cfg .isMetricGroupEnabled (MetricGroupConnectionBasic ) {
210207 connectionCountGauge , err = meter .Int64ObservableGauge (
211- MetricConnectionCount ,
212- metric .WithDescription ("The number of connections that are currently in state described by the state attribute" ),
213- metric .WithUnit ("{connection}" ),
208+ dbconv. ClientConnectionCount {}. Name () ,
209+ metric .WithDescription (dbconv. ClientConnectionCount {}. Description () ),
210+ metric .WithUnit (dbconv. ClientConnectionCount {}. Unit () ),
214211 )
215212 if err != nil {
216213 return nil , fmt .Errorf ("failed to create connection count metric: %w" , err )
217214 }
218215
219216 var connectionCreateTimeOpts []metric.Float64HistogramOption
220- connectionCreateTimeOpts = append (connectionCreateTimeOpts ,
221- metric .WithDescription ("The time it took to create a new connection" ),
222- metric .WithUnit ("s" ),
223- )
224217 if cfg .histAggregation == HistogramAggregationExplicitBucket {
225218 connectionCreateTimeOpts = append (connectionCreateTimeOpts ,
226219 metric .WithExplicitBucketBoundaries (cfg .bucketsConnectionCreateTime ... ),
227220 )
228221 }
229- connectionCreateTime , err = meter .Float64Histogram (
230- MetricConnectionCreateTime ,
231- connectionCreateTimeOpts ... ,
232- )
222+ var connectionCreateTimeConv dbconv.ClientConnectionCreateTime
223+ connectionCreateTimeConv , err = dbconv .NewClientConnectionCreateTime (meter , connectionCreateTimeOpts ... )
233224 if err != nil {
234225 return nil , fmt .Errorf ("failed to create connection create time histogram: %w" , err )
235226 }
227+ connectionCreateTime = connectionCreateTimeConv .Inst ()
236228
237229 connectionRelaxedTimeout , err = meter .Int64UpDownCounter (
238230 MetricConnectionRelaxedTimeout ,
@@ -281,22 +273,17 @@ func (o *ObservabilityInstance) createRecorder(meter metric.Meter, cfg config) (
281273
282274 if cfg .isMetricGroupEnabled (MetricGroupConnectionAdvanced ) {
283275 var connectionWaitTimeOpts []metric.Float64HistogramOption
284- connectionWaitTimeOpts = append (connectionWaitTimeOpts ,
285- metric .WithDescription ("The time it took to obtain a connection from the pool" ),
286- metric .WithUnit ("s" ),
287- )
288276 if cfg .histAggregation == HistogramAggregationExplicitBucket {
289277 connectionWaitTimeOpts = append (connectionWaitTimeOpts ,
290278 metric .WithExplicitBucketBoundaries (cfg .bucketsConnectionWaitTime ... ),
291279 )
292280 }
293- connectionWaitTime , err = meter .Float64Histogram (
294- MetricConnectionWaitTime ,
295- connectionWaitTimeOpts ... ,
296- )
281+ var connectionWaitTimeConv dbconv.ClientConnectionWaitTime
282+ connectionWaitTimeConv , err = dbconv .NewClientConnectionWaitTime (meter , connectionWaitTimeOpts ... )
297283 if err != nil {
298284 return nil , fmt .Errorf ("failed to create connection wait time histogram: %w" , err )
299285 }
286+ connectionWaitTime = connectionWaitTimeConv .Inst ()
300287
301288 connectionClosed , err = meter .Int64Counter (
302289 MetricConnectionClosed ,
@@ -308,9 +295,9 @@ func (o *ObservabilityInstance) createRecorder(meter metric.Meter, cfg config) (
308295 }
309296
310297 connectionPendingReqsGauge , err = meter .Int64ObservableGauge (
311- MetricConnectionPendingReqs ,
312- metric .WithDescription ("The number of pending requests waiting for a connection" ),
313- metric .WithUnit ("{request}" ),
298+ dbconv. ClientConnectionPendingRequests {}. Name () ,
299+ metric .WithDescription (dbconv. ClientConnectionPendingRequests {}. Description () ),
300+ metric .WithUnit (dbconv. ClientConnectionPendingRequests {}. Unit () ),
314301 )
315302 if err != nil {
316303 return nil , fmt .Errorf ("failed to create connection pending requests metric: %w" , err )
0 commit comments