PDA

Bekijk Volledige Versie : Datatraffic apache 1 of 2 bijhouden met mod_vhost_alias



The Unknown
08/05/05, 23:35
Nu ik toch bezig met met Apache kan ik gelijk maar eens een goede opzet maken om het dataverkeer te analyzeren.

Op dit moment gebruik ik apache 1.3 met mod_watch. Ik ben met de maker in gesprek om een bug uit mod_watch te halen zodat die ook accuraat de bandbreedte voor apache 2.0 kan lezen, maar uiteindelijk blijft mod_watch voor mij niet ideaal; ik gebruik Cacti als frontend met een klein perl script om zo de statistieken van een website te lezen. Het probleem is dat dit per individueel (sub) domein gaat, ik kan dus niet van 1 compleet domein alles bijhouden, dit is natuurlijk erg lastig.

Nu zag ik dat voor apache 2 ook een module is uitgekomen die er standaard bij zit, mod_logio. Deze geeft accuraat weer hoeveel datatraffic er is geweest voor een bepaald bestand, ook als dit bestand niet compleet werd gedownload.

Nu zoek ik dus met 1 van de 2 (mod_watch of mod_logio) een manier om gemakkelijk _alle_ site's waarop bezoekers komen in een database te zetten, gesorteerd onder het hoofddomein (iets.com) met daaronder dan eventueel voor ieder subdomein apart ook nog het dataverkeer, maar dat is niet belangrijk.

Helaas kan ik zelf hooguit PHP scripten, en zie het niet zitten om even een script te bouwen die bijvoorbeeld van mod_watch de domein.com/watch-table uit te lezen (een tabel waarin alle domein voorkomen met het dataverkeer) en daarna ook nog eens grafieken bij te maken. Met Cacti (frontend voor RRDtool) zijn de mogelijkheden om bepaalde tijden van grafieken (week, maand, paar dagen, en van datum X tot datum X) erg groot en handig.

AWstats heb ik gezien, ziet er best goed uit, en kan ook werken op basis van mod_logio zag ik met een kleine google. Helaas werkt dit op allemaal losse perl script, en zag ik dat je per site iets in een cronjob moet gaan zetten, dit vind ik erg onhandig, ik wil dat gewoon voor alle domeinen die bij apache langskomen een statistiek pagina wordt bijgehouden.

Het laatste moeilijke punt is dan nog dat ik gebruik maak van de mod mod_vhost_alias. Dit is een manier waarop als je een sitenaam bezoekt, apache automatisch een directory structuur afzoekt.
Bijvoorbeeld: je gaat naar www.pagina.nl, dan gaat apache zoeken in de directory /www/vhosts/pagina.nl/www
Bestaat die, dan wordt de pagina weergegeven. Bestaat die niet dan een 404. Op die manier kan ik dus (sub)domeinen aanmaken door simpelweg een directory op de harddisk aan te maken! Dit scheelt een hoop gedoe met virtualhosts en is erg gemakkelijk.

Hoe pakken jullie dit aan? Ik wil geen webhosting systeem op basis van cpanel ofzo. Of zijn er kleine goedwerkende "webhosting" systemen, die op Debian werken, en _geen_ belemmering voor het systeem vormen; dus een pakket dat ook zo weer kan worden gedeinstalleerd, en geen enorm ingewikkelde configuratie bevat. Ook wil ik mijn eigen mailserver ernaast kunnen blijven draaien, omdat ik de lange verhalen van patch bundels met Qmail e.a. meer dan zat ben, en Xmail + IMAP server uitstekend vind werken.

Lang bericht, ik hoop dat jullie mij kunnen helpen!

wv-
09/05/05, 01:56
Dat je niet kan scripten is in dit geval wel een zeer groot handicap. Het enige nuttige dat ik kan vertellen is dat ik al jaren gebruik maak van een systeem op basis van logfiles.

In 1 grote access_log komt alles in, 1 keer per uur wordt die geanalyseerd, worden er awstats/webalizer stats van gemaakt en wordt er een klein trafficlogging programmatje op losgelaten. Dit trafficlogging programmatje is iets dat ik enkele jaren geleden geschreven heb in C. Er wordt gewoon een traffic.txt bestand aanpast waar alle virtualhost met hun dataverkeer in megabytes in staan. Aan de hand van een lijst van gebruikers en domeinen in MySQL kan ik dan exact zien hoeveel een gebruiker verbruikt.

Ik weet niet of er een all-in-one oplossing bestaat voor je probleem, maar als je dan toch voor een niet-cpanel/plesk/... omgeving kiest is scripten toch een must vrees ik.

The Unknown
11/05/05, 16:56
Kickje..

