16.12.2014

Es wird wieder Zeit für die dicken Fische - Der MC Rubber hilft!

Der MC Rubber. 


Definitiv ein Köder für die dicken Fische!

Die News auf news.pikeworld.de haben bereits gezeigt, dass auch die Boddenfische auf den Köder stehen.

 
Wieder einmal konnte ich pünktlich zum Start der Großfischsaison eine Fuhre davon ablichten.  Meine Lieblingsfarbe ist auf jeden Fall mit dabei! Das ganze Sortiment - auch in unterschiedlichen Größen - findet ihr auf www.pikeworld.de.


















21.09.2014

Draußen zu Hause - Entspannung pur...

Es gibt nichts besseres als nach einer langen Arbeitswoche in die Natur abzutauchen und die Ruhe, Stille und Entspannung zu genießen. Die frische Luft zu atmen, dem Eisvogel beim Jagen zu zuschauen und am Morgen einen warmen Tee noch im Dunst über dem Wasser zu genießen. Natürlich geht das richtig gut, wenn auch das Wetter mitspielt, aber auch das sanfte Prasseln des Regens bringt Entspannung pur. Ich genieße die Auszeiten in der Natur!

Bei schlechtem Wetter entspannt im Zelt lesen.


Die Regenpausen nutzen und die Aussicht genießen.


Dem sanft prasselnden Regen auf dem Zelt lauschen.


Frische Luft um die Nase wehen lassen!


Zweisamkeit genießen.


Warmes Essen kochen...



... und am nächsten Morgen entspannt nach Hause fahren!


04.09.2014

Apache Tomcat - Erweitertes Logging mit Hilfe des Access Log Valves

Sobald der Tomcat in einer realen Umgebung betrieben wird, kommt früher oder später die Anforderung auf, dass der Zugriff auf den Server geloggt werden soll. Das kann unterschiedliche Gründe haben - so es können beispielsweise Zugriffsstatistiken definiert oder auch ein Monitoring etabliert werden. Beides Werkzeuge um eventuelle Hotspots oder Bottlenecks in einer Anwendung zu ermitteln und zu schließen.

Das Mittel der Wahl ist in diesem Fall ein so genannter Access Log Valve [1]. Dieser erstellt Log-Dateien für den Zugriff auf den Server. Diese können in nachfolgenden Schritten analysiert und ausgewertet werden. Der Valve selbst kann entsprechend konfiguriert werden und bringt von sich aus bereits einige gut dokumentierte Konfigurationsoptionen mit sich [2].

Neben den verschiedenen Attributen soll in diesem Artikel das Pattern für das Logging genauer beleuchtet werden. Das Pattern ist ein einfacher String (Platzhalter mit dem Prefix '%', sowie frei definierbaren Literalen) und kann je nach Anforderung definiert werden. Folgende Platzhalter sind bereits definiert:
  • %a - Remote IP
  • %A - Lokale IP
  • %b - gesendete Bytes ohne den HTTP Header ('-' wenn null)
  • %B - gesendete Bytes ohne den HTTP Header
  • %h - Name des Remote-Hosts
  • %H - Requestprotokoll
  • %l - Remote-Benutzername (liefert immer '-')
  • %m - Methode des Requests (GET, POST, etc.)
  • %p - Port auf dem der Request empfangen wurde
  • %q - Anfrage als String
  • %r - Erste Zeile aus dem Request, beinhaltet in der Regel Methode und URI
  • %s - HTTP-Status der Antwort an den Client
  • %S - Session-ID des Benutzers
  • %t - Zeitstempel (Common Log Format)
  • %u - authentifizierter Remote-Benutzer ('-', wenn dieser nicht gesetzt ist)
  • %U - URL
  • %v - Name des lokalen Servers
  • %D - Verarbeitungszeit für den Request in Millisekunden
  • %T - Verarbeitungszeit für den Request in Sekunden
  • %F - Zeit für das Verschicken der Antwort an den Client
  • %I - Name des Threads mit dem der Request abgearbeitet werden kann
Mit diesem Grundgerüst an Konfigurationsmöglichkeiten ist eine grundlegende Auswertung bereits realisierbar. Allerdings ist es so, dass die Möglichkeiten nicht immer ausreichend sind und genau dann können Informationen aus den ein- und ausgehenden Headern weiterhelfen.

