diff --git a/lib/music_library/scrobble_rules.ex b/lib/music_library/scrobble_rules.ex index c5136d40..f612618b 100644 --- a/lib/music_library/scrobble_rules.ex +++ b/lib/music_library/scrobble_rules.ex @@ -336,12 +336,17 @@ defmodule MusicLibrary.ScrobbleRules do """ def apply_all_rules do - list_enabled_rules() - |> Enum.map(fn rule -> - case apply_rule(rule) do - {:ok, count} -> {:ok, {rule.type, rule.match_value, count}} - {:error, reason} -> {:error, {rule.type, rule.match_value, reason}} - end + :telemetry.span([:music_library, :scrobble_rules, :apply_all_rules], %{}, fn -> + result = + list_enabled_rules() + |> Enum.map(fn rule -> + case apply_rule(rule) do + {:ok, count} -> {:ok, {rule.type, rule.match_value, count}} + {:error, reason} -> {:error, {rule.type, rule.match_value, reason}} + end + end) + + {result, %{scrobble_track_count: :all}} end) end @@ -362,12 +367,17 @@ defmodule MusicLibrary.ScrobbleRules do end def apply_all_rules(tracks) do - list_enabled_rules() - |> Enum.map(fn rule -> - case apply_rule(rule, tracks) do - {:ok, count} -> {:ok, {rule.type, rule.match_value, count}} - {:error, reason} -> {:error, {rule.type, rule.match_value, reason}} - end + :telemetry.span([:music_library, :scrobble_rules, :apply_all_rules], %{}, fn -> + result = + list_enabled_rules() + |> Enum.map(fn rule -> + case apply_rule(rule, tracks) do + {:ok, count} -> {:ok, {rule.type, rule.match_value, count}} + {:error, reason} -> {:error, {rule.type, rule.match_value, reason}} + end + end) + + {result, %{scrobble_track_count: Enum.count(tracks)}} end) end diff --git a/lib/music_library_web/telemetry.ex b/lib/music_library_web/telemetry.ex index 0dca6eab..3e659b02 100644 --- a/lib/music_library_web/telemetry.ex +++ b/lib/music_library_web/telemetry.ex @@ -88,6 +88,13 @@ defmodule MusicLibraryWeb.Telemetry do reporter_options: [nav: "Assets"] ), + # Scrobble Rules + summary("music_library.scrobble_rules.apply_all_rules.stop.duration", + unit: {:native, :millisecond}, + tags: [:scrobble_track_count], + reporter_options: [nav: "Scrobble Rules"] + ), + # VM Metrics summary("vm.memory.total", unit: {:byte, :megabyte}), summary("vm.total_run_queue_lengths.total"),