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
@@ -32,6 +32,26 @@ func TestLoadDefaults(t *testing.T) {
|
||||
assert.Equal(t, DefaultReleasesURL, cfg.ReleasesURL)
|
||||
assert.Empty(t, cfg.TrustedProxies)
|
||||
assert.Empty(t, cfg.CORSAllowedOrigins)
|
||||
assert.Equal(t, DefaultMetricsPort, cfg.MetricsPort)
|
||||
}
|
||||
|
||||
func TestLoadMetricsPort(t *testing.T) {
|
||||
values := validEnv()
|
||||
values["METRICS_PORT"] = "9100"
|
||||
cfg, err := load(env(values))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 9100, cfg.MetricsPort)
|
||||
|
||||
values["METRICS_PORT"] = "off"
|
||||
cfg, err = load(env(values))
|
||||
require.NoError(t, err)
|
||||
assert.Zero(t, cfg.MetricsPort)
|
||||
|
||||
for _, invalid := range []string{"abc", "0", "70000", "-1", "OFF"} {
|
||||
values["METRICS_PORT"] = invalid
|
||||
_, err = load(env(values))
|
||||
assert.ErrorContains(t, err, "METRICS_PORT", invalid)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadMissingRequired(t *testing.T) {
|
||||
|
||||
Reference in new issue
Block a user