diff --git a/lib/music_library_web/telemetry.ex b/lib/music_library_web/telemetry.ex index 9e52ab5e..cc802139 100644 --- a/lib/music_library_web/telemetry.ex +++ b/lib/music_library_web/telemetry.ex @@ -75,6 +75,46 @@ defmodule MusicLibraryWeb.Telemetry do "The time the connection spent waiting before being checked out for the query" ), + # LastFm HTTP Metrics + summary("finch.request.stop.duration", + unit: {:native, :millisecond}, + tags: [:normalized_path], + tag_values: &add_normalized_path/1, + keep: &keep_last_fm/1, + reporter_options: [ + nav: "HTTP - Last.fm" + ] + ), + summary("finch.response.stop.duration", + unit: {:native, :millisecond}, + tags: [:normalized_path], + tag_values: &add_normalized_path/1, + keep: &keep_last_fm/1, + reporter_options: [ + nav: "HTTP - Last.fm" + ] + ), + + # MusicBrainz HTTP Metrics + summary("finch.request.start.duration", + unit: {:native, :millisecond}, + tags: [:normalized_path], + tag_values: &add_normalized_path/1, + keep: &keep_musicbrainz/1, + reporter_options: [ + nav: "HTTP - MusicBrainz" + ] + ), + summary("finch.response.stop.duration", + unit: {:native, :millisecond}, + tags: [:normalized_path], + tag_values: &add_normalized_path/1, + keep: &keep_musicbrainz/1, + reporter_options: [ + nav: "HTTP - MusicBrainz" + ] + ), + # VM Metrics summary("vm.memory.total", unit: {:byte, :kilobyte}), summary("vm.total_run_queue_lengths.total"), @@ -90,4 +130,16 @@ defmodule MusicLibraryWeb.Telemetry do # {MusicLibraryWeb, :count_users, []} ] end + + defp add_normalized_path(metadata) do + Map.put(metadata, :normalized_path, URI.parse(metadata.request.path).path) + end + + defp keep_last_fm(metadata) do + metadata.request.host == "ws.audioscrobbler.com" + end + + defp keep_musicbrainz(metadata) do + metadata.request.host == "musicbrainz.org" + end end