Auf einem physikalischen Webserver liegt heute oft mehr als nur eine Domain. Manchmal sind es nur ein paar, manchmal aber auch recht viele Domains, die der Server bedient. Jede Domain schreibt oft ihr eigenes Logfile um später Statistiken zu generieren.
Was aber tun, wenn der Server plötzlich Last hat und man nicht so recht weiß, auf welcher der 100 Domains nun Traffic erzeugt wird? Ein paar einfache Tools unter Linux genügen, um das herauszufinden.
Liegen auf einem Server viele Domains, ist oft die Struktur der angelegten Sites gleich oder zumindest sehr ähnlich. Für die folgenden Beispiele nehme ich an, daß sich die Struktur wie folgt darstellt:
/var/www/domain1.tld/logs/access.log
/var/www/domain2.tld/logs/access.log
/var/www/domain3.tld/logs/access.log
...usw...
Wir können uns das also zu nutze machen, wenn wir Logfiles suchen. Hierfür eignet sich das find-Kommando ganz prima. Mit diesem Kommando finden wir erst mal alle Logfiles, die uns interessieren:
# cd /var/www
# find . -name access.log
./domain1.tld/logs/access.log
./domain2.tld/logs/access.log
./domain3.tld/logs/access.log
Zum Live verfolgen und über den Daumen beobachten können wir tail oder apachetop nehmen. Das Tail Kommando ist sogar sehr einfach, da man ihm auch mehrere Logfiles nacheinander hinwerfen kann, deren Änderungen es live verfolgt. Nun nehmen wir die Ausgabe unseres find-Kommandos von oben und übergeben die ganzen Logfiles als Parameter an tail:
tail -f `find -name access.log`
tail wird nun jedes der access.log-Logfiles beobachten und Änderungen sofort auf der Konsole ausgeben. Die Ausgabe ist sehr gesprächig detailreich. Ist man hingegen nur an Zusammenfassungen und Requests pro Sekunde interessiert, bringt apachetop die Lösung. apachetop kann auch mit mehreren Logfiles umgehen, allerdings muß man vor jedes übergebene Logfile ein
-f
setzen, was die Sache etwas erschwert.
find kann aber auch hier aushelfen, da sich die Ausgabe frei formatieren lässt und man somit jede beliebige Kombination erzeugen kann, auch diese:
apachetop -f logfile1 -f logfile2 -f logfile3
.
apachetop `find . -name access.log -printf "-f %h/%f "`
%h gibt den Pfad ohne den letzten Teil an, %f dann den Dateinamen, das -f davor und die Liste der Logfiles an apachetop übergeben und fertig ist die systemweite Live-Statistik für den Apache.
Nutzt ihr auch solche Dinge? Dann in die Kommentare damit...