Transfervolumen errechnen
Rouven
- webserver
0 Andreas0 Rouven0 Frank aus Ulm0 Rouven
0 Michael Schröpl
Hi,
ich habe mal eine kurze Frage, mich nervt es ein Wenig, dass ich mich z.B. bei meinem Linux-Webspace jedesmal erst im Confixx anmelden muss nur um mein tägliches Transfervolumen (bzw. monatlich) zu sehen. Um dem ganzen aus dem Weg zu gehen bräuchte ich eine Möglichkeit das ganze kurz und kompakt auf einer Seite ohne Anmeldung anzuzeigen, die Frage ist, gibt es da ein fertiges kleines Skript für oder wie rechnet Confixx da den Traffic aus - ich könnte das auch schlicht und einfach mit PHP selbst schreiben, das wäre auch kein so großes Problem, wenn mir jemand sagt, was ich dazu tun muss.
Geht Confixx da die Logfiles durch und liest irgendwelche Angaben aus und summiert da die Werte auf? Wenn ja, erkennt man daran auch den tatsächlichen Transfer im Verhältnis zu dem den der Browser gar nicht erst verursacht weil er seinen Cache verwendet?
Danke!
Rouven
Hi Rouven,
wenn ich mich nicht irre, schreibt CONFIXX solche Daten in die MySQL Datenbank "confixx" in die tabelle "transfer" (zumindest CONFIXX 2 Pro). Jetzt gibt es zwei Möglichkeiten:
a) Lokale Auswertung
Du schreibst Dir ein PHP oder Perl Script, welches Du auf Deinem Server via HTTP aufrufen kannst.
b) Remote Auswertung
Du erstellst einen MySQL User mit externen Zugriffsrechten und schreibst ein PHP oder Perl Script, welches Du auf Deinem lokalen Rechner aufrufst.
Okay, ich hoffe das hilft Dir weiter...
Ciao
Andreas
PS: CONFIXX schreibt so ziemlich alles in die Datenbank...
Hi,
na, das gab leider nur einen kurzen Hoffnungsschimmer. Da das nur ein Webspace ist und nicht mein Server habe ich - vermutlich, zumindest sehe ich sie nirgendwo - keinen Zugriff auf diese Datenbank, sondern nur auf meine eigene Datenbank.
Vielleicht noch eine andere rechnerische Idee?
Hi, hallo
bei einfachen HTML-Seiten sicherlich einfacher machbar, als bei PHP seiten mit dynamischer Größenänderung.
die statischen HTMLs von PHP parsen lassen und oben ein include rein, welches die Dateigröße der angefragten Datei vom Dateisystem liest und selbst in eine DB schreibt.
Bzw. die Logfiles parsen (speziell bei dynam. PHP Seiten sinnvoller)
Wenn cronjobs erlaubt sind, kannst du dies ja damit regelmäßig anleiern.
Gruß, Frank
Hallo,
genau das mit den Logfiles war ja auch mein erster Gedanke, Frage:
Wenn ich eine Zeile aus dem Logfile nehme, sagen wir
2003-04-20 08:02:07 216.239.46.48 - W3SVC86 AREA-11 62.208.70.30 80 GET /sp/download.asp fileid=45&orderby=beschreibung 200 0 0 481 406 HTTP/1.0 localhost Googlebot/2.1+(+http://www.googlebot.com/bot.html) -
welche Angaben muss ich dann auslesen bzw. aufsummieren, oder kann ich mit diesem Request gar nichts anfangen?
Moin!
2003-04-20 08:02:07 216.239.46.48 - W3SVC86 AREA-11 62.208.70.30 80 GET /sp/download.asp fileid=45&orderby=beschreibung 200 0 0 481 406 HTTP/1.0 localhost Googlebot/2.1+(+http://www.googlebot.com/bot.html) -
welche Angaben muss ich dann auslesen bzw. aufsummieren, oder kann ich mit diesem Request gar nichts anfangen?
Ich auch nicht so recht. Ist das ein Log vom IIS? Vom Apache ist es jedenfalls nicht. Aber etwas geraten: 481 oder 406 könnten die übermittelten Bytes sein.
Ohne Kenntnis, welches Feld zu welcher Info gehört, und wie man die Felder trennen kann, ist das Logfile aber wertlos.
- Sven Rautenberg
Na ja, danke trotzdem. Ich werde mir mal Gedanken machen, ob sich da dann der Aufwand des parsens lohnt oder ob ich doch zu Confixx zurückkehre...
Hi Rouven,
unter Annahme dass es sich um das Log eines IIS handelt:
-> MMC Konsole -> Website -> Properties -> Tab Website -> Button Logging Properties -> Tab Extended Properties
darin siehst du welche Sachen im Log stehen
andere Variante, mach dir eine simple HTML Datei mit einer ungewöhnlichen Anzahl Bytes (meinetwegen auch text) z.b. 7777 bytes ... führe einen GET Request darauf aus, öffne das Logfile und suche nach dem Request senkrecht und dann wenn gefunden nach den 7777 waagerecht, danach weißt du, wo zmd. die Größe (Bytes sent) steht.
Wenn du dir deine Zeile genauer anschaust, erkennst du, daß es eine mit Leerzeichen getrennte Kette von geloggten Werten ist.
Port 80 steht drin, HTTP Responsecode 200, Requesttype GET, das _requested_ file, der Querystring, HTTP version, Useragent und so weiter.
Tschau, tschüß,
Frank
Hi Rouven,
im Confixx anmelden muss nur um mein tägliches Transfervolumen (bzw. monatlich) zu sehen.
wie rechnet Confixx da den Traffic aus? ...
Geht Confixx da die Logfiles durch und liest irgendwelche Angaben aus und summiert da die Werte
auf? Wenn ja, erkennt man daran auch den tatsächlichen Transfer im Verhältnis zu dem den der
Browser gar nicht erst verursacht weil er seinen Cache verwendet?
eigentlich hast Du hier die entscheidenden Fragen gestellt, welche nachfolgend im Thread etwas untergegangen sind, weil sich dieser auf eine konkrete Logfile-Syntax gestürzt hat, dabei aber die Semantik des Problems aus den Augen verloren hat.
Denn die erste Frage ist tatsächlich: Wie _definiert_ Confixx den Begriff "Transfervolumen"?
Und deckt sich diese Definition mit den Daten, welche Du in besagtem Logfile vorfindest?
HTTP-Server protokollieren üblicherweise den Traffic auf HTTP-Ebene. Für die tatsächliche Auslastung der Leitung ist aber der Traffic auf Leitungsebene relevant (zumindest tatsächlich - ob Confixx das auch so sieht, weiß ich natürlich nicht), so daß Du eventuell Äpfel mit Birnen vergleichen würdest.
Und der Unterschied kann extrem sein, wie Dir gerade am Beispiel von Cache-Zugriffen bewußt geworden ist: Wenn ein Browser einen Conditonal-GET-Zugriff an den Server sendet ("Ich habe von dieser Seite eine Version vom Datum X.Y - darf ich diese weiterhin verwenden?") und der Server antwortet HTTP-304 ("Ja, Du darfst"), dann wird der Webserver die Auslieferung von 0 Byte protokollieren - tatsächlich sind aber etwa 1000 Bytes in Form des HTTP-Requests und der HTTP-Response über die Leitung gelaufen (je nach Konfiguration von Browser und Webserver).
Daß dann auch noch etwas TCP/IP-Verpackung um diese Pakete herum notwendig ist, um sie korrekt zustellen zu können, vernachlässige ich an dieser Stelle mal großzügig.
Um Deine letzte Frage zu beantworten: Denjenigen Traffic, den das Browser-Caching verhindert hat, kannst Du nicht messen. Das liegt an der Natur des Caching selbst: Einerseits weißt Du nicht, wie groß die Seite gewesen wäre, welche nicht übertragen wurde, und andererseits weißt Du vor allem nicht, welche Requests die Browser gar nicht erst gesendet haben.
Die beiden Fälle "Datenauslieferung" und "Conditional-GET" (siehe oben) sind nämlich nicht alles, was passieren kann: Als dritter Fall kann der Browser beschließen, den Server überhaupt nicht zu fragen, sondern einfach seinem Cache-Inhalt zu glauben. Dies kann durch eine entsprechende Browser-Konfiguration so definiert sein, aber beispielsweise auch dadurch, daß der Server dem Browser eine maximal zulässige Aufbewahrungsfrist für die ausgelieferte Seite mitgeliefert hat, während welcher der Browser seinem Cache-Inhalt vertrauen darf, ohne fragen zu müssen! (HTTP-Header "Expires:" bzw. "Cache-Control:")
Und wenn der Browser gar nicht erst fragt, dann findet auf dem Server natürlich auch kein Ereignis statt, welches dieser protokollieren könnte ...
Wenn Du Deinen Traffic niedrig halten willst, kann sich (neben der obligatorischen komprimierten Auslieferung der Seiten) also auch das Senden solcher Aufbewahrungsfristen lohnen - obwohl diese wiederum nur dann vom Browser beachtet werden, wenn dieser entsprechend konfiguriert ist, sich also nicht für schlauer hält als Dein Server. (Erfreulicherweise sind hier die Default-Werte der Browser aber ziemlich gut.)
Schau Dir mal in Deiner HTTP-Traffic-Auswertung den Anteil an HTTP-304-Requests an - der liegt bei üblichen Websites um die 20-30%, aber fast jeder dieser Zugriffe wäre überflüssig gewesen ... ein gut konfigurierter Server senkt diesen Wert auf unter 10%.
Natürlich bräuchtest Du Einfluß auf Deine Server-Konfiguration, um hier etwas aktiv zu tun ... aber das ist ja lediglich eine Frage Deiner Motivation und der geeigneten Provider-Wahl. ;-)
Viele Grüße
Michael
Hi Michael!
| Und der Unterschied kann extrem sein, wie Dir gerade am Beispiel von Cache-Zugriffen bewußt geworden ist: Wenn ein Browser einen Conditonal-GET-Zugriff an den Server sendet ("Ich habe von dieser Seite eine Version vom Datum X.Y - darf ich diese weiterhin verwenden?") und der Server antwortet HTTP-304 ("Ja, Du darfst"), dann wird der Webserver die Auslieferung von 0 Byte protokollieren - tatsächlich sind aber etwa 1000 Bytes in Form des HTTP-Requests und der HTTP-Response über die Leitung gelaufen (je nach Konfiguration von Browser und Webserver).
Man könnte ja den kompletten Request loggen und sich die Response-Größe errechnen und könnte das so dazu zählen.
Daß dann auch noch etwas TCP/IP-Verpackung um diese Pakete herum notwendig ist, um sie korrekt zustellen zu können, vernachlässige ich an dieser Stelle mal großzügig.
Welcher Traffic wird denn vom Provider abgerechnet? TCP/IP mit TCP und IP headern, oder sogar Ethernet-Frames/PPP...?
Grüße
Andreas