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
@@ -12,6 +12,25 @@ import (
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
const countLibrary = `-- name: CountLibrary :one
|
||||
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
|
||||
`
|
||||
|
||||
type CountLibraryRow struct {
|
||||
Soundtracks int64 `json:"soundtracks"`
|
||||
Songs int64 `json:"songs"`
|
||||
}
|
||||
|
||||
// Soundtracks and songs in the library, without deleted soundtracks.
|
||||
func (q *Queries) CountLibrary(ctx context.Context) (CountLibraryRow, error) {
|
||||
row := q.db.QueryRow(ctx, countLibrary)
|
||||
var i CountLibraryRow
|
||||
err := row.Scan(&i.Soundtracks, &i.Songs)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getAllSoundtracksWithSongs = `-- name: GetAllSoundtracksWithSongs :many
|
||||
SELECT
|
||||
g.id as soundtrack_id,
|
||||
|
||||
Reference in new issue
Block a user