4b42 Logo

Wissensdatenbank

Benutzerbild
21 Mai 2015
5.795

Debian 8 Job for varnishlog.service failed

Inhaltsverzeichnis

Problem


Ich erhalte taglich um 6:26 Uhr eine E-Mail mit folgendem Inhalt:
/etc/cron.daily/logrotate:
Job for varnishlog.service failed. See 'systemctl status varnishlog.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript varnishlog, action "reload" failed.
error: error running non-shared postrotate script for /var/log/varnish/varnish.log of '/var/log/varnish/varnish.log '
Job for varnishncsa.service failed. See 'systemctl status varnishncsa.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript varnishncsa, action "reload" failed.
error: error running non-shared postrotate script for /var/log/varnish/varnishncsa.log of '/var/log/varnish/varnishncsa.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1

Analyse


Die Konfiguration für logrotate befindet sich im Verzeichnis /etc/logrotate.d/
nano /etc/logrotate.d/varnish

Der Inhalt dieser Datei ist wie folgt:
/var/log/varnish/varnish.log {
daily
rotate 7
missingok
compress
delaycompress
missingok
postrotate
/usr/sbin/invoke-rc.d varnishlog reload > /dev/null
endscript
}

/var/log/varnish/varnishncsa.log {
daily
rotate 7
missingok
compress
delaycompress
missingok
postrotate
/usr/sbin/invoke-rc.d varnishncsa reload > /dev/null
endscript
}
Führt man nun den Fehlerhaften reload Befehl aus:
/usr/sbin/invoke-rc.d varnishlog reload

Erhalten Sie die folgende Rückgabe, was den ersten Teil der E-Mail erklärt:
Job for varnishlog.service failed. See 'systemctl status varnishlog.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript varnishlog, action "reload" failed.

Geben wir nun den Befehl ein, welcher uns das Betriebssystem vorschlägt:
systemctl status varnishlog.service

Dann erhalten wir folgende Ausgabe:
● varnishlog.service - Varnish HTTP accelerator log daemon
Loaded: loaded (/lib/systemd/system/varnishlog.service; enabled)
Active: failed (Result: exit-code) since Sam 2015-05-16 10:08:34 CEST; 5 days ago
Process: 6703 ExecStart=/usr/bin/varnishlog -a -w /var/log/varnish/varnish.log (code=exited, status=1/FAILURE)
Main PID: 6703 (code=exited, status=1/FAILURE)

Mai 16 00:00:00 sail systemd[1]: varnishlog.service: main process exited, code=exited, status=1/FAILURE

Startet man den Dienst manuell:
/etc/init.d/varnishlog start
[ ok ] Starting varnishlog (via systemctl): varnishlog.service.
Dann können Sie den Log-Dienst ohne Fehler neu laden:
/usr/sbin/invoke-rc.d varnishlog reload


Im Syslog ist folgendes zu finden:
cat /cat /var/log/syslog|grep varnish
May 21 00:00:00 4b42 varnishncsa[6577]: Can't open VSM file (Abandoned VSM file (Varnish not running?) /var/lib/varnish/4b42/_.vsm


Lösung


Der Log und NCSA Dienst startet nur wenn der varnish Dienst gestartet ist. Deshalb müssen Sie init.d Skripte nach dem Starten ausgeführt werden:
nano /etc/rc.local
Fügen Sie am Ende die folgenden Zeilen ein:
# 2015-05-21 by Kevin Buehl (Can't open VSM file)
sleep 10
/etc/init.d/varnishlog start
/etc/init.d/varnishncsa start


Ist leider nicht die schönste Lösung, aber alle anderen Lösungen haben bei mir nicht funktioniert, wie varnish in die init.d scripts hinzufügen oder in dem varnishncsa script eine sleep Befehl einbauen.