[Gelöst!] rsyslog schreibt nicht in neues logfile

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
pixelpirat
Beiträge: 158
Registriert: 05.07.2007 17:22:21

[Gelöst!] rsyslog schreibt nicht in neues logfile

Beitrag von pixelpirat » 06.04.2021 16:49:07

Hallo,

ich möchte ein paar Logfiles nicht von Samstag auf Sonntag rotieren lassen, sondern von Sonntag auf Montag. Leider funktioniert dieser rotate nicht. Ich muss jedes Mal auf der Console ein "service rsyslog restart" durchführen.

Das logfile rotiert. Aus ufw.log wird ufw.log.1 und ein neues ufw.log wird angelegt. Also Logrotate funktioniert aus meiner Sicht.
Allerdings schreibt der Syslog weiter in das neue ufw.log.1. Auf einer anderen Maschine das gleiche Problem, nur hier schreibt der syslog in beide Dateien.
Nehme ich bei weekly die 1 weg, ist alles i. O. nur nicht an dem Wochentag wo ich es gerne hätte.

Wo liegt mein Config-Fehler?

Danke für Eure Tipps im voraus.
LG Pixelpirat

Meine dazu gehörenden Config-files
In /etc/logrotate.d/ufw

Code: Alles auswählen

/var/log/ufw.log
{
        rotate 8
        weekly 1
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true
        endscript
}
In /etc/rsyslog.d/20-ufw.conf

Code: Alles auswählen

# Log kernel generated UFW log messages to file
:msg,contains,"[UFW " /var/log/ufw.log

# Uncomment the following to stop logging anything that matches the last rule.
# Doing this will stop logging kernel generated UFW log messages to the file
# normally containing kern.* messages (eg, /var/log/kern.log)
& ~
In /var/log/

Code: Alles auswählen

-rw-r----- 1 root adm 1099199  6. Apr 16:40 /var/log/ufw.log
-rw-r----- 1 root adm 8200247  6. Apr 06:52 /var/log/ufw.log.1
-
Zuletzt geändert von pixelpirat am 14.04.2021 13:59:56, insgesamt 1-mal geändert.

Benutzeravatar
Livingston
Beiträge: 1365
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: rsyslog switcht nach dem rotate nicht

Beitrag von Livingston » 06.04.2021 20:21:46

Hab mich schon lange nicht mehr mit rsyslog rumgeschlagen. Ich meine, dass rsyslog vor dem Rotieren abgeschaltet und nach dem Rotieren neu gestartet werden muss, weil sonst die Filedeskriptoren offen bleiben und weiterhin die alte(n) Datei(en) beschrieben wird/werden.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: rsyslog switcht nach dem rotate nicht

Beitrag von MSfree » 06.04.2021 20:32:24

Livingston hat geschrieben: ↑ zum Beitrag ↑
06.04.2021 20:21:46
Ich meine, dass rsyslog vor dem Rotieren abgeschaltet und nach dem Rotieren neu gestartet werden muss, weil sonst die Filedeskriptoren offen bleiben und weiterhin die alte(n) Datei(en) beschrieben wird/werden.
Es reicht, nach dem Rotieren, rsyslogd neu zu starten, und das macht postrotate in der obigen Konfigdatei mit:

Code: Alles auswählen

invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true
Wobei das bei mir etwas anders aussieht:

Code: Alles auswählen

invoke-rc.d rsyslog rotate > /dev/null
also ohne stderr-Weiterleitung und oihne das " || true".

pixelpirat
Beiträge: 158
Registriert: 05.07.2007 17:22:21

Re: rsyslog switcht nach dem rotate nicht

Beitrag von pixelpirat » 07.04.2021 11:52:14

MSfree hat geschrieben: ↑ zum Beitrag ↑
06.04.2021 20:32:24

Wobei das bei mir etwas anders aussieht:

Code: Alles auswählen

invoke-rc.d rsyslog rotate > /dev/null
also ohne stderr-Weiterleitung und oihne das " || true".
Ich habe dass jetzt auch ausprobiert. Auffällig ist, sobald ich dem parameter weekly eine Zahl hinten anstelle, funktioniert es nicht mehr. Lt. logrotate manpage soll der Eintrag so

Code: Alles auswählen

weekly 1
für Montag sein. Rotate funktioniert nur wird anscheinend Postrotate nicht ausgeführt.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: rsyslog switcht nach dem rotate nicht

Beitrag von MSfree » 07.04.2021 12:18:42

pixelpirat hat geschrieben: ↑ zum Beitrag ↑
07.04.2021 11:52:14
Auffällig ist, sobald ich dem parameter weekly eine Zahl hinten anstelle, funktioniert es nicht mehr. Lt. logrotate manpage soll der Eintrag so

