Submit an issue View all issues Source
MIR-1503

Logging verbosity defaults: server ships at Debug, runner at Warn, neither chosen deliberately

Done public
phinze phinze Opened Jul 31, 2026 Updated Aug 4, 2026

Our two long-running services run at opposite ends of the log-level range, and neither value was picked for the job it's doing.

miren server install defaults --verbosity to -vv (cli/commands/server_install.go:308), so every systemd-installed coordinator runs at Debug indefinitely. Our infra never passes the flag; this is purely the product default.

miren runner install has no verbosity option at all (cli/commands/runner_install.go:110-132), so a runner gets the bare CLI default. cli/commands/global.go:81 maps verbosity 0 to slog.LevelWarn, which is the right default for a one-shot command like miren app list but wrong for a daemon. Neither service ends up at Info.

Both ends cost something real.

At Debug, garden's coordinator wrote 20,115 journal lines in the last hour and its journals occupy 4.0G on disk, against 1,521 lines and 1.0G for a runner. That's on a box that already took a disk-pressure incident in MIR-1279 and had its disk bumped from 100 to 250GB.

At Warn, a healthy runner logs nothing about itself at all. Every Log.Info is dropped, so there is no affirmative signal that startup succeeded. During the MIR-1483 rollout the line confirming the telemetry cutover (metrics writer started │ endpoint: …) was invisible, and verifying the change meant dropping a systemd override onto all four runners to add -v. Absence of errors could not distinguish "working" from "never attempted."

Suggested direction is to give daemons their own default of Info rather than inheriting the CLI ladder, and to have server install and runner install agree. -v/-vv and the existing SIGTTIN/SIGTTOU handlers (global.go:164-171, which retune a running process without a restart) then move you off that baseline when you actually need it, which is a better tool than baking Debug into a unit file forever.

Worth planning the rollout: our infra only runs install when the unit is missing, since it lives on the boot disk and upgrades come via the autoupdate timer. Changing the default therefore only affects newly created hosts, and existing coordinators keep -vv until re-installed with --force or edited in place.