Expose Prometheus metrics on a separate port
Metrics are served on METRICS_PORT (default 2112, "off" to disable), never on the public port. Besides the Go runtime and process metrics this adds: - http_requests_total and http_request_duration_seconds per route pattern, from an Echo middleware. - musicserver_songs_requested_total and musicserver_songs_played_total by pick mode (random, low, classic). The mode is now stored with each queued song (migration 000006, not released yet). - Library size, sync duration, last successful sync, broken songs from the last full sync, and the database connection pool. Refs #35, #36, #37 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c62b65d7cd
commit
f79f51ea4c
28 files changed
+864
-70
No files matched your search
@@ -16,7 +16,7 @@ UPDATE queue SET ended_at = NOW()
|
||||
WHERE ended_at IS NULL;
|
||||
|
||||
-- name: SetQueueLastFetched :exec
|
||||
UPDATE queue SET last_fetched_song_uuid = $2
|
||||
UPDATE queue SET last_fetched_song_uuid = $2, last_fetched_mode = $3
|
||||
WHERE uuid = $1;
|
||||
|
||||
-- name: SetQueueCurrentSong :exec
|
||||
@@ -27,23 +27,23 @@ WHERE uuid = $1;
|
||||
-- Appends the queue's last fetched song and makes it the current song.
|
||||
-- Does nothing when no song has been fetched since the last call.
|
||||
WITH added AS (
|
||||
INSERT INTO queue_song (queue_uuid, song_no, song_uuid, soundtrack_name, song_name)
|
||||
INSERT INTO queue_song (queue_uuid, song_no, song_uuid, soundtrack_name, song_name, mode)
|
||||
SELECT q.uuid,
|
||||
(SELECT COALESCE(MAX(qs.song_no), -1) + 1 FROM queue_song qs WHERE qs.queue_uuid = q.uuid),
|
||||
s.uuid, st.soundtrack_name, s.song_name
|
||||
s.uuid, st.soundtrack_name, s.song_name, COALESCE(q.last_fetched_mode, 'unknown')
|
||||
FROM queue q
|
||||
JOIN song s ON s.uuid = q.last_fetched_song_uuid
|
||||
JOIN soundtrack st ON st.id = s.soundtrack_id
|
||||
WHERE q.uuid = $1
|
||||
RETURNING queue_uuid, song_no
|
||||
)
|
||||
UPDATE queue SET current_song = added.song_no, last_fetched_song_uuid = NULL
|
||||
UPDATE queue SET current_song = added.song_no, last_fetched_song_uuid = NULL, last_fetched_mode = NULL
|
||||
FROM added
|
||||
WHERE queue.uuid = added.queue_uuid;
|
||||
|
||||
-- name: ListQueueSongs :many
|
||||
-- The song columns are NULL when the song has been removed from the library since.
|
||||
SELECT qs.song_no, qs.song_uuid, qs.soundtrack_name, qs.song_name,
|
||||
SELECT qs.song_no, qs.song_uuid, qs.soundtrack_name, qs.song_name, qs.mode,
|
||||
s.path, s.times_played, s.soundtrack_uuid
|
||||
FROM queue_song qs
|
||||
LEFT JOIN song s ON s.uuid = qs.song_uuid
|
||||
|
||||
@@ -207,3 +207,9 @@ LEFT JOIN song s ON g.id = s.soundtrack_id
|
||||
WHERE g.deleted IS NULL
|
||||
GROUP BY g.id, g.soundtrack_name, g.times_played, g.last_played
|
||||
ORDER BY g.soundtrack_name;
|
||||
|
||||
-- name: CountLibrary :one
|
||||
-- Soundtracks and songs in the library, without deleted soundtracks.
|
||||
SELECT
|
||||
(SELECT COUNT(*) FROM soundtrack WHERE deleted IS NULL) AS soundtracks,
|
||||
(SELECT COUNT(*) FROM song s JOIN soundtrack st ON st.id = s.soundtrack_id WHERE st.deleted IS NULL) AS songs;
|
||||
Reference in new issue
Block a user