Container events are Ham Lab's own record, not Docker's short memory

docker events is a live stream with a small in-memory backlog: ask for thirty days and you
get a few minutes, and a daemon restart loses the lot. That is why Dockhand kept its own
copy. A watcher now follows the stream and appends lifecycle events to a ring beside the
config, flushed every thirty seconds, so the question of what happened to a container last
week has an answer. Health-check exec events are excluded — three per probe, thousands a
day, and the health panel says it better.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Mitchell-Johnson
2026-09-24 19:55:36 -07:00
co-authored by Claude Opus 5
parent b3e1c495f0
commit a70f3e2ed2
5 changed files with 239 additions and 66 deletions
+2
View File
@@ -69,6 +69,7 @@ type Server struct {
storage *storage.Manager
space *space.Manager
update updateState
events eventLog
kvms kvmProxies
fsLocal files.FS
fsSudo files.FS // nil without passwordless sudo
@@ -138,6 +139,7 @@ func New(cfg *config.Config, sessions *auth.Sessions, mgr *term.Manager, col *me
go s.keepFleetInStep()
}
go s.watchForUpdates(context.Background())
go s.watchDockerEvents(context.Background())
m := http.NewServeMux()
m.HandleFunc("GET /healthz", func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(204) })