Apache logs to MySQL
Die Apache Statistik wird nun auf Mysql erfasst!
Warum
Apache speichert eigentlich seit eh und je die Daten über die Zugriffe in eine Datei. Diese sogenannte Log-Datei ist mittlerweile standard und lässt sich von nahezu jedem Auswertungs-Tool auslesen lassen. Die Meisten Auswertungsprogramme lassen sich nun schwer bis gar nicht konfigurieren und sind somit nur schwer an die Bedürfnisse der Seitenbereiber anpassen. Der Webmaster muss tiefgehende Kenntnisse über Stream Editoren und weiteren Text bearbeitungs tools besitzen um nicht standardisierte Kennzahlen für die Webpage zu erhalten. Und genau hier ist die Stärke von SQL! Sind die Daten erst mal in der DB abgelegt kann man mit wenigen Handgriffen die ersten Kennzahlen anzeigen lassen um diese genauer unter die Lupe zu nehmen. Hier ein Paar Kennzahlen die wir in Web:Qualitaet beschreiben:
{CODE(colors=SQL)} select count()/( select count()from apachelogs.umija_org where status <> 404 )100 from apachelogs.umija_org where status = 404; {CODE} * liefert die Prozentzahl der Fehlerhaften Links *{CODE(colors=SQL)} select max(request_duration), avg(request_duration), min(request_duration) from apachelogs.umija_org {CODE} * liefert die max. durchschnittliche und die min. Zeit für das ausliefern der Anfragen. Man beachte dass es sich dabei nur um die einzelnen Anfragen handelt, eine Web-Seite besteht fast immer aus mehreren Anfragen. Dies kann noch ausgebaut werden um die gesamte Zeit für das Ausliefern einer Seite anzuzeigen, die sogenannte Page Load Time!
*{CODE(caption=>Fehlerhafte Zugriffe, wrap=1, colors=phpcode)}
--Tägliche Verhältnis der 404 Anfragen zu der Summe der Anfragen:
select u_all.tag, u_all.anz, u404.anz, round(u404.anz/u_all.anz * 100, 2) as perc from
(select date_format(from_unixtime(u.time_stamp), '%Y%m%d') as tag, count(1) as anz FROM apachelogs.umija_org u group by date_format(from_unixtime(u.time_stamp), '%Y%m%d')) u_all,
(select date_format(from_unixtime(u.time_stamp), '%Y%m%d') as tag, count(1) as anz FROM apachelogs.umija_org u WHERE u.status = 404 group by date_format(from_unixtime(u.time_stamp), '%Y%m%d')) u404 where u_all.tag = u404.tag order by 1 desc
Backup spielt auch noch eine wichtige Rolle, so kann Backup ab jetzt nur die DB sichern und behält alle statistischen Daten.
Neben diesen operativen Maßnahmen lassen sich auch Berichte anzeigen. Diese können im Vergleich zu den Auswertungsprogrammen von den Seitenbetreibern leicht auf ihre Bedürfnisse anpassen.
Wie
Die offizielle Seiteliefert eine recht gute Anleitung wie die Module installiert werden können. Wir verwenden das bereits vorkompelierte Debian Paket für etch vom Thomas Goirand. Die Repository dafür findet ihr hier: * deb ftp://ftp.gplhost.com/debian stable main Wir haben die Pakete * libapache2-mod-log-sql * libapache2-mod-log-sql-mysql installiert und in der Apache config sowie in die einzelne virtuellen Hosts configuriert. In der /etc/apache2/apache2.conf sind folgende Zeilen eingefügt: {CODE()} LogSQLDBParam database YOUR_DB LogSQLDBParam username USER LogSQLDBParam password PASSWORD LogSQLDBParam socketfile /var/run/mysqld/mysqld.sock LogSQLCreateTables On {CODE} Un in den einzelnen vHosts sind dann noch {CODE()} LogSQLTransferLogTable YOUR_TABLE LogSQLTransferLogFormat AabHhmRSsTUuvio {CODE} aufzunehmen und schon kann es losgehen! YOUR_DB, USER, PASSWORD und YOUR_TABLE sind natürlich durch die gewählten Werte zu ersetzen. Socketfile muss ersetzt werden wenn der Apache und MySQL auf entfernten Servern laufen.
Log
- http://mlblog.osdir.com/apache.mod-log-sql/2005-11/index.shtml Fehler in der error.log hat alle logs zugespammt!! --> Erstellung der Tabelle "scoreboard" ist lässig, und die error.log bleibt sauber ...
- Wegen wegen eines erneuten umija Umzuges auf den neuen Server sind die LOG Dateien in der DB unvollständig! Es fehlen alle Zugriffsdaten vom 15. Mai 2008 bis einschl. 10. Jun. 2008.