Was sind die Vor- und Nachteile von logrotate vs rotatelogs mit Apache?

11

Apache bietet ein Tool namens Rotatelogs, das den Vorteil hat, dass Apache beim Drehen von Protokollen nicht neu gestartet wird, was bei logrotate der Fall ist. Ich habe nicht genug Erfahrung, um zu sprechen, wenn dies genug Kriterien sind, um Rotatelogs über Logrotate zu verwenden.

Meine Frage ist, ob jemand echte Erfahrungen mit einem oder beiden dieser Tools hat und wie würden Sie dazu beitragen?

Was würden Sie empfehlen und warum?

Mohan Gulati
quelle

Antworten:

7

Ich würde logrotate für die meisten Leute empfehlen, da dies das ist, was alle anderen Protokolle dreht (KISS: Keep it Simple Stupid). Logrotate startet Apache nicht vollständig neu, sondern sendet lediglich ein Signal, das es auffordert, alle Protokolldateien erneut zu öffnen und untergeordnete Elemente neu zu starten. Dieses Signal kann SIGHUP sein, wodurch die Kinder sofort neu gestartet werden (wodurch das Herunterladen unterbrochen wird), oder SIGUSR1, das einen ordnungsgemäßen Neustart durchführt. Mit SIGUSR1 müssen Sie die Protokollverarbeitung verzögern, bis Sie glauben, dass alle Kinder auf natürliche Weise gestorben wären. In beiden Fällen möchten Sie wahrscheinlich Ihre Protokolle analysieren und für den Zeitraum mit dem niedrigsten Datenverkehr am Tag oder in der Woche zeitlich festlegen.

Piped-Protokolle scheinen die leistungsstärkere Lösung zu sein. Ein großer Vorteil ist, dass Sie ein zentrales Protokollierungssystem verwenden und den Webserver selbst laden können. Das Handbuch selbst sagt:

Wie bei der bedingten Protokollierung sind Piped-Protokolle ein sehr leistungsfähiges Werkzeug, sollten jedoch nicht verwendet werden, wenn eine einfachere Lösung wie die Offline-Nachbearbeitung verfügbar ist.

Verwenden Sie anscheinend keine Pipeline-Protokollierung, wenn Sie diese nicht benötigen . Ich habe in der Vergangenheit die Piped-Protokollierung als hackige Methode zum Filtern von Protokollen verwendet und hatte kein Problem.

Kyle Brandt
quelle
Das Postrotate-Skript mit den Logrotate-Dateien von Apache sendet ein SIGHUP, wodurch Apache alle untergeordneten Dateien beendet und neu startet. Alle aktiven Verbindungen zu diesem Zeitpunkt werden beendet.
Warner
Ich habe irgendwo einen Kommentar gelesen, der besagt, dass ein ordnungsgemäßer Neustart bei Servern mit hoher Last nicht sehr gut funktioniert. Aber ich glaube wirklich nicht, dass es eine Alternative gibt.
Mohan Gulati
Logrotate mit SIGHUP ist ziemlich Standard. Ich würde mir darüber keine Sorgen machen.
Warner
2

Ich habe beide schon einmal benutzt. Ich fand, dass die Verwendung von Rotatelogs ein sehr nützliches Tool für die Verwaltung von Zugriffsprotokollen ist und wenn Sie keine Apache-Ausfallzeiten wünschen. Auf einer Site mit hohem Volumen würde ich dies empfehlen. Das einzige Problem, das ich festgestellt habe, war, dass Sie zum Verwalten der Protokolle ein separates Skript benötigen, um die Protokolle entweder zu bereinigen oder auf einen Sicherungsserver zu verschieben hängt von der Anforderung ab. Mit logrotate haben Sie mehr Optionen für den Umgang mit Protokolldateien. Das einzige Problem besteht darin, dass Sie Apache neu starten müssen, wenn logrotate wie in der vorherigen Antwort erläutert ausgeführt wird.

Grundsätzlich hängt alles von der Wahl ab. Wenn Sie Apache benötigen, um ohne Unterbrechungen ausgeführt zu werden, müssen Sie Rotatelogs mit einem externen Cron-Skript verwalten. Andernfalls reicht die Protokollierung aus. Stellen Sie nur sicher, dass Sie den logrotate cron so einrichten, dass die Protokolle nicht gedreht werden, wenn Sie viel Verkehr haben.

Wenn Sie ein Apache-Protokoll in Ihrem Syslog haben möchten, können Sie immer den Befehl logger verwenden, der sich auf Redhat-basierten Linuxen befindet.

Danie
quelle