Iemand die nog een oplossing heeft? Ik heb webalizer uitgeprobeerd (zie voor serverjte met paar domeinen: http://webalizer.flexbouncer.com:81/ voor een test) maar hierbij komen alle domeinen in 1 overzicht te staan, niet het dataverkeer per domein. Overigens heb ik een patch toegepast op deze webalizer zodat deze accuraat het dataverkeer weergeeft, door mod_logio op apache2 (apache2 draait als test op deze server op poort 81).
Awstats had ik al eens gezien, maar die moet per website worden geconfigureerd, hoe pak je dat aan wv- - Dit lijkt me toch niet erg handig.

Ik zal ook eens kijken of er aan een nieuwe versie van mod_watch, als die uitkomt, nog wat aan te passen valt zodat subdomeinen gewoon worden meegeteld met het hoofddomein, ook wel zo handig.

wv-
11/05/05, 21:27
Origineel geplaatst door The Unknown
Kickje..

Iemand die nog een oplossing heeft? Ik heb webalizer uitgeprobeerd (zie voor serverjte met paar domeinen: http://webalizer.flexbouncer.com:81/ voor een test) maar hierbij komen alle domeinen in 1 overzicht te staan, niet het dataverkeer per domein. Overigens heb ik een patch toegepast op deze webalizer zodat deze accuraat het dataverkeer weergeeft, door mod_logio op apache2 (apache2 draait als test op deze server op poort 81).
Awstats had ik al eens gezien, maar die moet per website worden geconfigureerd, hoe pak je dat aan wv- - Dit lijkt me toch niet erg handig.

Ik zal ook eens kijken of er aan een nieuwe versie van mod_watch, als die uitkomt, nog wat aan te passen valt zodat subdomeinen gewoon worden meegeteld met het hoofddomein, ook wel zo handig.

Webalizer kan je ook op alle virtuele hosts apart draaien. Waarschijnlijk heb je niet eerst je logfile gesplit doormiddel van een splitter. Hier kan je er 1 vinden, als je hem nog niet zou hebben: http://support.vamsys.de/download/tools/apache/split-logfile/split-logfile

Webalizer en awstats kan je op dezelfde manier parsen. Het beste wat je doet is een crontab scriptje starten met een bash scriptje. Dat bash scriptje overloopt bijvoorbeeld je map met log files in en start awstats/webalizer hierop.

The Unknown
12/05/05, 00:29
Origineel geplaatst door wv-


Webalizer kan je ook op alle virtuele hosts apart draaien. Waarschijnlijk heb je niet eerst je logfile gesplit doormiddel van een splitter. Hier kan je er 1 vinden, als je hem nog niet zou hebben: http://support.vamsys.de/download/tools/apache/split-logfile/split-logfile

Webalizer en awstats kan je op dezelfde manier parsen. Het beste wat je doet is een crontab scriptje starten met een bash scriptje. Dat bash scriptje overloopt bijvoorbeeld je map met log files in en start awstats/webalizer hierop.

Bedankt voor je informatie, dit maakt een en ander al een stuk duidelijker! Heb je toenvallig ook een voorbeeld van zo'n bash scriptje? Ik neem aan dat deze de directory met logs doorzoekt op die naam, dan steeds webalizer hierop draait, en dan per vhost alles naar een bepaalde output directory stuurt?

Ook moet ik denk ik al die logfiles rototen na een volle maand, dit script splitst het in maanden, en de oude logfiles moeten niet een eeuwigheid blijven staan natuurlijk. Welalizer kan geloof ik wel zelf kijken of de logfile al eens is gelezen door hem, en alleen het nieuwe stuk lezen.

Ik moet zeggen dat het mij eigenlijk tegenvalt dat er nog geen "kant-en-klare' oplossing is gemaakt door iemand, maar denk dat dat komt omdat de mensen die echt "zomaar" in de webhosting willen stappen toch meteen cpanel gingen gebruiken :)

wv-
14/05/05, 17:35
Origineel geplaatst door The Unknown


Bedankt voor je informatie, dit maakt een en ander al een stuk duidelijker! Heb je toenvallig ook een voorbeeld van zo'n bash scriptje? Ik neem aan dat deze de directory met logs doorzoekt op die naam, dan steeds webalizer hierop draait, en dan per vhost alles naar een bepaalde output directory stuurt?

Ook moet ik denk ik al die logfiles rototen na een volle maand, dit script splitst het in maanden, en de oude logfiles moeten niet een eeuwigheid blijven staan natuurlijk. Welalizer kan geloof ik wel zelf kijken of de logfile al eens is gelezen door hem, en alleen het nieuwe stuk lezen.

Ik moet zeggen dat het mij eigenlijk tegenvalt dat er nog geen "kant-en-klare' oplossing is gemaakt door iemand, maar denk dat dat komt omdat de mensen die echt "zomaar" in de webhosting willen stappen toch meteen cpanel gingen gebruiken :)

man bash, is niet zo moeilijk.
voorbeeld:
for i in `ls /directory/van/logs` ; do
webalizer $i
done