Centrale Apache logs voor groot webcluster

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

  • Aike
  • Registratie: Juli 2000
  • Niet online
Situatie:
Ik heb cluster van 4 webservers en 2 database servers die een grote website serveren. Denk aan gemiddeld ongeveer 2000 bezoekers tegelijkertijd. Mijn probleem is dat ik niet weet op welke manier ik daarvan statistieken ga produceren.

Optie 1:
Syslog. De 4 webservers sturen hun apache logs naar een centrale syslog server. Die pakt ze aan en gooit ze, als het goed gaat, in de juiste volgorde in een logfile. Ik heb hier een testopstelling van gemaakt met syslog-ng en dat ziet er veel belovend uit. Netjes een logfile per vhost en alle logs automatisch op 1 server. Deze logs wil ik vervolgens voeren aan webalizer. Hiervoor moet ik nog wel even de datum tag van syslog eruit slopen, anders snapt webalizer het formaat niet. Maar met een beetje scripten zal dat wel te doen zijn.

Optie 2:
NFS. De centrale logserver heeft een nfs share waar de 4 webservers hun logs op wegschrijven. Vervolgens komt cron iedere nacht langs om die logs te mergen tot 1 grote log en de regels in die logfile op volgorde te sorteren. Op de site van webalizer staat daar een scriptje voor.

Optie 3:
Een ander idee? Ik heb naar logging naar mysql gekeken, maar dat schijnt vrij veel load op te leveren en bij zoveel hits kan dat wel eens een probleem zijn.

Graag jullie mening!

Mijn blog over het deployen van Ruby on Rails: RunRails.com


Verwijderd

Lokaal loggen en dan op een rustig tijdstip rsyncen?

  • DiedX
  • Registratie: December 2000
  • Laatst online: 05-02 09:37
Ik had je 1 aangeraden. Andere methodes ben ik bijzonder benieuwd naar!

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

mysql load is vrij laag hoor.

mod_log_sql voldoet prima.
Zeker icm webalizer achtige tools is het vrij snel :)

Je kunt ook bufferen in een file en dat dan elke 24 uur naar mySQL schrijven als je dat zou willen.

Zaram module kopen voor je glasvezelaansluiting?


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Je kunt ook zelf een programma schrijven wat de logs verstuurd naar een centrale server. Zoiets is vrij eenvouding zelf te maken, dit doe je door bij je logformat te beginnen met |/bin/programma

Maar als het je puur om stats gaat kun je ook een extra query aan je pagina's toevoegen die een tellertje verhogen in je database waardoor je dit soort dingen kunt maken :P

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Aike
  • Registratie: Juli 2000
  • Niet online
Boudewijn schreef op zondag 16 april 2006 @ 13:18:
mysql load is vrij laag hoor.

mod_log_sql voldoet prima.
Zeker icm webalizer achtige tools is het vrij snel :)

Je kunt ook bufferen in een file en dat dan elke 24 uur naar mySQL schrijven als je dat zou willen.
Ja? Ik las toch negatieve verhalen over mod_log_sql. Erg makkelijk was het toch ook niet aan de praat te krijgen. Maar hoe doe je dat dan? Je dumpt die database om er vervolgens webalizer overheen te draaien? Of heb je ook zelfgebouwde queries om stats te maken?
moto-moi schreef op zondag 16 april 2006 @ 13:40:
Je kunt ook zelf een programma schrijven wat de logs verstuurd naar een centrale server. Zoiets is vrij eenvouding zelf te maken, dit doe je door bij je logformat te beginnen met |/bin/programma

Maar als het je puur om stats gaat kun je ook een extra query aan je pagina's toevoegen die een tellertje verhogen in je database waardoor je dit soort dingen kunt maken :P
Zelf programmeren is inderdaad wel een nette oplossing, alleen weinig zin in 8) Stats die gewoon in de site zelf ingeprogrammeerd zijn, is eigenlijk wel een hele nette oplossing. Misschien moet ik dat eens doorspelen aan de makers. Bedankt voor de tip, ik had geen idee dat die stats zo gegenereerd werden.

Mijn blog over het deployen van Ruby on Rails: RunRails.com


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Aike schreef op zondag 16 april 2006 @ 14:12:
[...]

Ja? Ik las toch negatieve verhalen over mod_log_sql. Erg makkelijk was het toch ook niet aan de praat te krijgen. Maar hoe doe je dat dan? Je dumpt die database om er vervolgens webalizer overheen te draaien? Of heb je ook zelfgebouwde queries om stats te maken?
nou je hebt mls2clf , dat zet het dan weer om voor webalizer.
awstats is er ook nog, dat werkt wel direct op mysql.

