summaryrefslogtreecommitdiff
path: root/internal/cli
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-16 08:47:11 +0300
committerPaul Buetow <paul@buetow.org>2026-04-16 08:47:11 +0300
commit442236f8515e761c1bd97f2cf3fd6b102bdecb64 (patch)
treedbeb4f48688f7d5bec72f858b2c4fafc1b2fa96d /internal/cli
parentedeffd05dc62c4c3d747cc41067bf4e1814f300a (diff)
Add /metrics Prometheus endpoint to daemon mode
Exposes a gauge per host tracking the Unix timestamp of the last records file update. Excluded hosts (from the excluded_host table) are labeled excluded="true" so alerting rules can filter them out. Uses manual Prometheus text format to avoid adding a new dependency. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/cli')
-rw-r--r--internal/cli/cmd_daemon.go3
1 files changed, 2 insertions, 1 deletions
diff --git a/internal/cli/cmd_daemon.go b/internal/cli/cmd_daemon.go
index 2bd74a8..111968f 100644
--- a/internal/cli/cmd_daemon.go
+++ b/internal/cli/cmd_daemon.go
@@ -25,6 +25,7 @@ func runDaemon(args []string) error {
statsDir := fs.String("stats-dir", os.Getenv("GOPRECORDS_STATS_DIR"), "Uptimed stats directory (required; env GOPRECORDS_STATS_DIR)")
listen := fs.String("listen", defaultListenFromEnv(), "TCP listen address (env GOPRECORDS_LISTEN, default :8080)")
authDB := fs.String("auth-db", "", "SQLite file for upload API keys (default: <stats-dir>/goprecords-auth.db)")
+ db := fs.String("db", os.Getenv("GOPRECORDS_DB"), "SQLite database path for excluded hosts used by /metrics (env GOPRECORDS_DB)")
if err := fs.Parse(args); err != nil {
return err
}
@@ -35,7 +36,7 @@ func runDaemon(args []string) error {
}
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
- err := daemon.Run(ctx, daemon.Config{StatsDir: *statsDir, Addr: *listen, AuthDB: *authDB})
+ err := daemon.Run(ctx, daemon.Config{StatsDir: *statsDir, Addr: *listen, AuthDB: *authDB, DB: *db})
if err != nil && !errors.Is(err, context.Canceled) {
return err
}