@@ -11,17 +11,14 @@ use super::{
1111} ;
1212use crate :: { abstractions:: dbg_panic, telemetry:: metrics:: DEFAULT_S_BUCKETS } ;
1313use opentelemetry:: {
14- self , Key , KeyValue , Value , global ,
14+ self , Key , KeyValue , Value ,
1515 metrics:: { Meter , MeterProvider as MeterProviderT } ,
1616} ;
17- use opentelemetry_otlp:: WithExportConfig ;
17+ use opentelemetry_otlp:: { WithExportConfig , WithHttpConfig , WithTonicConfig } ;
1818use opentelemetry_sdk:: {
19- Resource ,
2019 metrics:: {
21- Aggregation , Instrument , InstrumentKind , MeterProviderBuilder , PeriodicReader ,
22- SdkMeterProvider , View , data:: Temporality , new_view, reader:: TemporalitySelector ,
23- } ,
24- runtime,
20+ new_view, Temporality , Aggregation , Instrument , InstrumentKind , MeterProviderBuilder , MetricError , PeriodicReader , SdkMeterProvider , View
21+ } , runtime, Resource
2522} ;
2623use std:: { collections:: HashMap , net:: SocketAddr , sync:: Arc , time:: Duration } ;
2724use temporal_sdk_core_api:: telemetry:: {
@@ -35,10 +32,13 @@ use temporal_sdk_core_api::telemetry::{
3532use tokio:: task:: AbortHandle ;
3633use tonic:: { metadata:: MetadataMap , transport:: ClientTlsConfig } ;
3734
35+ /// A specialized `Result` type for metric operations.
36+ type Result < T > = std:: result:: Result < T , MetricError > ;
37+
3838fn histo_view (
3939 metric_name : & ' static str ,
4040 use_seconds : bool ,
41- ) -> opentelemetry :: metrics :: Result < Box < dyn View > > {
41+ ) -> Result < Box < dyn View > > {
4242 let buckets = default_buckets_for ( metric_name, use_seconds) ;
4343 new_view (
4444 Instrument :: new ( ) . name ( format ! ( "*{metric_name}" ) ) ,
@@ -56,7 +56,7 @@ pub(super) fn augment_meter_provider_with_defaults(
5656 global_tags : & HashMap < String , String > ,
5757 use_seconds : bool ,
5858 bucket_overrides : HistogramBucketOverrides ,
59- ) -> opentelemetry :: metrics :: Result < MeterProviderBuilder > {
59+ ) -> Result < MeterProviderBuilder > {
6060 for ( name, buckets) in bucket_overrides. overrides {
6161 mpb = mpb. with_view ( new_view (
6262 Instrument :: new ( ) . name ( format ! ( "*{name}" ) ) ,
@@ -117,29 +117,27 @@ pub(super) fn augment_meter_provider_with_defaults(
117117/// Create an OTel meter that can be used as a [CoreMeter] to export metrics over OTLP.
118118pub fn build_otlp_metric_exporter (
119119 opts : OtelCollectorOptions ,
120- ) -> Result < CoreOtelMeter , anyhow:: Error > {
121- global:: set_error_handler ( |err| {
122- tracing:: error!( "{}" , err) ;
123- } ) ?;
120+ ) -> std:: result:: Result < CoreOtelMeter , anyhow:: Error > {
124121 let exporter = match opts. protocol {
125122 OtlpProtocol :: Grpc => {
126- let mut exporter = opentelemetry_otlp:: TonicExporterBuilder :: default ( )
123+ let mut exporter = opentelemetry_otlp:: MetricExporter :: builder ( )
124+ . with_tonic ( )
127125 . with_endpoint ( opts. url . to_string ( ) ) ;
128126 if opts. url . scheme ( ) == "https" || opts. url . scheme ( ) == "grpcs" {
129127 exporter = exporter. with_tls_config ( ClientTlsConfig :: new ( ) . with_native_roots ( ) ) ;
130128 }
131129 exporter
132130 . with_metadata ( MetadataMap :: from_headers ( ( & opts. headers ) . try_into ( ) ?) )
133- . build_metrics_exporter ( Box :: new ( metric_temporality_to_selector (
131+ . with_temporality ( metric_temporality_to_temporality (
134132 opts. metric_temporality ,
135- ) ) ) ?
133+ ) ) . build ( ) ?
136134 }
137135 OtlpProtocol :: Http => opentelemetry_otlp:: HttpExporterBuilder :: default ( )
138136 . with_endpoint ( opts. url . to_string ( ) )
139137 . with_headers ( opts. headers )
140- . build_metrics_exporter ( Box :: new ( metric_temporality_to_selector (
138+ . build_metrics_exporter ( metric_temporality_to_temporality (
141139 opts. metric_temporality ,
142- ) ) ) ?,
140+ ) ) ?,
143141 } ;
144142 let reader = PeriodicReader :: builder ( exporter, runtime:: Tokio )
145143 . with_interval ( opts. metric_periodicity )
@@ -170,7 +168,7 @@ pub struct StartedPromServer {
170168/// Requires a Tokio runtime to exist, and will block briefly while binding the server endpoint.
171169pub fn start_prometheus_metric_exporter (
172170 opts : PrometheusExporterOptions ,
173- ) -> Result < StartedPromServer , anyhow:: Error > {
171+ ) -> std :: result :: Result < StartedPromServer , anyhow:: Error > {
174172 let ( srv, exporter) = PromServer :: new ( & opts) ?;
175173 let meter_provider = augment_meter_provider_with_defaults (
176174 MeterProviderBuilder :: default ( ) . with_reader ( exporter) ,
@@ -228,7 +226,7 @@ impl CoreMeter for CoreOtelMeter {
228226 . u64_counter ( params. name )
229227 . with_unit ( params. unit )
230228 . with_description ( params. description )
231- . init ( ) ,
229+ . build ( ) ,
232230 )
233231 }
234232
@@ -238,7 +236,7 @@ impl CoreMeter for CoreOtelMeter {
238236 . u64_histogram ( params. name )
239237 . with_unit ( params. unit )
240238 . with_description ( params. description )
241- . init ( ) ,
239+ . build ( ) ,
242240 )
243241 }
244242
@@ -248,7 +246,7 @@ impl CoreMeter for CoreOtelMeter {
248246 . f64_histogram ( params. name )
249247 . with_unit ( params. unit )
250248 . with_description ( params. description )
251- . init ( ) ,
249+ . build ( ) ,
252250 )
253251 }
254252
@@ -268,7 +266,7 @@ impl CoreMeter for CoreOtelMeter {
268266 . u64_gauge ( params. name )
269267 . with_unit ( params. unit )
270268 . with_description ( params. description )
271- . init ( ) ,
269+ . build ( ) ,
272270 )
273271 }
274272
@@ -278,7 +276,7 @@ impl CoreMeter for CoreOtelMeter {
278276 . f64_gauge ( params. name )
279277 . with_unit ( params. unit )
280278 . with_description ( params. description )
281- . init ( ) ,
279+ . build ( ) ,
282280 )
283281 }
284282}
@@ -325,19 +323,10 @@ fn default_resource(override_values: &HashMap<String, String>) -> Resource {
325323 . merge ( & Resource :: new ( override_kvs) )
326324}
327325
328- #[ derive( Clone ) ]
329- struct ConstantTemporality ( Temporality ) ;
330-
331- impl TemporalitySelector for ConstantTemporality {
332- fn temporality ( & self , _: InstrumentKind ) -> Temporality {
333- self . 0
334- }
335- }
336-
337- fn metric_temporality_to_selector ( t : MetricTemporality ) -> impl TemporalitySelector + Clone {
326+ fn metric_temporality_to_temporality ( t : MetricTemporality ) -> Temporality {
338327 match t {
339- MetricTemporality :: Cumulative => ConstantTemporality ( Temporality :: Cumulative ) ,
340- MetricTemporality :: Delta => ConstantTemporality ( Temporality :: Delta ) ,
328+ MetricTemporality :: Cumulative => Temporality :: Cumulative ,
329+ MetricTemporality :: Delta => Temporality :: Delta ,
341330 }
342331}
343332
0 commit comments