From 26838a3b467b7446714d2f2ddd1c07b95e9ec59b Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 13 Feb 2025 20:55:01 +0000 Subject: [PATCH 1/2] otlp dependency updates Signed-off-by: Simon Davies --- Cargo.lock | 179 ++++++++++++++---- src/hyperlight_host/Cargo.toml | 10 +- .../examples/otlp_tracing/main.rs | 38 ++-- 3 files changed, 173 insertions(+), 54 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1883325de..559ed652c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -174,8 +174,8 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper 1.0.1", - "tower 0.5.1", + "sync_wrapper", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -195,7 +195,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper", "tower-layer", "tower-service", ] @@ -889,9 +889,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", @@ -1153,7 +1153,7 @@ dependencies = [ "uuid", "vmm-sys-util", "windows", - "windows-result", + "windows-result 0.3.0", "windows-sys 0.59.0", "windows-version", ] @@ -1374,6 +1374,12 @@ dependencies = [ "hashbrown 0.15.1", ] +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + [[package]] name = "is-terminal" version = "0.4.13" @@ -1742,32 +1748,48 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "opentelemetry" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab70038c28ed37b97d8ed414b6429d343a8bbf44c9f79ec854f3a643029ba6d7" +checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" dependencies = [ "futures-core", "futures-sink", "js-sys", "pin-project-lite", - "thiserror 1.0.69", + "thiserror 2.0.11", + "tracing", +] + +[[package]] +name = "opentelemetry-http" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry", + "reqwest", "tracing", ] [[package]] name = "opentelemetry-otlp" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" +checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" dependencies = [ "async-trait", "futures-core", "http", "opentelemetry", + "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", "prost", - "thiserror 1.0.69", + "reqwest", + "thiserror 2.0.11", "tokio", "tonic", "tracing", @@ -1775,9 +1797,9 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6" +checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" dependencies = [ "opentelemetry", "opentelemetry_sdk", @@ -1787,15 +1809,15 @@ dependencies = [ [[package]] name = "opentelemetry-semantic-conventions" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc1b6902ff63b32ef6c489e8048c5e253e2e4a803ea3ea7e783914536eb15c52" +checksum = "2fb3a2f78c2d55362cd6c313b8abedfbc0142ab3c2676822068fd2ab7d51f9b7" [[package]] name = "opentelemetry_sdk" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "231e9d6ceef9b0b2546ddf52335785ce41252bc7474ee8ba05bfad277be13ab8" +checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" dependencies = [ "async-trait", "futures-channel", @@ -1806,7 +1828,7 @@ dependencies = [ "percent-encoding", "rand 0.8.5", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -2216,6 +2238,43 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower 0.5.2", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + [[package]] name = "rust-embed" version = "8.5.0" @@ -2416,6 +2475,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "serde_yaml" version = "0.9.34+deprecated" @@ -2590,17 +2661,14 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -2748,9 +2816,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -2845,14 +2913,15 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper", + "tokio", "tower-layer", "tower-service", ] @@ -2941,9 +3010,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053" +checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" dependencies = [ "js-sys", "once_cell", @@ -3151,6 +3220,18 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.95" @@ -3258,8 +3339,8 @@ checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" dependencies = [ "windows-implement", "windows-interface", - "windows-result", - "windows-strings", + "windows-result 0.3.0", + "windows-strings 0.3.0", "windows-targets 0.53.0", ] @@ -3285,6 +3366,26 @@ dependencies = [ "syn", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.3.0" @@ -3294,6 +3395,16 @@ dependencies = [ "windows-targets 0.53.0", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-strings" version = "0.3.0" diff --git a/src/hyperlight_host/Cargo.toml b/src/hyperlight_host/Cargo.toml index 6a12413ac..692389d04 100644 --- a/src/hyperlight_host/Cargo.toml +++ b/src/hyperlight_host/Cargo.toml @@ -94,11 +94,11 @@ env_logger = "0.11.6" tracing-forest = { version = "0.1.6", features = ["uuid", "chrono", "smallvec", "serde", "env-filter"] } tracing = "0.1.41" tracing-subscriber = {version = "0.3.19", features = ["std", "env-filter"]} -tracing-opentelemetry = "0.28.0" -opentelemetry = "0.27.1" -opentelemetry-otlp = { version = "0.27.0", features = ["default"] } -opentelemetry-semantic-conventions = "0.27.0" -opentelemetry_sdk = { version = "0.27.1", features = ["rt-tokio"] } +tracing-opentelemetry = "0.29.0" +opentelemetry = "0.28" +opentelemetry-otlp = { version = "0.28", features = ["default", "grpc-tonic"] } +opentelemetry-semantic-conventions = "0.28" +opentelemetry_sdk = { version = "0.28", features = ["rt-tokio"] } tokio = { version = "1.43.0", features = ["full"] } criterion = "0.5.1" tracing-chrome = "0.7.2" diff --git a/src/hyperlight_host/examples/otlp_tracing/main.rs b/src/hyperlight_host/examples/otlp_tracing/main.rs index f827f320a..102544b6a 100644 --- a/src/hyperlight_host/examples/otlp_tracing/main.rs +++ b/src/hyperlight_host/examples/otlp_tracing/main.rs @@ -15,6 +15,8 @@ limitations under the License. */ use hyperlight_common::flatbuffer_wrappers::function_types::{ParameterValue, ReturnType}; +//use opentelemetry_sdk::resource::ResourceBuilder; +use opentelemetry_sdk::trace::SdkTracerProvider; use rand::Rng; use tracing::{span, Level}; use tracing_opentelemetry::OpenTelemetryLayer; @@ -31,13 +33,13 @@ use hyperlight_host::sandbox_state::sandbox::EvolvableSandbox; use hyperlight_host::sandbox_state::transition::Noop; use hyperlight_host::{GuestBinary, MultiUseSandbox, Result as HyperlightResult}; use hyperlight_testing::simple_guest_as_string; -use opentelemetry::global::{self, shutdown_tracer_provider}; +use opentelemetry::global; use opentelemetry::trace::TracerProvider; use opentelemetry::KeyValue; use opentelemetry_otlp::{SpanExporter, WithExportConfig}; -use opentelemetry_sdk::runtime::Tokio; -use opentelemetry_sdk::{trace, Resource}; -use opentelemetry_semantic_conventions::attribute::{SERVICE_NAME, SERVICE_VERSION}; +//use opentelemetry_sdk::runtime::Tokio; +use opentelemetry_sdk::Resource; +use opentelemetry_semantic_conventions::attribute::SERVICE_VERSION; use tracing_subscriber::EnvFilter; use uuid::Uuid; @@ -51,23 +53,30 @@ fn fn_writer(_msg: String) -> HyperlightResult { #[tokio::main] async fn main() -> Result<(), Box> { - init_tracing_subscriber(ENDPOINT_ADDR)?; + let provider = init_tracing_subscriber(ENDPOINT_ADDR)?; + + run_example(true)?; + + provider.shutdown()?; + + Ok(()) - Ok(run_example(true)?) } -fn init_tracing_subscriber(addr: &str) -> Result<(), Box> { +fn init_tracing_subscriber(addr: &str) -> Result> { let exporter = SpanExporter::builder() .with_tonic() .with_endpoint(addr) .build()?; - let provider = trace::TracerProvider::builder() - .with_resource(Resource::new(vec![ - KeyValue::new(SERVICE_NAME, "hyperlight_otel_example"), - KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")), - ])) - .with_batch_exporter(exporter, Tokio) + let version = KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")); + let resource = Resource::builder().with_service_name( "hyperlight_otel_example").with_attribute( + version + ).build(); + + let provider = opentelemetry_sdk::trace::SdkTracerProvider::builder() + .with_resource(resource) + .with_batch_exporter(exporter) .build(); global::set_tracer_provider(provider.clone()); @@ -87,7 +96,7 @@ fn init_tracing_subscriber(addr: &str) -> Result<(), Box HyperlightResult<()> { @@ -199,7 +208,6 @@ fn run_example(wait_input: bool) -> HyperlightResult<()> { let result = join_handle.join(); assert!(result.is_ok()); } - shutdown_tracer_provider(); Ok(()) } From 12e1d990f1135fcec6a35b349653e797ead498bc Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Mon, 17 Feb 2025 09:58:39 +0000 Subject: [PATCH 2/2] fix formatting Signed-off-by: Simon Davies --- .../examples/otlp_tracing/main.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/hyperlight_host/examples/otlp_tracing/main.rs b/src/hyperlight_host/examples/otlp_tracing/main.rs index 102544b6a..ccddc3626 100644 --- a/src/hyperlight_host/examples/otlp_tracing/main.rs +++ b/src/hyperlight_host/examples/otlp_tracing/main.rs @@ -33,9 +33,8 @@ use hyperlight_host::sandbox_state::sandbox::EvolvableSandbox; use hyperlight_host::sandbox_state::transition::Noop; use hyperlight_host::{GuestBinary, MultiUseSandbox, Result as HyperlightResult}; use hyperlight_testing::simple_guest_as_string; -use opentelemetry::global; use opentelemetry::trace::TracerProvider; -use opentelemetry::KeyValue; +use opentelemetry::{global, KeyValue}; use opentelemetry_otlp::{SpanExporter, WithExportConfig}; //use opentelemetry_sdk::runtime::Tokio; use opentelemetry_sdk::Resource; @@ -60,21 +59,23 @@ async fn main() -> Result<(), Box> { provider.shutdown()?; Ok(()) - } -fn init_tracing_subscriber(addr: &str) -> Result> { +fn init_tracing_subscriber( + addr: &str, +) -> Result> { let exporter = SpanExporter::builder() .with_tonic() .with_endpoint(addr) .build()?; let version = KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")); - let resource = Resource::builder().with_service_name( "hyperlight_otel_example").with_attribute( - version - ).build(); + let resource = Resource::builder() + .with_service_name("hyperlight_otel_example") + .with_attribute(version) + .build(); - let provider = opentelemetry_sdk::trace::SdkTracerProvider::builder() + let provider = opentelemetry_sdk::trace::SdkTracerProvider::builder() .with_resource(resource) .with_batch_exporter(exporter) .build();