feat: log update job lifecycle on master and agent #21

Open
opened 2026-10-12 18:21:15 +00:00 by shcizo · 0 comments
Owner

Beskrivning

Ett lyckat Update-jobb syns i dag bara i UI:t (Jobs-sidan) och i tabellen update_jobs. Varken master eller agent skriver något i sina containerloggar när ett jobb skapas, startar eller blir klart. Det enda som loggas är varningar på felvägar. Den som läser docker service logs / docker logs ser alltså inte att en service har uppdaterats, och loggarna går inte att korrelera med andra händelser på maskinen.

Nuvarande läge

Jobbrelaterade loggrader i dag (bara Warn):

  • internal/master/jobs/jobs.go: job_start_failed
  • internal/master/hub/jobs.go: job_progress_ignored, job_result_ignored
  • internal/master/hub/hub.go: known_job_not_numeric
  • internal/agent/conn/conn.go: master_connected (antal kända jobb)

Inget Info för skapat, startat eller avslutat jobb, varken på master eller agent.

Förslag

Logga med samma slog-stil som resten (snake_case-nycklar):

Master

  • job_created: job_id, service_id, service (DisplayName), agent, from_ref, to_ref, trigger, requested_by (OIDC-subjektet), i jobs.Trigger.
  • job_refused: samma fält plus reason, när Updatable vägrar eller jobbet failar direkt (offline, too old, revoked).
  • job_finished: job_id, service, agent, status, duration, error, när FinishJob faktiskt applicerar ett resultat. Logga inte en gång till när ett omskickat resultat bara bekräftas på nytt.
  • job_lost / jobs_failed_on_revoke: när rekonsilieringen eller en återkallning failar jobb.

Agent

  • job_started: job_id, kind, service, ref.
  • job_finished: job_id, status, duration, error, plus den upplösta digesten (to_ref med @sha256).

Kommandots output (docker compose pull/up) loggas inte, eftersom den redan finns i jobbloggen i UI:t. Gränsen på 128 KiB gäller där.

Tester

Fånga loggarna med en slog.Handler som skriver till en buffer i de befintliga testerna för jobs, hub och updater, och kontrollera att varje händelse loggas exakt en gång. Det gäller också att ett omskickat resultat inte ger en andra job_finished.

Scope

  • Ingår: livscykelloggar för jobb på master och agent.
  • Ingår inte: notiser till externa kanaler (#12), revisionsvy i UI:t och metrics.
## Beskrivning Ett lyckat Update-jobb syns i dag bara i UI:t (Jobs-sidan) och i tabellen `update_jobs`. Varken master eller agent skriver något i sina containerloggar när ett jobb skapas, startar eller blir klart. Det enda som loggas är varningar på felvägar. Den som läser `docker service logs` / `docker logs` ser alltså inte att en service har uppdaterats, och loggarna går inte att korrelera med andra händelser på maskinen. ## Nuvarande läge Jobbrelaterade loggrader i dag (bara `Warn`): - `internal/master/jobs/jobs.go`: `job_start_failed` - `internal/master/hub/jobs.go`: `job_progress_ignored`, `job_result_ignored` - `internal/master/hub/hub.go`: `known_job_not_numeric` - `internal/agent/conn/conn.go`: `master_connected` (antal kända jobb) Inget `Info` för skapat, startat eller avslutat jobb, varken på master eller agent. ## Förslag Logga med samma slog-stil som resten (snake_case-nycklar): **Master** - `job_created`: `job_id`, `service_id`, `service` (DisplayName), `agent`, `from_ref`, `to_ref`, `trigger`, `requested_by` (OIDC-subjektet), i `jobs.Trigger`. - `job_refused`: samma fält plus `reason`, när `Updatable` vägrar eller jobbet failar direkt (offline, too old, revoked). - `job_finished`: `job_id`, `service`, `agent`, `status`, `duration`, `error`, när `FinishJob` faktiskt applicerar ett resultat. Logga inte en gång till när ett omskickat resultat bara bekräftas på nytt. - `job_lost` / `jobs_failed_on_revoke`: när rekonsilieringen eller en återkallning failar jobb. **Agent** - `job_started`: `job_id`, `kind`, `service`, `ref`. - `job_finished`: `job_id`, `status`, `duration`, `error`, plus den upplösta digesten (`to_ref` med `@sha256`). Kommandots output (`docker compose pull/up`) loggas **inte**, eftersom den redan finns i jobbloggen i UI:t. Gränsen på 128 KiB gäller där. ## Tester Fånga loggarna med en `slog.Handler` som skriver till en buffer i de befintliga testerna för `jobs`, `hub` och `updater`, och kontrollera att varje händelse loggas exakt en gång. Det gäller också att ett omskickat resultat inte ger en andra `job_finished`. ## Scope - Ingår: livscykelloggar för jobb på master och agent. - Ingår inte: notiser till externa kanaler (#12), revisionsvy i UI:t och metrics.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shcizo/package-updater#21