From d461abc3f56034ca421d9f672aede96b68ffcdb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesko=20Ansch=C3=BCtz?= Date: Sun, 22 Mar 2026 21:13:23 +0100 Subject: [PATCH] Reduziere SD-Karten-Schreiblast: leiser Agent + journald volatile - Agent loggt im Normalfall nichts mehr (kein heartbeat_tick, kein mqtt_heartbeat_sent, kein status_report_sent) - nur noch Fehler und Zustandsaenderungen werden geloggt - Ansible: journald auf Storage=volatile + RuntimeMaxUse=20M (RAM-only, automatisches Verdraengen alter Eintraege bei vollem Puffer) Co-Authored-By: Claude Sonnet 4.6 --- .../roles/signage_player/handlers/main.yml | 6 +++++ ansible/roles/signage_player/tasks/main.yml | 22 +++++++++++++++++++ player/agent/internal/app/app.go | 5 ----- player/agent/internal/app/app_test.go | 1 - 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/ansible/roles/signage_player/handlers/main.yml b/ansible/roles/signage_player/handlers/main.yml index 3db2938..e41c686 100644 --- a/ansible/roles/signage_player/handlers/main.yml +++ b/ansible/roles/signage_player/handlers/main.yml @@ -4,6 +4,12 @@ daemon_reload: true become: true +- name: Restart journald + ansible.builtin.systemd: + name: systemd-journald + state: restarted + become: true + - name: Restart morz-agent ansible.builtin.systemd: name: morz-agent diff --git a/ansible/roles/signage_player/tasks/main.yml b/ansible/roles/signage_player/tasks/main.yml index cc616cc..822a950 100644 --- a/ansible/roles/signage_player/tasks/main.yml +++ b/ansible/roles/signage_player/tasks/main.yml @@ -50,6 +50,28 @@ - Reload systemd - Restart morz-agent +- name: Ensure journald drop-in directory exists + ansible.builtin.file: + path: /etc/systemd/journald.conf.d + state: directory + owner: root + group: root + mode: "0755" + become: true + +- name: Configure journald volatile storage (RAM only, schont SD-Karte) + ansible.builtin.copy: + dest: /etc/systemd/journald.conf.d/morz-volatile.conf + content: | + [Journal] + Storage=volatile + RuntimeMaxUse=20M + owner: root + group: root + mode: "0644" + become: true + notify: Restart journald + - name: Enable and start morz-agent ansible.builtin.systemd: name: morz-agent diff --git a/player/agent/internal/app/app.go b/player/agent/internal/app/app.go index 03bed3e..605f99f 100644 --- a/player/agent/internal/app/app.go +++ b/player/agent/internal/app/app.go @@ -185,13 +185,9 @@ func (a *App) emitHeartbeat() { connectivity := a.serverConnectivity a.mu.Unlock() - a.logger.Printf("event=heartbeat_tick screen_id=%s", a.Config.ScreenID) - if a.mqttPub != nil { if err := a.mqttPub.SendHeartbeat(string(status), string(connectivity), now); err != nil { a.logger.Printf("event=mqtt_heartbeat_failed screen_id=%s error=%v", a.Config.ScreenID, err) - } else { - a.logger.Printf("event=mqtt_heartbeat_sent screen_id=%s", a.Config.ScreenID) } } } @@ -233,5 +229,4 @@ func (a *App) reportStatus(ctx context.Context) { a.consecutiveReportFailures = 0 a.serverConnectivity = ConnectivityOnline a.mu.Unlock() - a.logger.Printf("event=status_report_sent screen_id=%s", a.Config.ScreenID) } diff --git a/player/agent/internal/app/app_test.go b/player/agent/internal/app/app_test.go index cec16c2..c463ba8 100644 --- a/player/agent/internal/app/app_test.go +++ b/player/agent/internal/app/app_test.go @@ -92,7 +92,6 @@ func TestAppRunUpdatesHealthAndLogsStructuredEvents(t *testing.T) { for _, needle := range []string{ "event=agent_configured", "screen_id=info01-dev", - "event=heartbeat_tick", "event=agent_stopped", } { if !strings.Contains(logs, needle) {