(Created page with "{{Project |name=Chaosdorf Dashboard |description=hackerspace status display |project category=Hardware |location=Hackcenter |status=beta |people={{U|nomaster}}, {{U|uen}} }} =...") |
m (lolformatierung) |
||
Line 26: | Line 26: | ||
== Software == | == Software == | ||
Die Daten werden auf {{H|graphserver}} von einem [ | Die Daten werden auf {{H|graphserver}} von einem [http://graphite.wikidot.com/ Graphite]-Dienst gesammelt und gespeichert. Außerdem werden Daten per [http://collectd.org/ collectd] und [https://github.com/etsy/statsd/ statsd] angenommen und weitergeleitet. Auf {{H|webserver}} läuft Team Dashboard (Ruby on Rails), das die zusammengestellten Dashboards speichert. Auf dem Display läuft der Browser Luakit, der das Dashboard ''Chaosdorf'' anzeigt. | ||
== Hardware == | == Hardware == | ||
Line 43: | Line 43: | ||
Das Datenformat ist trivial. Datensätze werden als ASCII-String zeilenweise übergeben. Drei Felder, getrennt durch Leerzeichen, bezeichnen Namen des Knotens, Wert und Zeitstempel. | Das Datenformat ist trivial. Datensätze werden als ASCII-String zeilenweise übergeben. Drei Felder, getrennt durch Leerzeichen, bezeichnen Namen des Knotens, Wert und Zeitstempel. | ||
Beispiel: Angenommen, wir messen die Gesamtzahl bestellter Pizzen mit dem Programm Pizzaproxy. Dazu legen wir eine global eindeutige Bezeichnung des Messwerts fest. Dazu übertragen wir die Anzahl und den akutellen Zeitstempel (ermittelt per <tt>date +%s</tt> | Beispiel: Angenommen, wir messen die Gesamtzahl bestellter Pizzen mit dem Programm Pizzaproxy. Dazu legen wir eine global eindeutige Bezeichnung des Messwerts fest. Dazu übertragen wir die Anzahl und den akutellen Zeitstempel (ermittelt per <tt>date +%s</tt>). | ||
pizzaproxy.order.count 42 1359661113 | pizzaproxy.order.count 42 1359661113 | ||
Übertragen lässt sich der Wert per ''netcat'' | Übertragen lässt sich der Wert per ''netcat'': | ||
$ echo "pizzaproxy.order.count 42 1359661113" | nc graphserver 8080 | $ echo "pizzaproxy.order.count 42 1359661113" | nc graphserver 8080 |
Revision as of 20:47, 31 January 2013
Chaosdorf Dashboard beta | |
---|---|
hackerspace status display | |
Ort | Hackcenter |
Beteiligt | nomaster, uen |
Features
Auf einem Bildschirm sind Graphen und Zahlen lesbar, die aktuelle Daten zum Status des Hackerspaces anzeigen. Das Dashboard kann jedem Rechner im Chaosdorf konfiguriert werden unter dashboard.chaosdorf.dn42.
Derzeitige Anzeige
- Traffic am Internet-Uplink (graph, numbers)
- Traffic am Tunnel des Freifunk-Netzwerks (graph, numbers)
- Temperatur der Luft im Hackcenter (graph, numbers)
- Status der Chaosdoor (graph, boolean)
- Anzahl Hosts im Netzwerk (graph, number)
- Kassenstand (graph)
Geplant
- Stromverbrauch
- Musiktitel
- Uhrzeit
Software
Die Daten werden auf graphserver von einem Graphite-Dienst gesammelt und gespeichert. Außerdem werden Daten per collectd und statsd angenommen und weitergeleitet. Auf webserver läuft Team Dashboard (Ruby on Rails), das die zusammengestellten Dashboards speichert. Auf dem Display läuft der Browser Luakit, der das Dashboard Chaosdorf anzeigt.
Hardware
Graphite und Team Dashboard laufen in virtuellen Servern auf hyperion. Das Display ist an dashpi angeschlossen, einem Raspberry Pi an der Wand daneben. Die Temperatur wird von dem darüber hängenden embedded System gesammelt.
Mitmachen
Alle können unter dem oben genannten URL Dashboards erstellen und verändern. Dabei stehen alle Daten des Graphite-Servers zur Verfügung. Diesem können ohne weitere Konfiguration Daten hinzugefügt werden. Dazu laufen verschiedene Anwendungen auf Standard-Ports.
Ports
- Graphite: 8080 (TCP)
- CollectD: 25826 (UDP)
- StatsD: 8125 (UDP)
Das Datenformat ist trivial. Datensätze werden als ASCII-String zeilenweise übergeben. Drei Felder, getrennt durch Leerzeichen, bezeichnen Namen des Knotens, Wert und Zeitstempel.
Beispiel: Angenommen, wir messen die Gesamtzahl bestellter Pizzen mit dem Programm Pizzaproxy. Dazu legen wir eine global eindeutige Bezeichnung des Messwerts fest. Dazu übertragen wir die Anzahl und den akutellen Zeitstempel (ermittelt per date +%s).
pizzaproxy.order.count 42 1359661113
Übertragen lässt sich der Wert per netcat:
$ echo "pizzaproxy.order.count 42 1359661113" | nc graphserver 8080
Fertig! Nun ist der Datensatz bereits im Dashboard auswählbar.
Für die Ausgabe von Statistiken aus Anwendungen heraus empfiehlt sich jedoch UDP. Nach dem Motto “fire and forget” übernimmt der Server auf Port 8125 Datensätze per UDP, auch ohne Timestamp. Statsd sammelt nimmt die Daten an und überträgt sie gesammelt in einer 10 sekündigen Periode an Graphite.