Der Valve unterstützt das Schreiben von Informationen direkt aus dem Header. Der Zugriff auf diese Attribute ist an den Zugriff auf die Attribute beim Logging in einem Apache HTTP Server [3] angelehnt.
  • %{xxx}i - Zugriff auf den eingehenden Header
  • %{xxx}o - Zugriff auf den Header der Response
  • %{xxx}c - Zugriff auf einen speziellen Cookie
  • %{xxx}r - Attribut aus dem ServletRequest
  • %{xxx}s - Attribut aus der HttpSession
  • %{xxx}t - erweitertes Pattern für die Darstellung eines Zeitstempel
Damit können neben den herkömmlichen Informationen noch weitere, eventuell für die Analyse spannende, Zugriffsparameter geloggt werden.

Genug der grauen Theorie, wie sieht das ganze in der Praxis aus? Begonnen wird mit einem einfachen Pattern, bestehend nur aus dem grundlegenden Pattern - es werden noch keine Informationen aus dem Header inkludiert.


Geloggt wird in diesem Fall der Name des Threads, ein Zeitstempel, der Status der Antwort, die URL, sowie Dauer des Requests und die Zeit zum Erstellen des Response. Die Ausgabe sieht dann wie folgt aus:


Es finden sich dort bereits einige sinnvolle Informationen, allerdings reicht das in vielen Fällen für eine detaillierte Zugriffsstatistik nicht aus. Daher werden nun die Informationen aus dem Header des Requests gezielt ergänzt. Zugegriffen wird über den Namen eines konkreten Header-Feldes [4]. Wird beispielsweise der aufrufende Browser benötigt, so kann dieser mit %{User-Agent}i ermittelt werden. Ein erweitertes Mapping könnte wie folgt aussehen:


Je nach Browser wird ein unterschiedlicher User-Agent geloggt. So können beispielsweise schnell Auswertungen über die Verteilung der Browser beim Zugriff auf die Anwendungen gemacht werden.


Natürlich können nicht nur die Daten aus dem Request ausgegeben werden, sondern auch die Felder aus dem Header der Response können geloggt werden. Dafür wird das Pattern zum Zugriff auf die Felder leicht modifiziert, anstelle eines 'i' folgt den geschweiften Klammern nun ein 'o'. So kann beispielsweise mittels %{Expires}o die Ablaufzeit einer ausgelieferten Datei mit ausgegeben werden - der Übersichtlichkeit halber wurden die vormals definierten Attribute vorübergehend entfernt.


Im Logfile wird nun die Ablaufzeit als Teil der Response mitgeloggt.

Neben dem Zugriff auf den Request oder die Response ist der Zugriff auf spezielle Cookies einer Anwendung in Teilen ebenfalls nützlich. Da in einer einfachen Instanz eines Tomcat keine Anwendungen vorhanden sind, wird der Cookie per Firebug [5] manuell erstellt.


Damit der Cookie an den Server mitgeschickt wird, muss an dieser Stelle ein weiteres Addon genutzt werden. Mit Hilfe des  HTTPRequester [6] kann der Request so manipuliert werden, dass der Cookie mitgeschickt wird. Der mit Firebug erstellte Cookie wird kopiert und als Parameter des Headers mit Hilfe des HTTPRequester mitgeschickt.


Mit Hilfe des Pattern %{MyPresentForTheCookieMonster}c kann nun auf den Cookie zugegriffen und der Inhalt im Logfile ausgegeben werden.



Die weiteren Zugriff, wie beispielsweise auf den ServletRequest oder auf die HttpSession sind sicherlich in manchen Fällen hilfreich, führen an dieser Stelle allerdings etwas zu weit. In beiden Fällen besteht allerdings somit eine sehr mächtige Möglichkeit konkret auf Daten aus einer speziellen Anwendung zurückzugreifen. Damit sind dann auch fachliche bzw. anwendungsspezifische Auswertungen denk- und realisierbar. Eine umfangreiche Darstellung der damit verbundenen Möglichkeiten ist an dieser Stelle allerdings nicht möglich und so bleibt es bei der einfachen Erwähnung der Möglichkeiten.

Der letzte spannende Punkt ist allerdings noch das Logging des Zeitstempels über das erweiterte Pattern %{$mySimpleDateFormatPattern}t. Dabei steht der Platzhalter $mySimpleDateFormatPattern für ein beliebiges, vom SimpleDateFormat erlaubtes Pattern. Mit den Erweiterungen begin und end können der Beginn des Requests und das Ende einer Response ausgegeben werden, mit der Angabe mehrerer Token ist es dann möglich sowohl den Start des Requests, wie auch das Ende der Response in einer Zeile auszugeben. Folgendes Beispiel macht dies etwas deutlicher:



