From 3214f12e553b39b01a1624e76f9a3c812392db35 Mon Sep 17 00:00:00 2001 From: snek Date: Mon, 18 Nov 2024 10:12:48 +0100 Subject: [PATCH 1/2] feat: events for ng --- Cargo.toml | 2 +- cli/tools/run/mod.rs | 11 ++++++++--- ext/telemetry/lib.rs | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 712bdae8b8904e..194a0b5d1e4056 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -217,7 +217,7 @@ zstd = "=0.12.4" opentelemetry = "0.27.0" opentelemetry-http = "0.27.0" -opentelemetry-otlp = { version = "0.27.0", features = ["logs", "http-proto", "http-json"] } +opentelemetry-otlp = { version = "0.27.0", features = ["logs", "http-proto", "http-json", "populate-logs-event-name"] } opentelemetry-semantic-conventions = { version = "0.27.0", features = ["semconv_experimental"] } opentelemetry_sdk = "0.27.0" diff --git a/cli/tools/run/mod.rs b/cli/tools/run/mod.rs index d3f7b093d4cb29..583f9263caceae 100644 --- a/cli/tools/run/mod.rs +++ b/cli/tools/run/mod.rs @@ -77,9 +77,14 @@ pub async fn run_script( let worker_factory = factory.create_cli_main_worker_factory().await?; let mut worker = worker_factory .create_main_worker(mode, main_module.clone()) - .await?; - - let exit_code = worker.run().await?; + .await + .inspect_err(|e| { + deno_telemetry::report_event("deno_boot_failure", e) + })?; + + let exit_code = worker.run().await.inspect_err(|e| { + deno_telemetry::report_event("deno_uncaught_exception", e) + })?; Ok(exit_code) } diff --git a/ext/telemetry/lib.rs b/ext/telemetry/lib.rs index 816e8387433706..029371fa6f3c07 100644 --- a/ext/telemetry/lib.rs +++ b/ext/telemetry/lib.rs @@ -790,6 +790,25 @@ fn op_otel_log( logs.emit(&mut log_record, instrumentation_scope); } +pub fn report_event(name: &'static str, data: impl std::fmt::Display) { + let Some(Processors { logs, .. }) = OTEL_PROCESSORS.get() else { + return; + }; + let Some(instrumentation_scope) = BUILT_IN_INSTRUMENTATION_SCOPE.get() else { + return; + }; + + let mut log_record = LogRecord::default(); + + log_record.set_observed_timestamp(SystemTime::now()); + log_record.set_event_name(name); + log_record.set_severity_number(Severity::Trace); + log_record.set_severity_text(Severity::Trace.name()); + log_record.set_body(format!("{data}").into()); + + logs.emit(&mut log_record, instrumentation_scope); +} + fn owned_string<'s>( scope: &mut v8::HandleScope<'s>, string: v8::Local<'s, v8::String>, From fc32ccfe86e0b4631828eb50f7d9c16a5f9df53b Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Thu, 12 Dec 2024 12:25:53 -0800 Subject: [PATCH 2/2] Apply suggestions from code review Signed-off-by: Bert Belder --- cli/tools/run/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/tools/run/mod.rs b/cli/tools/run/mod.rs index 583f9263caceae..c22632a0e591bc 100644 --- a/cli/tools/run/mod.rs +++ b/cli/tools/run/mod.rs @@ -79,11 +79,11 @@ pub async fn run_script( .create_main_worker(mode, main_module.clone()) .await .inspect_err(|e| { - deno_telemetry::report_event("deno_boot_failure", e) + deno_telemetry::report_event("boot_failure", e) })?; let exit_code = worker.run().await.inspect_err(|e| { - deno_telemetry::report_event("deno_uncaught_exception", e) + deno_telemetry::report_event("uncaught_exception", e) })?; Ok(exit_code) }