neunzehn83.de

Ein Mann, ein Blog, kein Plan.

glTail mit Chipmunk 2D Physics unter Windows

glTail ist eine in Ruby geschriebene OpenGL-Anwendung zur Visualisierung von Logfiles in Echtzeit. So sieht das aus:

Nett! Das funktioniert praktisch mit jeder Logdatei (Webserver, Mailserver usw.) dank SSH auch auf entfernten Servern. Die Installation unter Windows ist leider nicht dokumentiert. Genauer gesagt ist gar nichts dokumentiert.

Um glTail unter Windows zum Laufen zu bringen ist etwas Handarbeit nötig. Da es mich selbst viel Nerven und Zeit gekostet hat, habe ich hier mal alle benötigten Schritte aufgeschrieben:

Installation

  1. glTail herunterladen: http://github.com/Fudge/gltail

    oben auf Download klicken, aktuell ist die Version 0.1.7
    Die zur Zeit von diesem Tutorial aktuelle Version gibt's hier: [Fudge-gltail-e5b252d](files/2009/Fudge-gltail-e5b252d.zip)

  2. Ruby installieren: Ruby One-Click Installer

    1.8.6-27 Release Candidate 2 vom 19.11.2008. Version ist im Prinzip aber egal.
    "Enable Rubygems" Option beim Installieren aktivieren

  3. Ruby: ruby-opengl installieren

    ruby-opengl lässt sich, warum auch immer, unter Windows nicht kompilieren. Deshalb brauchen wir eine bereits kompilierte Version. Die gibts hier: http://rubyforge.org/frs/?group_id=2103 Konkret brauchen wir die ruby-opengl-0.60.1-x86-mswin32.gem Die Datei muss nach dem Download wieder in *.gem umbenannt werden (nicht entpacken!)

    RubyGems Package Manager starten:

    Start -> Ruby -> RubyGems -> RubyGems Package Manager
    Im Package Manager folgenden Befehl ausführen:
    gem install ruby-opengl-0.60.1-x86-mswin32.gem

    Vorher ins Verzeichnis wechseln, wo die zuvor heruntergeladene .gem-Datei liegt oder den Pfad entsprechend anpassen.

  4. Ruby gem: net-ssh & file-tail installieren

    gem install net-ssh
    gem install file-tail
  5. Chipmunk.so herunterladen: [klick](files/2009/chipmunk.zip)

    in dieses Verzeichnis entpacken: C:\ruby\lib\ruby\site_ruby\1.8\i386-msvcrt\

  6. glTail Anpassungen

    Die Datei "gl_tail" im bin-Verzeichnis braucht die Endung ".rb"

Konfiguration

glTail wird über YAML-Dateien konfiguriert. Das sind reine Textdateien. Wichtig ist hier nur die Einrückungen genau einzuhalten. glTail kann mit verschiedenen Configdateien benutzt werden. Die Configdatei wird immer beim Start von glTail mit übergeben. Die Beispieldatei "config.yaml" enthält bereits ein Beispiel für einen Apache-Webserver. Hier muss man nur Host/User/Passwort und den Pfad zur Logdatei anpassen.

SSH-Keys

Wenn man sich zu einem entfernten Server verbinden will, so empfiehlt es sich, dies über Public Key Authentication  zu tun. Auch das kann glTail von Hause aus. Statt:
password: topsecret
schreiben wir einfach:
keys: keys/key_server1
Dann erstellen wir im glTail-Root einen Ordner "keys". Darin sollte sich der Private-Key "key_server1" UND der Public-Key "key_server1.pub" befinden. Wichtig ist das beide Keys den selben Dateinamen haben und nur der Public-Key die Dateiendung ".pub" besitzt. In der Konfigdatei darf keine Dateiendung angegeben werden.

Tweaks

In der Configdatei können die minimalen und maximalen Kugelgrößen über folgende Parameter angepasst werden:
min_blob_size: 0.004
max_blob_size: 0.04
Ausprobieren ist angesagt..

Außerdem lässt sich das Abprallen der Kugeln am Rand und an einem Trichter einschalten

bounce: true

den "Bounce" kann man während glTail läuft auch mit der Leertaste an- und ausschalten.

glTail starten

Jetzt wird's Zeit glTail zu starten. Dazu öffnen wir die Windows CMD, wechseln ins glTail Verzeichnis und tippen:
bin\gl_tail config.yaml

glTail Fehlermeldungen / patches

undefined method `ord' for 32:Fixnum (NoMethodError)
Wenn diese oder ähnliche Fehlermeldungen erscheinen, müssen folgende Änderungen an glTail gemacht werden:
  1. Datei "lib\gltail\font_store.rb" öffnen

    Das ".ord" am Zeilenende in Zeile 38 - 40 muss entfernt werden. Vorher:
    font_data[offset + y*256*3 + x*3 +0] = @font[c][y*8*3 + x*3 + 0].ord
    font_data[offset + y*256*3 + x*3 +1] = @font[c][y*8*3 + x*3 + 1].ord
    font_data[offset + y*256*3 + x*3 +2] = @font[c][y*8*3 + x*3 + 2].ord
    nachher:
    font_data[offset + y*256*3 + x*3 +0] = @font[c][y*8*3 + x*3 + 0]
    font_data[offset + y*256*3 + x*3 +1] = @font[c][y*8*3 + x*3 + 1]
    font_data[offset + y*256*3 + x*3 +2] = @font[c][y*8*3 + x*3 + 2]
  2. Datei "lib\gltail\engine.rb" öffnen

    Zeile 144 ".ord" entfernen:
    143 def key(k, x, y)
    144    case k.ord
    145        when 27 # Escape
    Zeile 174 ".ord" entfernen:
    173 end
    174 puts "Keypress: #{k.ord}"
    175 glutPostRedisplay()
Danach sollte glTail ohne Probleme zum Server verbinden und die Log-Datei live visualisieren.

Logstalgia

Eine weitere Möglichkeit, Logfiles zu visualisieren bietet Logstalgia. Vorteil hier: Man kann es mit einer Log-Datei füttern, welche dann abgespielt wird. Zudem gibts ein fertiges Win32 binary. Kein gepatche notwendig.

Auch ganz nett!

Geschrieben am Samstag, 05. Dezember 2009 und abgelegt unter Webtechnik.