56
)
57
58
>
func NewHandler(logger log.Logger, clientConfig metrics.ClientConfig) (*Handler, error) {
metricstest.go
59
>
registry := prometheus.NewRegistry()
60
>
exporter, err := exporters.New(exporters.WithRegisterer(registry))
61
>
if err != nil {
62
return nil, err
63
}
64
65
// Set any custom histogram bucket configuration.
67
>
for _, u := range []string{metrics.Dimensionless, metrics.Bytes, metrics.Milliseconds} {
68
>
views = append(views, sdkmetrics.NewView(
69
>
sdkmetrics.Instrument{
70
>
Kind: sdkmetrics.InstrumentKindHistogram,
71
>
Unit: u,
72
>
},
73
>
sdkmetrics.Stream{
74
>
Aggregation: sdkmetrics.AggregationExplicitBucketHistogram{
75
>
Boundaries: clientConfig.PerUnitHistogramBoundaries[u],
76
>
},
77
>
},
78
>
))
79
>
}
80
>
provider := sdkmetrics.NewMeterProvider(
81
>
sdkmetrics.WithReader(exporter),
82
>
sdkmetrics.WithView(views...),
83
>
)
84
>
meter := provider.Meter("temporal")
85
>
86
>
otelHandler, err := metrics.NewOtelMetricsHandler(logger, &otelProvider{meter: meter}, clientConfig, false)
87
>
if err != nil {
88
return nil, err
89
}
91
>
Handler: otelHandler,
92
>
reg: registry,
93
>
}
94
>
95
>
return metricsHandler, nil
96
}
97