Wie logrotate ich mit systemd?

11

Ich führe eine Knoten-App mit systemd mit einer Unit-Datei aus. Das Apps-Protokoll kann mit angezeigt werden, journalctl -u example.comaber das Protokoll wird irgendwann abgeschnitten, wodurch der Verlauf gelöscht wird (den ich zum Debuggen benötige).

Wie konfiguriere ich die Protokollrotation mit systemd so, dass meine App-Protokolle usw. gespeichert werden example.com.log.1, example.com.log.2damit ich den Verlauf meiner App abfragen kann?

Dies ist meine Einheitendatei:

ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
htor
quelle
1
Bitte geben Sie Ihre systemd-Version sowie Ihr Betriebssystem und Ihre Version an.
Mark Stosberg
1
Überprüfen Sie man journald.conf, um Optionen zu überprüfen, die den Speicherplatz des systemd-Journals steuern. Wenn Sie noch eine Frage haben, posten Sie den Inhalt Ihrer /etc/systemd/journald.conf.
Mark Stosberg

Antworten:

6

Speicher erhöhen

Wenn Sie auf der Festplatte speichern, können Sie den durch Ändern SystemMaxUseund / oder verwendeten Speicherplatz erhöhen SystemKeepFree. Wenn mehr Speicherplatz vorhanden ist, können mehr Einträge gespeichert werden.

Standardmäßig beträgt das maximale Nutzungslimit ( SystemMaxUse) 10% des Dateisystems und der minimale SystemKeepFreeWert für freien Speicherplatz ( ) 15% - obwohl beide auf 4G begrenzt sind.

Journalrotation

Die Journale sollten automatisch gedreht werden, wenn sie den SystemMaxFileSizeWert erreichen, und die Anzahl der Journale wird von gesteuert SystemMaxFiles. Wenn Sie eine zeitbasierte Rotation bevorzugen, können Sie a festlegen MaxFileSec, um die maximale Zeit festzulegen, zu der Einträge in einem einzelnen Journal gespeichert werden.

Hinweis zum Speicherort / -typ

Mit journald können Sie die Journaleinträge entweder im Speicher ( Storage=volatile) oder auf der Festplatte ( Storage=persistent) speichern . Bei dem oben Gesagten wird davon ausgegangen, dass Sie Journale auf der Festplatte speichern. Ist dies nicht der Fall, muss "System" in den obigen Variablen durch "Runtime" ersetzt werden.

Weitere Details finden Sie in man journald.conf.

Alternative - Journaleinträge weitergeben

Wenn Sie bereits mit dem herkömmlichen SYSLOG-Dämon vertraut sind, können Sie die Journalereignisse weitergeben, indem Sie die ForwardToSyslogOption (die die Nachrichten sofort weiterleitet) festlegen oder den Syslog-Dämon wie einen Journal-Client bahaven und die Protokolle selbst abrufen.

DougC
quelle