Bug 20465 - Logfiles bei SIGHUP neu öffnen für logrotate
Summary: Logfiles bei SIGHUP neu öffnen für logrotate
Status: CLOSED FIXED
Alias: None
Product: UCS
Classification: Unclassified
Component: Virtualization - UVMM
Version: UCS 2.4
Hardware: Other Linux
: P5 normal
Target Milestone: UCS 2.4-2
Assignee: Philipp Hahn
QA Contact: Moritz Muehlenhoff
URL:
Keywords:
Depends on: 21660
Blocks:
  Show dependency treegraph
 
Reported: 2010-10-21 08:49 CEST by Philipp Hahn
Modified: 2011-04-04 15:48 CEST (History)
4 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Customer ID:
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp Hahn univentionstaff 2010-10-21 08:49:51 CEST
Derzeit loggt UVMMd sehr viel (Standardeinstellung Level Debug) nach /var/log/univention/virtual-machine-manager-daemon.log. Diese Datei wird durch logrotate regelmäßig umbenannt und komprimiert, ohne daß UVMMd seinerseits die neue Datei jemals öffnen, so daß alle folgenden Meldungen verloren gehen:
  lsof -p `pgrep -f /usr/bin/python.*univention-virtual-machine-manager-daemon` | grep /var/log
  univentio 4798 root    5w   REG              254,0 6467971  377947 /var/log/univention/virtual-machine-manager-daemon.log.1 (deleted)

In UVMMd sollte eine Möglichkeit geben, die Logfiles neu zu öffnen, z.B. durch Senden von SIGHUP. (In Python 2.6 gibt es <http://docs.python.org/library/logging.html#watched-file-handler>) Beispielcode gibt es unter <http://www.cherrypy.org/ticket/679>

Alternativ ist ein Restart möglich, allerdings ist dadurch der Daemon dann eine gewisse Zeit nicht verfügbar, bis alle Daten erneut zusammengesammelt wurden.
Comment 1 Arvid Requate univentionstaff 2010-10-27 14:31:32 CEST
Es sah für mich beim Testen des Sessionbroker-Server soaus, als würde er weiter in dvs-sessionbroker.log.1 loggen. Da der Code von UVMMd abgeleitet ist, sollte bei einer Behebung des Bugs im UVMMd kurz überprüft werden, ob das auch im Sessionbroker anzupassen ist.
Comment 2 Arvid Requate univentionstaff 2010-10-27 14:34:23 CEST
Siehe auch Bug 20296 Comment 1
Comment 3 Stefan Gohmann univentionstaff 2011-02-25 15:51:09 CET
Das sollten wir umsetzen. Wenn es aufwendiger wird, dann ist auch ein Restart in Ordnung.
Comment 4 Philipp Hahn univentionstaff 2011-02-25 19:52:28 CET
Der UVMMd öffnet seine Logfiles auf ein SIGHUP neu, SIGUSR1 sorgt für ein re-exec(self).
Eine passende logrotate-Konfigurationsdatei wird nun mitgeliefert: Da der UVMMd derzeit noch sehr viel loggt, wird das Logfile täglich rotiert und für eine Woche aufbewahrt.
Wegen Bug #20465 musste das UCR-Paket angepasst werden, um /var/log/univention/virtual-machine-manager.log von der zu weit gefassten Regel in /etc/logrotate.conf auszunehmen; dazu siehe Bug #21660.

Für die QA: Im alten Logfile wird die Meldung 'Closing logfile.' und im neuen Logfile die Meldung 'Logfile reopened.' geloggt.

svn22765, univention-virtual-machine-manager-daemon_0.9.143-1.145.201102251941

ChangeLog:
\item Die Logdatei des UVMM wird nun täglich rotiert. Im UVMM wurde dazu die Funktion ergänzt, per \emph{SIGHUP} das Schließen und neu Öffnen der Logdatei zu veranlassen (\ucsBug{18002}).
Comment 5 Stefan Gohmann univentionstaff 2011-02-25 20:16:41 CET
(In reply to comment #4)
> Der UVMMd öffnet seine Logfiles auf ein SIGHUP neu, SIGUSR1 sorgt für ein
> re-exec(self).
> Eine passende logrotate-Konfigurationsdatei wird nun mitgeliefert: Da der UVMMd
> derzeit noch sehr viel loggt, wird das Logfile täglich rotiert und für eine
> Woche aufbewahrt.

Kann dafür auch die UCR Variable log/rotate/weeks verwendet werden?`Wir haben Kunden, die Ihre Logdateien ein Jahr aufbewahren wollen / müssen.
Comment 6 Philipp Hahn univentionstaff 2011-02-28 10:01:40 CET
Die logrotate-Konfiguration wurde auf weekly und die Verwendung der UCR-Variablen log/rotate/weeks umgestellt.

svn22772, 0.9.145-1.147.201102280955

ChangeLog:
\item Die Logdatei des UVMM wird nun wöchentlich rotiert. Die Aufbewahrungsfrist kann über dir \ucsUCRV{log/rotate/weeks} konfiguriert werden. Im UVMM wurde dazu die Funktion ergänzt, per \emph{SIGHUP} das Schließen und neu Öffnen der Logdatei zu veranlassen (\ucsBug{20465}).
Comment 7 Moritz Muehlenhoff univentionstaff 2011-03-10 09:58:49 CET
Mit einem "kill -1 3731" erhalte ich die entsprechende Meldung, die /etc/logrotate.d/univention-virtual-machine-manager-daemon muss aber noch angepasst werden: Durch die Umstellung auf runit gibt es kein /var/run/uvmmd.pid mehr. Stattdessen sollte /etc/runit/univention-virtual-machine-manager-daemon/supervise/pid verwendet werden.
Comment 8 Philipp Hahn univentionstaff 2011-03-10 12:19:31 CET
Als Alternative zum vorhandenen PID-File wird nun der UVMMd per "sv HUP" zum Neu-Öffnen der Log-Files veranlasst.

svn22968, univention-virtual-machine-manager-daemon_0.9.176-1.180.201103101137

Keine Änderung am ChangeLog-Eintrag.
Comment 9 Moritz Muehlenhoff univentionstaff 2011-03-10 15:04:43 CET
Die UCR-Variable log/rotate/week wird ausgewertet und ist auf weekly umgestellt.

Ein "logrotate -f /etc/logrotate.conf" führt zu einer rotierten Logdatei mit
"2011-03-10 14:58:16,182 - uvmmd - INFO - Logfile reopened" und
"2011-03-10 14:58:16,182 - uvmmd - INFO - Closing logfile."

Changelog in Ordnung
Comment 10 Sönke Schwardt-Krummrich univentionstaff 2011-04-04 15:48:26 CEST
UCS 2.4-2 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden:
"Clone This Bug".