Hi,
Folgendes Szenario:
Zur Lastverteilung und zur Erhöhung der Verfügbarkeit werden mehere Webserver eingesetzt. Der Load-Balancer verteilt die Anfragen an die einzelnen Webserver, die weitestgehend gleichartig sind.
Jeder einzelne Webserver schreibt zur Zeit Access-Logs und Error-Logs. Dazu kommen dann noch einige spielspezifische Logs (z.B. PHP-Warnings, mögliche Manipulationsversuche, etc.).
Das Problem ist jetzt dass es keine kombinierten Logfiles aller Server gibt, sondern dass die Logfiles über mehrere Webserver verteilt sind. Auf jedem einzelnen Webserver liegt eine Access-Log eine Error-Log usw.
Manche Auswertungen oder Untersuchungen werden dadurch sehr erschwert.
Welche Lösungsmöglichkeiten würdet ihr empfehlen?
Als Idee kam mir bis jetzt ein NFS-Server für Logdateien, man müsste aber nochmal prüfen, ob das überhaupt funktioniert, wenn mehrere Apache-Prozesse auf eine Log-Datei zugreifen.
Alternativ könnte man versuchen, Logeinträge über Netzwerkdienste zu verschicken, in dem Bereich habe ich leider noch keine Erfahrung.
Ein dritter Weg wäre es, nur im Bedarfsfall die Logdateien von den verschiedenen Servern zu einer Logdatei zu kombinieren. Wenn jede Zeile einer Logdatei mit einer Datumsinformation beginnt, wäre es recht einfach die Dateien richtig zusammenzufassen.
Gibt es weitere Ideen oder Argumente, die für oder gegen eine der oben vorgeschlagenen Lösungen sprechen?
Logfiles im Cluster-Betrieb
gepostet vor 18 Jahre, 3 Monate von exception
gepostet vor 18 Jahre, 3 Monate von Sarge
Moin,
es gibt ein paar Modules für den Apache z.b. :
omniti.com/~george/mod_log_spread/
die genau für dieses Problem erstellt wurden.
Ein Netzwerkfile-System ala nfs /openAFS wäre zwar denkbar aber ich glaube das dadurch die performance zu sehr in den keller gehen würde. Du musst bedenken da du ja die Accesslogs scheinbar auch zusammen haben willst da sehr sehr viele schreiboperationen getätigt werden müssen und die nicht parrallel stattfinden dürfen. Unschöne lösung.
Ansonsten könnte ich mir vorstellen das alle webserver ein logrotate betreiben, ein zentraler server diese bei bedarf per rsync o.ä. einsammeln geht und dann der zentrale server alle merged.
Vorteil: minimaler Overhead da das ganze nur betrieben wird wenn du es wirklich brauchst. Dadurch das du z.b. das logrotate auf stündlich o.ä. setzen kannst kannst auch sehr schön direkt an die Zeiten kommen die du brauchst.
es gibt ein paar Modules für den Apache z.b. :
omniti.com/~george/mod_log_spread/
die genau für dieses Problem erstellt wurden.
Ein Netzwerkfile-System ala nfs /openAFS wäre zwar denkbar aber ich glaube das dadurch die performance zu sehr in den keller gehen würde. Du musst bedenken da du ja die Accesslogs scheinbar auch zusammen haben willst da sehr sehr viele schreiboperationen getätigt werden müssen und die nicht parrallel stattfinden dürfen. Unschöne lösung.
Ansonsten könnte ich mir vorstellen das alle webserver ein logrotate betreiben, ein zentraler server diese bei bedarf per rsync o.ä. einsammeln geht und dann der zentrale server alle merged.
Vorteil: minimaler Overhead da das ganze nur betrieben wird wenn du es wirklich brauchst. Dadurch das du z.b. das logrotate auf stündlich o.ä. setzen kannst kannst auch sehr schön direkt an die Zeiten kommen die du brauchst.
gepostet vor 18 Jahre, 3 Monate von knalli
Soweit ich weiß, werden bei uns die Logs via SNMP auf einen Logserver geschickt.. der verarbeitet dann alles irgendwie - je nach Bedarf.
Und ich glaube, neben Webalizer läuft da seit gestern auch Cacti, was auf rrdtool basiert.
de.wikipedia.org/wiki/RRDtool
www.cacti.net/
Und ich glaube, neben Webalizer läuft da seit gestern auch Cacti, was auf rrdtool basiert.
de.wikipedia.org/wiki/RRDtool
www.cacti.net/