diff --git a/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/plugin_handler.ex b/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/plugin_handler.ex index dfc94c12..9eb3fea5 100644 --- a/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/plugin_handler.ex +++ b/instrumentation/opentelemetry_oban/lib/opentelemetry_oban/plugin_handler.ex @@ -1,4 +1,6 @@ defmodule OpentelemetryOban.PluginHandler do + require OpenTelemetry.Tracer, as: Tracer + alias OpenTelemetry.Span @tracer_id __MODULE__ @@ -41,11 +43,12 @@ defmodule OpentelemetryOban.PluginHandler do @tracer_id, "#{plugin} process", metadata, - %{} + %{attributes: %{"oban.plugin" => plugin}} ) end def handle_plugin_stop(_event, _measurements, metadata, _config) do + Tracer.set_attributes(end_span_plugin_attrs(metadata)) OpentelemetryTelemetry.end_telemetry_span(@tracer_id, metadata) end @@ -63,4 +66,24 @@ defmodule OpentelemetryOban.PluginHandler do OpentelemetryTelemetry.end_telemetry_span(@tracer_id, metadata) end + + defp end_span_plugin_attrs(%{plugin: Oban.Plugins.Cron} = metadata) do + %{jobs_count: length(metadata[:jobs])} + end + + defp end_span_plugin_attrs(%{plugin: Oban.Plugins.Gossip} = metadata) do + Map.take(metadata, [:gossip_count]) + end + + defp end_span_plugin_attrs(%{plugin: Oban.Plugins.Lifeline} = metadata) do + Map.take(metadata, [:discarded_count, :rescued_count]) + end + + defp end_span_plugin_attrs(%{plugin: Oban.Plugins.Pruner} = metadata) do + Map.take(metadata, [:pruned_count]) + end + + defp end_span_plugin_attrs(_) do + %{} + end end