Shoutcast: Logrotate

Status
Für weitere Antworten geschlossen.

mratix

Benutzer
Hallo zusammen,

es geht um die Logfile-Rotation von mehreren Shoutcast Servern.

Die Init-scripte liegen in:
/etc/init.d/shoutcast-1234
/etc/init.d/shoutcast-3456
/etc/init.d/shoutcast-5678
usw.

Logfiles werden geschrieben nach:
/var/log/shoutcast/1234.log
/var/log/shoutcast/3456.log
usw.

und die generierten PID's der Init's liegen unter:
/var/run/shoutcast-1234.pid
/var/run/shoutcast-3456.pid
usw.

derzeite /etc/logrotate.d/shoutcast sieht so aus:
Code:
/var/log/shoutcast/[B]*.log[/B]
{
# prerotate
# endscript
weekly
size 3M
rotate 6
compress
delaycompress # nimm die naechste
notifempty
missingok
create 660 radio radio # recreate new
# postrotate
#  /usr/bin/kill -HUP [B]<PID>[/B] 2> /dev/null || : # flush logs, close and reopen
# endscript
}

OK, jetzt brauche ich euere Hilfe :)
- Wie muss der Aufruf hinsichtlich
Code:
/usr/bin/kill -HUP <PID> 2> /dev/null || :
erfolgen, um alle Server abzuarbeiten?
- Wie lese ich die PID's aus den Files und übergebe sie an Variable <PID>?
- Das ganze HUP-Signal bzw. die Sequenz gehört ins postrotate? oder gibt's einen Grund für's prerotate?

Wäre echt super ... wenn ihr ein paar Ideen teilen könntet ;) Danke
 
AW: Shoutcast: Logrotate

Code:
postrotate
   /usr/bin/kill -HUP $(cat /var/run/shoutcast-*.pid) 2> /dev/null || :
endscript

Vorausgesetzt, Shoutcast braucht das und reagiert korrekt auf ein SIGHUP.
 
AW: Shoutcast: Logrotate

Merci Dude, werde es gleich mal testen :)

Ja, denke schon :confused:
Jedenfalls ohne einen flush log (HUP) schreibt Shoutcast weiter in das rotierte Logfile.

sprich /var/log/shoutcast/1234.log.1 statt ins neue /var/log/shoutcast/1234.log
 
AW: Shoutcast: Logrotate

kleiner und großer Wurm ist noch drinnen

