Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ yoke = { version = "0.7.4", features = ["derive"] }

opentelemetry = "0.27.0"
opentelemetry-http = "0.27.0"
opentelemetry-otlp = { version = "0.27.0", features = ["logs", "trace", "http-proto", "http-json"] }
opentelemetry-otlp = { version = "0.27.0", features = ["logs", "trace", "http-proto", "http-json", "reqwest-client"] }
opentelemetry-semantic-conventions = { version = "0.27.0", features = ["semconv_experimental"] }
opentelemetry_sdk = { version = "0.27.0", features = ["rt-tokio"] }

Expand Down
15 changes: 7 additions & 8 deletions crates/base/src/runtime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1320,7 +1320,6 @@ where
op_state_ref
.try_borrow::<EventMetadata>()
.map(otel::WorkerSpanAttrs::from_event_metadata)
.unwrap_or_default()
};

let inspector = self.inspector();
Expand Down Expand Up @@ -1383,7 +1382,8 @@ where
&maybe_cpu_usage_metrics_tx,
&mut accumulated_cpu_time_ns,
|| {
let _span = otel::start_span("v8.mod_evaluate", &otel_attrs);
let _span =
otel::start_span("v8.mod_evaluate", otel_attrs.as_ref());
locker.js_runtime.mod_evaluate(main_module_id)
},
))
Expand Down Expand Up @@ -1465,7 +1465,7 @@ where
&mut accumulated_cpu_time_ns,
|| {
let _span =
otel::start_span("v8.dispatch_load_event", &otel_attrs);
otel::start_span("v8.dispatch_load_event", otel_attrs.as_ref());
MaybeDenoRuntime::DenoRuntime(*locker).dispatch_load_event()
},
) {
Expand Down Expand Up @@ -1501,7 +1501,8 @@ where
&maybe_cpu_usage_metrics_tx,
&mut accumulated_cpu_time_ns,
|| {
let _span = otel::start_span("v8.dispatch_unload_event", &otel_attrs);
let _span =
otel::start_span("v8.dispatch_unload_event", otel_attrs.as_ref());
MaybeDenoRuntime::DenoRuntime(&mut locker).dispatch_unload_event()
},
) {
Expand All @@ -1526,15 +1527,12 @@ where
let has_inspector = self.inspector().is_some();
let is_user_worker = self.conf.is_user_worker();
let global_waker = self.waker.clone();

// Collect worker identity for OTLP spans.
let otel_attrs = {
let op_state = self.js_runtime.op_state();
let op_state_ref = op_state.borrow();
op_state_ref
.try_borrow::<EventMetadata>()
.map(otel::WorkerSpanAttrs::from_event_metadata)
.unwrap_or_default()
};

let mut termination_request_fut = self
Expand Down Expand Up @@ -1604,7 +1602,8 @@ where
Cow::Borrowed(waker)
};

let _poll_span = otel::start_span("v8.poll_event_loop", &otel_attrs);
let _poll_span =
otel::start_span("v8.poll_event_loop", otel_attrs.as_ref());
js_runtime.poll_event_loop(
&mut std::task::Context::from_waker(waker.as_ref()),
PollEventLoopOptions {
Expand Down
9 changes: 5 additions & 4 deletions crates/base/src/runtime/otel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ pub fn init_if_needed() {
}

/// Worker identity and custom otel attributes collected once at `run()` entry.
#[derive(Clone, Default)]
#[derive(Clone)]
pub struct WorkerSpanAttrs(Vec<KeyValue>);

impl WorkerSpanAttrs {
Expand All @@ -65,12 +65,13 @@ impl WorkerSpanAttrs {
}
}

/// Start a named span with worker attributes. Returns `None` if OTLP is not
/// configured.
/// Start a named span with worker attributes.
/// Returns `None` if OTLP is not configured or `attrs` is `None`.
pub fn start_span(
name: &'static str,
attrs: &WorkerSpanAttrs,
attrs: Option<&WorkerSpanAttrs>,
) -> Option<OtelSpanGuard> {
let attrs = attrs?;
let provider = PROVIDER.get()?.as_ref()?;
let tracer = provider.tracer("edge-runtime");
let mut span = tracer
Expand Down
Loading