In meiner Konfiguration habe ich rsyslog, das für die folgenden Änderungen der /home/user/my_app/shared/log/unicorn.stderr.log
Verwendung verantwortlich ist imfile
. Der Inhalt wird mithilfe von TCP an einen anderen Remote-Protokollierungsserver gesendet.
Wenn sich die Protokolldatei dreht, sendet rsyslog keine Daten mehr an den Remote-Server.
Ich habe versucht, rsyslog neu zu laden, ein HUP-Signal zu senden und es insgesamt neu zu starten, aber nichts hat funktioniert.
Die einzigen Möglichkeiten, die ich finden konnte, die tatsächlich funktionierten, waren schmutzig:
- Beenden Sie den Dienst, löschen Sie die rsyslog-Statistikdateien und starten Sie rsyslog erneut. All das in einem Postrotate-Hook in meiner Logrotate-Datei.
kill -9
rsyslog und neu starten.
Gibt es eine richtige Möglichkeit für mich, dies zu tun, ohne die Interna von rsyslog zu berühren?
Rsyslog-Datei
$ ModLoad immark $ ModLoad imudp $ ModLoad imtcp $ ModLoad imuxsock $ ModLoad imklog $ ModLoad imfile $ template WithoutTimeFormat, "[Umgebung] [% syslogtag%] -% msg%" $ WorkDirectory / var / spool / rsyslog $ InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $ InputFileTag unicorn-stderr $ InputFileStateFile stat-unicorn-stderr $ InputFileSeverity-Informationen $ InputFileFacility local8 $ InputFilePollInterval 1 $ InputFilePersistStateInterval 1 $ InputRunFileMonitor # An Remote-Server weiterleiten Wenn $ syslogtag 'apache-' enthält, dann @@ my_server: 5000; WithoutTimeFormat : syslogtag, enthält "apache-" ~ *. * @@ my_server: 5000; SyslFormat
Logrotate-Datei
/home/user/my_app/shared/log/*.log { Täglich Missingok Datumsangabe 30 drehen komprimieren notifempty Erweiterung gz copytruncate Erstellen Sie 640 Benutzer Benutzer Sharedscripts nachdrehen (Stoppen Sie rsyslog && rm / var / spool / rsyslog / stat- * && starten Sie rsyslog 2> & 1) || wahr Endschrift }}
Zu Ihrer Information, die Datei ist für den Benutzer von rsyslog lesbar, mein Server ist erreichbar und andere Protokolldateien, die sich nicht im selben Zyklus drehen, werden weiterhin ordnungsgemäß verfolgt.
Ich verwende Ubuntu 12.04.
post-rotate
(was keine Sache ist) verwendet habenpostrotate
, da das ursprüngliche Logrotate-Skript, das Sie hatten, mit rsyslog gut hätte funktionieren sollen (wenn das Postrotate-Skript ausgeführt worden wäre ) ...?