opentelemetry-erlang-contrib icon indicating copy to clipboard operation
opentelemetry-erlang-contrib copied to clipboard

opentelemetry_oban: Add Attribute for Time Spent in Queue

Open bradschwartz opened this issue 8 months ago • 1 comments

Is your feature request related to a problem? Please describe.

Something I'm interesting in keeping track of is how much time a job has spent waiting in the queue since being scheduled. I would be able to use this as an indicator to know if my workers are taking longer than typical to process jobs.

Describe the solution you'd like

I would just add a new attribute in the handle_job_start function here.

Something like:

diff --git a/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/job_handler.ex b/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/job_handler.ex
index 8d14f78..b31a989 100644
--- a/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/job_handler.ex
+++ b/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/job_handler.ex
@@ -70,7 +70,8 @@ defmodule OpentelemetryOban.JobHandler do
       :"oban.job.attempt" => attempt,
       :"oban.job.max_attempts" => max_attempts,
       :"oban.job.inserted_at" => DateTime.to_iso8601(inserted_at),
-      :"oban.job.scheduled_at" => DateTime.to_iso8601(scheduled_at)
+      :"oban.job.scheduled_at" => DateTime.to_iso8601(scheduled_at),
+      :"oban.job.queue_time_ms" => DateTime.diff(DateTime.utc_now(), scheduled_at, :millisecond)
     }
 
     span_name = "#{worker} process"

Describe alternatives you've considered Continue to just calculate and add this attribute by hand manually.

Additional context Add any other context or screenshots about the feature request here.

bradschwartz avatar Mar 06 '25 19:03 bradschwartz