Code: Alles auswählen

weekly 1
für Montag sein.
Meine Manpage sagt etwas anderes. Dort wird nicht erwähnt, daß man da noch eine Zahl anhängen darf. Weekly ist dort nur beschrieben als "rotiere, wenn die letzte Rotation mehr als 6 Tage her ist". Wenn die erste Rotation also am Mittwoch stattfand, werden auch alle folgenden Rotationen Mittwochs stattfinden, es sei denn, du schalttest den Rechner mehr als 7 Tage aus und fährst ihn dann z.B. am Montag wieder hoch, dann werden die aktuelle und alle zukünftigen Rotationen Montags durchgeführt.

pixelpirat
Beiträge: 158
Registriert: 05.07.2007 17:22:21

Re: rsyslog switcht nach dem rotate nicht

Beitrag von pixelpirat » 07.04.2021 12:28:38

Das ist auch möglich und benötigt den Value 7
weekly [weekday]
Log files are rotated once each weekday, or if the date is advanced by at least 7 days since the last
rotation (while ignoring the exact time). The weekday interpretation is following: 0 means Sunday, 1
means Monday, ..., 6 means Saturday; the special value 7 means each 7 days, irrespectively of weekday.
Defaults to 0 if the weekday argument is omitted.
Meine englischen Kenntnisse sagen mir, dass die Zahlen 0-6 für die jeweiligen Wochentage stehen und die Zahl 7 für 7 Tage nach dem letzten Rotate.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: rsyslog switcht nach dem rotate nicht

Beitrag von MSfree » 07.04.2021 12:59:34

pixelpirat hat geschrieben: ↑ zum Beitrag ↑
07.04.2021 12:28:38
...
Meine englischen Kenntnisse sagen mir, dass die Zahlen 0-6 für die jeweiligen Wochentage stehen und die Zahl 7 für 7 Tage nach dem letzten Rotate.
Da hast du wohl recht.

Debian Stretch:

Code: Alles auswählen

man logrotate:
       weekly Log files are rotated if the current weekday is less than the weekday of the last rotation or  if  more
              than a week has passed since the last rotation. This is normally the same as rotating logs on the first
              day of the week, but it works better if logrotate is not run every night.
Debian Bullseye:

Code: Alles auswählen

man logrotate:
       weekly [weekday]
              Log files are rotated once each weekday, or if the date is advanced by at least 7 days since  the  last
              rotation  (while  ignoring the exact time).  The weekday interpretation is following: 0 means Sunday, 1
              means Monday, ..., 6 means Saturday; the special value 7 means each 7 days, irrespectively of  weekday.
              Defaults to 0 if the weekday argument is omitted.
Debian Buster habe ich gerade nicht in Reichweite.

Da hat sich zwischen Stretch und Bullseye wohl etwas verändert. Mit anderen Worten, ältere Versionen von logrotate kennen die Angabe des Wochentags noch nicht.

pixelpirat
Beiträge: 158
Registriert: 05.07.2007 17:22:21

Re: rsyslog switcht nach dem rotate nicht

Beitrag von pixelpirat » 08.04.2021 08:06:14

Jetzt bin ich einen Schritt weiter gekommen.

rsyslog startet mi dem Parameter -iNONE, d. h. es wird kein PID-File in /run angelegt. Im rotate Statement in /etc/init.d/ wird jedoch dieser Befehl ausgeführt
/etc/init.d/rsyslog rotate meldet

Code: Alles auswählen

 Closing open files: rsyslogd failed!
ps aux | grep rsyslog bringt

Code: Alles auswählen

root     3130095  0.0  0.0 220740  3904 ?        Ssl  07:12   0:00 /usr/sbin/rsyslogd -n -iNONE
In der /etc/init.d/rsyslogd habe ich jetzt erst einmal zum Testen die Zeile

Code: Alles auswählen

start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE --exec $DAEMON
auf

Code: Alles auswählen

start-stop-daemon --stop --signal HUP --quiet --exec $DAEMON
gekürzt

Vielleicht weiß jemand wo ich den Parameter -i NONE abstellen kann. Das wäre das einfachste.
Es gibt keine /etc/default/syslog oder rsyslog

pixelpirat
Beiträge: 158
Registriert: 05.07.2007 17:22:21

Re: [Gelöst!] rsyslog schreibt nicht in neues logfile

Beitrag von pixelpirat » 14.04.2021 14:02:28

Das Problem ist gelöst.

Durch die Änderung in /etc/init.d/rsyslog

Code: Alles auswählen

do_rotate() {
#       start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE --exec $DAEMON
        start-stop-daemon --stop --signal HUP --quiet --exec $DAEMON
}
läuft es jetzt rund.

Antworten