Logrotate: Zugriff auf die Ausgabedatei in Postrotate

15

Ich Nginxdrehe täglich Protokolle (mit dateext). Nach der Rotation möchte ich die Datei für den Tag, der gerade vergangen ist, analysieren und eine E-Mail mit der Anzahl der vom Nginx-Server zurückgegebenen Fehler kompilieren.

Wie kann ich auf die Ausgabedatei im Postrotate / EndScript-Bereich von zugreifen logrotate?

ibz
quelle
Können Sie mehr ausarbeiten?
Khaled
Erledigt. Entschuldigung, ich dachte, es ist klar genug. :)
ibz

Antworten:

4

Mir sind keine Variablen bekannt, die Sie verwenden können, wenn Sie danach suchen. Unmittelbar nach dem Drehen des Protokolls sollten Sie jedoch genau wissen, auf welchen Namen die Datei gedreht wurde, basierend auf der Konfiguration, die Sie für die Drehung ( /var/log/somefile.1oder dergleichen) festgelegt haben.

Vielleicht ist es einfacher zu beantworten, wenn Sie das tatsächliche Problem beschreiben, das Sie zu lösen versuchen.

Kennzeichen
quelle
Ich fand das Problem irrelevant. Erklärt es jetzt genauer. Ja, ich kann nur das Datum verwenden, um den Dateinamen zu erhalten, aber ich hatte gehofft, dass ich es durch eine Variable oder etwas anderes bekommen kann, was sinnvoller wäre.
ibz
3
Sieht so aus, als hätte Larsks genau das getroffen, was Sie wollen. $ 1 ist die Variable, nach der Sie suchen.
Markieren Sie den
17

Wenn Sie die Direktive "sharedscripts" nicht verwenden, erhält Ihr Postrotate-Skript als $ 1 die Datei, die die Protokollrotation ausgelöst hat. Dies kann hilfreich sein, wenn Sie versuchen, ein generisches Skript mit mehreren Zeilengruppen für logrotate zu verwenden. Das heißt, wenn man so etwas annimmt:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

Wenn übereinstimmende Dateien gedreht werden müssen, wird Ihr Skript mit $ 1 aufgerufen, das auf "/var/log/sample1.log", "/var/log/sample2.log" oder "/var/log/sample3.log" festgelegt ist " wie angemessen. Sie können dann ".1" anhängen, um die gerade gedrehte Datei zu finden.

Wenn Sie die Option "sharedscripts" verwenden, wird Ihr Skript mit einem Wert von $ 1 aufgerufen, der auf "/var/log/sample1.log /var/log/sample[23[.log" festgelegt ist (dies hilft Ihnen jedoch, eine bestimmte Zeilengruppe zu identifizieren) nicht die genaue Datei).

Hoffentlich gibt Ihnen dies einen Ausgangspunkt. Beachten Sie, dass dies nur für logrotate> v3.7.5 funktioniert.

larsks
quelle
1
Praktisch. Tatsächlich scheinen sowohl das Skript vor als auch nach dem Drehen den Namen der gedrehten Datei als $ 1 zu erhalten, was genau das ist, wonach die Frage fragt.
Markieren Sie den
1
@ Mark das Skript erhält den Namen der Eingabedatei, nicht die Ausgabedatei
kbolino