File tree 6 files changed +31
-234
lines changed
opentelemetry-etw-metrics
6 files changed +31
-234
lines changed Original file line number Diff line number Diff line change 2
2
3
3
## vNext
4
4
5
+ ## v0.4.0
6
+
7
+ - Improved logging when ETW write fails due to size limit being hit.
8
+ [ 105] ( https://github.com/open-telemetry/opentelemetry-rust-contrib/pull/105 )
9
+ - Bump opentelemetry,opentelemetry_sdk and opentelemetry-proto versions to 0.25
10
+ [ 105] ( https://github.com/open-telemetry/opentelemetry-rust-contrib/pull/105 )
11
+
5
12
## v0.3.0
6
13
7
14
### Changed
Original file line number Diff line number Diff line change 1
1
[package ]
2
2
name = " opentelemetry-etw-metrics"
3
- version = " 0.3 .0"
3
+ version = " 0.4 .0"
4
4
edition = " 2021"
5
5
description = " OpenTelemetry metrics exporter to ETW (Event Tracing for Windows)"
6
6
homepage = " https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-etw-metrics"
@@ -11,9 +11,9 @@ license = "Apache-2.0"
11
11
rust-version = " 1.65"
12
12
13
13
[dependencies ]
14
- opentelemetry = { workspace = true , features = [" metrics" ] }
15
- opentelemetry_sdk = { workspace = true , features = [" metrics" , " rt-tokio" ] }
16
- opentelemetry-proto = { workspace = true , features = [" gen-tonic" , " metrics" ] }
14
+ opentelemetry = { version = " 0.25 " , features = [" metrics" ] }
15
+ opentelemetry_sdk = { version = " 0.25 " , features = [" metrics" , " rt-tokio" ] }
16
+ opentelemetry-proto = { version = " 0.25 " , features = [" gen-tonic" , " metrics" ] }
17
17
async-trait = " 0.1"
18
18
prost = " 0.13"
19
19
tracelogging = " 1.2.1"
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1
- //! run with `$ cargo run --example basic --all-features
2
- use opentelemetry:: { metrics:: MeterProvider as _, KeyValue } ;
1
+ //! run with `$ cargo run --example basic
2
+ use opentelemetry:: { global , metrics:: MeterProvider as _, KeyValue } ;
3
3
use opentelemetry_etw_metrics:: MetricsExporter ;
4
4
use opentelemetry_sdk:: {
5
5
metrics:: { PeriodicReader , SdkMeterProvider } ,
6
6
runtime, Resource ,
7
7
} ;
8
- use std:: { thread, time:: Duration } ;
9
8
10
9
const SERVICE_NAME : & str = "service-name" ;
11
10
@@ -24,6 +23,7 @@ fn setup_meter_provider() -> SdkMeterProvider {
24
23
#[ tokio:: main]
25
24
async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
26
25
let meter_provider = setup_meter_provider ( ) ;
26
+ global:: set_meter_provider ( meter_provider. clone ( ) ) ;
27
27
28
28
let meter = meter_provider. meter ( "user-event-test" ) ;
29
29
let c = meter
@@ -81,10 +81,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
81
81
. as_ref ( ) ,
82
82
) ;
83
83
84
- // Sleep for 1 second
85
- thread:: sleep ( Duration :: from_secs ( 1 ) ) ;
86
- println ! ( "Running..." ) ;
87
-
88
84
meter_provider. shutdown ( ) ?;
89
85
Ok ( ( ) )
90
86
}
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ tlg::define_provider!(
11
11
) ;
12
12
13
13
static ETW_PROVIDER_REGISTRANT : Once = Once :: new ( ) ;
14
+ pub ( crate ) const MAX_EVENT_SIZE : usize = 65360 ;
14
15
15
16
/// Register the ETW provider.
16
17
pub fn register ( ) {
Original file line number Diff line number Diff line change @@ -70,14 +70,25 @@ impl PushMetricsExporter for MetricsExporter {
70
70
. encode ( & mut byte_array)
71
71
. map_err ( |err| MetricsError :: Other ( err. to_string ( ) ) ) ?;
72
72
73
- let result = etw:: write ( & byte_array) ;
74
- if result != 0 {
73
+ if ( byte_array. len ( ) ) > etw:: MAX_EVENT_SIZE {
75
74
global:: handle_error ( MetricsError :: Other ( format ! (
76
- "Failed to write ETW event with error code: {}" ,
77
- result
75
+ "Exporting failed due to event size {} exceeding the maximum size of {} bytes" ,
76
+ byte_array. len( ) ,
77
+ etw:: MAX_EVENT_SIZE
78
78
) ) ) ;
79
+ } else {
80
+ let result = etw:: write ( & byte_array) ;
81
+ // TODO: Better logging/internal metrics needed here for non-failure
82
+ // case Uncomment the line below to see the exported bytes until a
83
+ // better logging solution is implemented
84
+ // println!("Exported {} bytes to ETW", byte_array.len());
85
+ if result != 0 {
86
+ global:: handle_error ( MetricsError :: Other ( format ! (
87
+ "Failed to write ETW event with error code: {}" ,
88
+ result
89
+ ) ) ) ;
90
+ }
79
91
}
80
-
81
92
Ok ( ( ) )
82
93
}
83
94
You can’t perform that action at this time.
0 commit comments