Damit sollten alle wesentlichen Punkte für das erweiterte Logging per Access Log Valve angesprochen sein und vielleicht ist genau dieser Artikel für den einen oder anderen nützlich, wenn mal wieder die Rede von Nutzerstatistiken und Datenerhebung für den Zugriff auf die Server ist.


[1] http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve
[2] http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Logging/Attributes
[3] http://httpd.apache.org/
[4] http://de.wikipedia.org/wiki/Liste_der_HTTP-Headerfelder
[5] https://addons.mozilla.org/de/firefox/addon/firebug/
[6] https://addons.mozilla.org/de/firefox/addon/httprequester/

30.07.2014

Donauradweg - Etappe #17 und #18

Erst beim Frühstück wird so langsam klar wer nun wie viel Geld für die Übernachtung bekommt. Schlussendlich landen wir bei 2000 Ft. pro Person. Das ist in Ordnung, der Abend war es auf jeden Fall wert. Durch die ganzen Unklarheiten komme ich erst gegen 09:30 Uhr aus Szentendere los. Ist aber nicht so schlimm, da ich schon knapp 30km vor Budapest bin. Frühstück gibt es aber für mich erst etwas später, ich fahre zuerst ein paar Meter.


Nach der Stärkung mit Brötchen und Kakao geht es direkt auf den Weg in Richtung Budapest. Der Weg nach Budapest ist idyllischer als die letzten Tage, aber durch das Wochenende auch bereits am Morgen sehr voll. Ich rolle langsam durch die unterschiedlichen Vororte.




Bei der Einfahrt in die Stadt verfahre ich mich natürlich wieder und lande prompt auf einer viel befahrenen Straße. Es ist warm, ich habe wenig Geduld und der eigentlich angepeilte Campingplatz ist leider geschlossen. Ich bin froh als ich die Skyline von Budapest sehe.


Ich fahre noch ein wenig durch die Gegend, suche mir ein Hotel und checke gegen späteren Nachmittag ein.


Ich habe mich für ein Novotel-Hotel entschieden, fahre mit dem Rad in die Lobby, reserviere mir ein Zimmer und lasse mein dreckiges Rad vom Concierge in den Keller schieben. Für einen Fahrrad-Parkplatz muss erstmal ein kompletter Raum ausgeräumt werden. Ich tippe mal, dass hier schon lange keine Gäste mit Fahrrad mehr waren.

Nach einer kurzen Ruhepause entschließe ich mich noch mal wieder in die Stadt zu fahren und schlendere noch ein wenig durch Budapest. Budapest hat zwei Gesichter, nicht nur Buda und Pest, sondern auch die Touristensicht - alles in sauber, glanzvoll und gepflegt, und dann die Arme-Leute-Sicht - Obdachlose und sehr, sehr viel Müll. Gegen Nachmittag bekomme ich noch mit wie ein Obdachloser vom Leichenwagen aufgesammelt wird und ein zweiter wenig später versucht wird wiederzubeleben - natürlich alles abseits des Tourismus. Auf der offenen Straße prügeln sich zwei Frauen, die Flyer-Verteiler einer christlichen Organisation stehen 10m daneben und schauen einfach nur zu. Für mich nach der Tour durch die Natur alles eher befremdlich, ich kaufe nur noch ein paar Lebensmittel und verschwinde im Hotel.

Am nächsten Morgen geht es um 05:30 Uhr raus um die Stadt mit dem Fahrrad zu entdecken. Alles ist leer, ruhig und eigentlich genauso wie ich es gerne hätte. Die Touristen schlafen noch und  ich fahre ein wenig durch die Stadt. Sehr, sehr angenehm, so hätte ich das gerne vorher gehabt.















Im Anschluss gehe ich noch einen Kaffee trinken und setze mich in ein kleines, aber feines Café. Im liebevoll geführten Fekete fühle ich mich sofort wohl und freue mich, dass ein solches Kleinod dort noch zu finden ist. Ich hoffe, dass die Besitzerin das lange halten kann.


Den Nachmittag verbringe ich im Hotel, lese, schreibe Tagebuch und gammel einfach nur rum während ich das Finale zwischen Djokowitsch und Nadal schaue. Später noch ein Besuch in der Sauna und schlussendlich der letzte Kaffee und gleichzeitig der Abschluss meiner Reise. Am nächsten Morgen geht es nach Hause.




#selfie
Brötchen, Kakao #frühstück

Pizza, Chips und Bier #abendessen

70km #tageskilometer

1305km #gesamtkilometer

80:51 hh:mm #zeit_in_bewegung

16.1 km/h #durchschnitt