Ben zelf wegens die tekortkomingen wat aan het schrijven in php , ter vervanging van webalizer (maar dan met mysql support en incrementele verwerking). Interesse om wat mee te doen met ons?

Zaram module kopen voor je glasvezelaansluiting?


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Verwijderd schreef op zondag 16 april 2006 @ 12:34:
Lokaal loggen en dan op een rustig tijdstip rsyncen?
Dat is wat ik doe. Werkt perfect. Ik laat logrotate elke dag rotaten naar een nieuwe dir, en dan rsync ik de log van die dag met de server die de stats uitrekent. Die merged de logs met een script dat bij AWstats zit, logresolvemerge. (En daar een wrapper omheen zodat ik niet alle confs moet aanpassen als er een server bijkomt of weggaat).

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

zoeken in die logs is vrij lastig.
zoek maar eens op alle visits tussen x en y.

Auw :X

veel greppen enzo.

Zaram module kopen voor je glasvezelaansluiting?


  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 30-01 13:59
mm, bij een heavy use site lijkt het me toch fijn als je er ff doorheen kan ploegen, dus dan zou ik gaan voor rsync oid

Compromises are for the weak


  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Kun je niet een statistiekenprogramma zoeken die de lokaties zelf merged? Ik ben op windows gewend aan Deepmetrix Livestats XSP, en daar geef ik ook gewoon alle logfilepaden op van elke individuele machine in een cluster, en hij gooit de statistieken zelf bij elkaar.

Zie trouwens dat livestats ook apache 1 en 2 logfiles in kan lezen.. Weet niet hoe anti-windows je bent, maar zou een optie kunnen zijn ;) Je zou een testdoosje op kunnen zetten, en de logfiles van de 4 servers rsyncen naar een windows doosje, en dan met livestats inlezen..

Maar goed, zullen vast wel open source pakketten zijn die hetzelfde kunnen..

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


  • Aike
  • Registratie: Juli 2000
  • Niet online
Boudewijn schreef op zondag 16 april 2006 @ 15:25:
[...]

nou je hebt mls2clf , dat zet het dan weer om voor webalizer.
awstats is er ook nog, dat werkt wel direct op mysql.

Ben zelf wegens die tekortkomingen wat aan het schrijven in php , ter vervanging van webalizer (maar dan met mysql support en incrementele verwerking). Interesse om wat mee te doen met ons?
Interesse wel, maar niet echt de tijd. Als je een werkende versie hebt wil ik die natuurlijk wel een keer voor je testen. Voor mij is een voordeel van webalizer dat het zo snel is (80.000 regels/sec) en mis je dat niet een beetje als je het in php maakt?
axis schreef op dinsdag 18 april 2006 @ 00:48:
Kun je niet een statistiekenprogramma zoeken die de lokaties zelf merged? Ik ben op windows gewend aan Deepmetrix Livestats XSP, en daar geef ik ook gewoon alle logfilepaden op van elke individuele machine in een cluster, en hij gooit de statistieken zelf bij elkaar.

Zie trouwens dat livestats ook apache 1 en 2 logfiles in kan lezen.. Weet niet hoe anti-windows je bent, maar zou een optie kunnen zijn ;) Je zou een testdoosje op kunnen zetten, en de logfiles van de 4 servers rsyncen naar een windows doosje, en dan met livestats inlezen..

Maar goed, zullen vast wel open source pakketten zijn die hetzelfde kunnen..
Ik ben niet anti-windows, alleen in een heel linux cluster hang je er niet zomaar een windows machine tussen. Nu is het een push systeem, de webservers sturen hun logs naar de statsserver. Dus niet dat allemaal machines logins bij elkaar hebben. Je hebt wel een opvallende oplossing!

Goed, wat is het nu geworden? Ik ben na veel wikken en wegen toch voor de syslog-ng oplossing gegaan. En na een dagje draaien lijkt het goed te werken. Het mergen wordt realtime door syslog gedaan en elke ochtend worden de logs gerotate en draait webalizer. De omvang van de logs valt uiteindelijk reuze mee, iets meer dan 1 gigabyte per dag :)

[ Voor 4% gewijzigd door Aike op 18-04-2006 11:53 ]

Mijn blog over het deployen van Ruby on Rails: RunRails.com


  • smesjz
  • Registratie: Juli 2002
  • Niet online
Ik gebruik (z)mergelog om de logs te mergen en ze op datum te sorteren. Realtime loggen lijkt me beetje onzinnig en het lijkt mij logischer om lokaal te loggen en 1 keer per dag van iedere apache server de (gezipte) logs naar een centrale doos te sturen.

En je hebt op die manier altijd nog de mogenlijkheid om achteraf nog een keer je stats te generen als om wat voor reden je centrale logserver het begeeft.
Pagina: 1