Code:
sudo logrotate -v /etc/logrotate.d/shoutcast
reading config file /etc/logrotate.d/shoutcast
reading config info for /var/log/shoutcast/*.log
Handling 1 logs
Die Zuordnung ist so nicht gegeben: Anzahl Logs = 1 <> Anzahl PID's

rotating log /var/log/shoutcast/9100.log, log->rotateCount is 0
renaming /var/log/shoutcast/9100.log.1.gz to /var/log/shoutcast/9100.log.2.gz (rotatecount 1, logstart 1, i 1),
old log /var/log/shoutcast/9100.log.1.gz does not exist
renaming /var/log/shoutcast/9100.log.0.gz to /var/log/shoutcast/9100.log.1.gz (rotatecount 1, logstart 1, i 0),
old log /var/log/shoutcast/9100.log.0.gz does not exist
log /var/log/shoutcast/9100.log.2.gz doesn't exist -- won't try to dispose of it
renaming /var/log/shoutcast/9100.log to /var/log/shoutcast/9100.log.1
disposeName will be /var/log/shoutcast/9100.log.1.gz
creating new log mode = 0664 uid = 1003 gid = 1001
running postrotate script
error: error running postrotate script for /var/log/shoutcast/9100.log
rotating log /var/log/shoutcast/9345.log, log->rotateCount is 0
renaming /var/log/shoutcast/9345.log.1.gz to /var/log/shoutcast/9345.log.2.gz (rotatecount 1, logstart 1, i 1),
old log /var/log/shoutcast/9345.log.1.gz does not exist
renaming /var/log/shoutcast/9345.log.0.gz to /var/log/shoutcast/9345.log.1.gz (rotatecount 1, logstart 1, i 0),
old log /var/log/shoutcast/9345.log.0.gz does not exist
log /var/log/shoutcast/9345.log.2.gz doesn't exist -- won't try to dispose of it
renaming /var/log/shoutcast/9345.log to /var/log/shoutcast/9345.log.1
disposeName will be /var/log/shoutcast/9345.log.1.gz
creating new log mode = 0664 uid = 1003 gid = 1001
running postrotate script
error: error running postrotate script for /var/log/shoutcast/9345.log
rotating log /var/log/shoutcast/9366.log, log->rotateCount is 0
renaming /var/log/shoutcast/9366.log.1.gz to /var/log/shoutcast/9366.log.2.gz (rotatecount 1, logstart 1, i 1),
old log /var/log/shoutcast/9366.log.1.gz does not exist
renaming /var/log/shoutcast/9366.log.0.gz to /var/log/shoutcast/9366.log.1.gz (rotatecount 1, logstart 1, i 0),
old log /var/log/shoutcast/9366.log.0.gz does not exist
log /var/log/shoutcast/9366.log.2.gz doesn't exist -- won't try to dispose of it
renaming /var/log/shoutcast/9366.log to /var/log/shoutcast/9366.log.1
disposeName will be /var/log/shoutcast/9366.log.1.gz
creating new log mode = 0664 uid = 1003 gid = 1001
running postrotate script
error: error running postrotate script for /var/log/shoutcast/9366.log
rotating log /var/log/shoutcast/9400.log, log->rotateCount is 0
renaming /var/log/shoutcast/9400.log.1.gz to /var/log/shoutcast/9400.log.2.gz (rotatecount 1, logstart 1, i 1),
old log /var/log/shoutcast/9400.log.1.gz does not exist
renaming /var/log/shoutcast/9400.log.0.gz to /var/log/shoutcast/9400.log.1.gz (rotatecount 1, logstart 1, i 0),
old log /var/log/shoutcast/9400.log.0.gz does not exist
log /var/log/shoutcast/9400.log.2.gz doesn't exist -- won't try to dispose of it
renaming /var/log/shoutcast/9400.log to /var/log/shoutcast/9400.log.1
disposeName will be /var/log/shoutcast/9400.log.1.gz
creating new log mode = 0664 uid = 1003 gid = 1001
running postrotate script
error: error running postrotate script for /var/log/shoutcast/9400.log
rotating log /var/log/shoutcast/9414.log, log->rotateCount is 0
renaming /var/log/shoutcast/9414.log.1.gz to /var/log/shoutcast/9414.log.2.gz (rotatecount 1, logstart 1, i 1),
Oiii! Und dann führt er postrotate auch noch pro gefundene Log (.8000.log, .8000.log.1, 8000.log.2 ... 8000.log.n) aus.

error: error running postrotate script for /var/log/shoutcast/9400.log
mit dem Syntax kommt er von Haus aus nicht klar :wall:

Werde die SIGHUP-Schleife komplett in ein .sh auslagern, und schauen dass diese erst nach Abschluß der eigentlichen Rotation durchläuft.
 
gelöst AW: Shoutcast: Logrotate

Problem gelöst, funktioniert hervorragend!

Hier die finale Version meiner /etc/logrotate.d/shoutcast
Code:
/var/log/shoutcast/8000.log
/var/log/shoutcast/9000.log
# hier weitere dateien aufführen
{
# fehlermeldungen senden an
errors mratix
weekly
size 1M
rotate 8
compress
delaycompress
notifempty
missingok
create 664 radio radio
postrotate
# flush logs, close and reopen
/bin/kill -HUP $(cat /var/run/shoutcast-*.pid) 2> /dev/null
endscript
}

Hinweis: Platzhalter * sollte man möglichst vermeiden, alle Logdateien einzeln aufführen.

Code:
/var/log/shoutcast/8000.log
{
# hier alle optionen einsetzen
}

/var/log/shoutcast/9000.log
{
# hier alle optionen einsetzen
}
diese Variante ist ebenfalls möglich
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben