Software und Komplexität

In dem Blog Coding Horror schreibt der Autor einen Artikel “The One Button Mystique“, dass er den Home-Button auf dem iPhone aus Usability Geschichtspunkten problematisch findet (Aber immer noch besser als gar keinen physischen Knopf). Man kann vermutlich geteilter Meinung sein, ob man das gut oder schlecht findet. Irgendwie kommen die meisten iPhone User aber ja wohl damit zu recht.
Sehr interessant finde ich allerdings wie er die Komplexität dieses einen Buttons veranschaulicht. Er hat sich die Mühe gemacht die verschiedenen Funktionen des Buttons, je nach der aktuellen Umgebung in ein Ablaufdiagramm zu packen:

Das ist doch ein wunderbares Beispiel für die Aussage “Der Teufel steckt im Detail”. Eigentlich denkt man, dass es sich bei diesem Knopf um eine recht einfache Sache handelt, die man ein, zwei oder dreimal drücken kann. In Wirklichkeit sieht das aber ein bisschen anders aus und erklärt eigentlich ganz gut, warum viele Softwareprojekte teuer werden als gedacht. Eine winzige Zusatzfunktion kann die Komplexität ungemein erhöhen ODER wenn man die Sache nicht gut durchdenkt, dann funktioniert es am Ende auch nicht ganz so wie gewünscht.
(via aptgetupdateDE)

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

Icinga-Mobile: Die Oberfläche für das Handy

Hat man schon einmal versucht auf einem Handy oder Tablet Icinga-Web zu benutzen, so ist mit Sicherheit aufgefallen, dass dieses nicht dafür ausgelegt ist um auf solch Geräten genutzt zu werden. Dafür wurde Icinga-Mobile entwickelt, welches sich schnell und effektiv über eine gut angepasste Oberfläche bedienen lässt.
Um Icinga-Mobile zu nutzen, wird im Vorfeld Icinga-Web benötigt und ein Benutzer, welcher die AuthKey Authentifizierung aktiviert hat. Sind beide Dinge gegeben, so lässt sich Icinga-Mobile recht einfach installieren.
Eine schöne Anleitung dazu findet sich im Wiki der Icinga-Projektseite. Wer Icinga-Mobile ausprobieren möchte dem steht eine Online-Demo zur Verfügung sowie eine Online-Galerie mit Screenshots.
Mit Icinga-Mobile hat man Zugriff auf alle wichtigen Funktionen. Es können mehrere Systeme oder Servicechecks ausgewählt und ähnlich wie bei Icinga-Web acknowledged werden.
Um eine Benutzerverwaltung zu erhalten, kann man sich mit einer Basic Auth behelfen, beispielsweise in Verbindung mit mod_ldap (Apache2), um eine einfache Anbindung an ein Active-Directory zu realisieren.

Request Tracker Mobile Interface

Für Request Tracker, ein beliebtes und technisch sehr mächtiges Ticketsystem gibt es ab sofort ein spezielles Webinterface für mobile Geräte. Die Erweiterung für den RT kann zusätzlich zum normalen Webinterface als Plugin installiert werden und erkennt mobile Geräte wie iPhone, Android oder Blackberry automatisch. Diese werden anschließend auf eine, speziell für kleine Displays optimierte Mobilversion des Webinterface weitergeleitet. Natürlich kann man trotzdem jederzeit auf das normale Interface zurück wechseln. Aktuell bietet das Mobile Interface des RT die folgenden Features:

  • Normale oder externe Authentifizierung
  • Erstellung von Tickets
  • Anzeige von Tickets inkl. Bearbeitungshistorie
  • Download von Ticket-Attachments
  • Suche im Ticketbestand und Anzeige von gespeicherten Suchanfragen

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

Sencha Touch – sind Webapps die besseren Apps?

Auch wenn mobile Apps aus Sicht des Anwenders nützlich sind, gibt es für den Entwickler doch sehr viele Hürden zu bewältigen, bis man eine mobile Version seiner Anwendung erstellen kann.
Immerhin muss man, will man möglichst viele Endgeräte abdecken, im schlimmsten Falle die gleiche Anwendung in verschiedenen Programmiersprachen und SDKs programmieren. Auch eine direkte Installation ist nicht bei allen Smartphones möglich – und immer den Umweg über den Hersteller des Gerätes zu gehen ist auch nicht immer praktikabel.
Das Ergebnis: Viele Entwickler, die gerne mal eine mobile Version ihrer Software entwickeln wollen, lassen lieber die Finger davon – oder bauen eine plattformspezifische Version.
Gerade wenn man nicht direkt auf Gerätehardware zugreift, können hier webbasierte Apps die Lösung darstellen.
Immerhin bietet HTML5 mittlerweile einen ganzen Sack voller Features, von denen man als Webentwickler vor einigen Jahren nichtmal zu träumen gewagt hat.
Das einzige, das noch fehlte, waren Bibliotheken, mit denen man diese Möglichkeiten auch für mobile Geräte effizient nutzen kann.
In diese Lücke springt Sencha Touch – ein Open Source Webframework, das sich zum Ziel gemacht hat, mobilen Webanwendungen das Look&Feel von nativen Apps zu geben. Und schaut man sich die Demos an, stellt man wirklich kaum einen Unterschied zu  klassischen Apps fest.
Die Pluspunkte von Webapps sind ganz klar: Man braucht keine spezielle SDK, keinen plattformspezifischen Code, das Programm muss nicht lokal auf dem Gerät installiert werden und man muss die App nicht erst prüfen und genehmigen lassen, um sie verteilen zu können.
Will man allerdings auf spezifische Hardware zugreifen, reicht der Webbrowser wohl (noch) nicht aus. Der Trend geht aber ganz klar zum gezielten Öffnen von Hardwareschnittstellen für den Browser (WebGL, Geolocation API, WebSockets, um nur ein paar Beispiele zu nennen…), also kann man gespannt sein was die Zukunft bringt.

Nagios Benachrichtigungen direkt an iPhone pushen

In einem früheren Blogartikel dieser Serie habe ich mich ja schon mit dem Thema beschäftigt, wie man Nagios Benachrichtigungen per Apples Push Mechanismus direkt an ein iPhone übertragen kann. Der damals vorgestellt Lösungsweg erfordert aber den Umweg über einen zwischengeschalteten Mac: Der Nagios Server schickt dabei seine Meldungen per Netzwerk an den dort laufenden Growl Client. Über ein Plugin in Growl werden die Meldungen dann an Prowl, einen ähnlichen Dienst für das iPhone weitergeleitet. Der Nachteil des Macs-in-the-Middle Ansatzes kann aber auch ein Vorteil sein: Man muss sich keine Gedanken über Eskalationen machen. Sitzt man am Rechner, bekommt man seine Meldungen dort lokal angezeigt. Ist man unterwegs und der Mac im idle Mode, werden sie zum iPhone weitergeleitet. Das geht vollautomatisch.
IMG_0321Trotzdem haben mich viele Leute angeschrieben und gefragt, ob es denn nicht auch einen Weg gibt, die Meldungen direkt an das iPhone zu verschicken, ohne den Mac dazwischen. Entweder weil das natürlich unnötig kompliziert ist oder viel naheliegender, weil sie gar keinen Mac haben. Natürlich geht das auch, denn Prowl stellt eine komplette API zur Kommunikation zur Verfügung, die man auch direkt vom Nagios Server aus ansprechen kann. Dies erfordert aber natürlich wie immer, wenn man einen Provider nutzt, dass der Nagios Server noch ins Internet kommt.
Hier also der komplette Weg, wie man einen direkten Push an das iPhone einrichtet:

  1. Als Service um die Benachrichtigungen zu pushen verwenden wir Prowl. Erstellen Sie sich dort unter “Register” einen persönlichen Account.
  2. Zur einfacheren Authentifizierung von Scripten verwendet Prowl einen API Key. Nach dem Einloggen können Sie diesen Schlüssel im Bereich “Settings” direkt anfordern. Kopieren Sie sich die Zeichenkette aus 40 Buchstaben und Ziffern am besten in die Zwischenablage. Wenn mehrere Personen Prowl Benachrichtigungen bekommen sollen, benötigt jeder einen eigenen Account und damit auch einen eigenen API Key.
  3. Installieren Sie sich die Prowl iPhone Applikation aus dem App Store (kostet einmalig 2,39, danach fallen keine weiteren Kosten mehr an). Nach der Installation müssen Sie auf dem iPhone nur noch Ihren Usernamen und Ihr Passwort angeben. Ob die Software korrekt installiert und konfiguriert wurde können Sie nun auf der Prowl Seite testen: Unter “Add A Notification” kann man aus der Website eine Prowl Testnachricht versenden.
  4. Nun geht es an die eigentliche Konfiguration auf dem Nagios Server. Zuerst laden wir uns das Prowl Perl Script direkt von Prowl herunter, kopieren es auf den Nagios Server und machen es ausführbar. Oder einfacher direkt auf dem Server:
    # cd /usr/lib/nagios/plugins/eventhandlers
    # wget http://prowl.weks.net/static/prowl.pl
    # chmod 755 prowl.pl
  5. Das Script benötigt einige Perl Bibliotheken. Auf einem Debian oder Ubuntu System lassen die sich mit
    aptitude install libwww-perl libcrypt-ssleay-perl

    installieren. Auf anderen Systemen muss man “perl -MCPAN -e shell” bemühen und dann die folgenden Pakete installieren:

    install Crypt::SSLeay
    install LWP::UserAgent
  6. Danach sollte man das Script zumindest einmal manuell testen, um sicherzugehen, dass alle notwendigen Bibliotheken installiert sind und die Kommunikation mit der Prowl API funktioniert:
    ./prowl.pl -apikey="APIKEY_HERE" -application="Nagios" -event="Notification" -notification="Dies ist eine Fehlermeldung"
  7. Nun geht es an die Integration in Nagios. Da der Prowl Account ja userspezifisch ist, sollte man den API Key am besten gleich bei dem passenden Benutzer mitspeichern. Es bietet sich dazu an, eine Custom Variable eines bestehenden oder neuen Kontakts zu benutzen:
    define contact {
    contact_name 			jhein_iPhone
    alias 				Julian Hein
    service_notification_period 	24x7
    host_notification_period 	24x7
    service_notification_options 	w,u,c,r
    host_notification_options 	d,u,r
    service_notification_commands 	notify-service-by-prowl
    host_notification_commands 	notify-host-by-prowl
    _prowl_apikey 			APIKEY_HERE
    }
  8. Als nächstes müssen nur noch die passenden Commands definiert werden:
    define command {
    command_name 	notify-host-by-prowl
    command_line 	$USER2$/prowl.pl -apikey="$_CONTACTPROWL_APIKEY$" -priority=1 -application="Nagios" -event="Host Notification" -notification="$HOSTNAME$ $HOSTSTATE$ '$HOSTOUTPUT$'"
    }
    define command {
    command_name 	notify-service-by-prowl
    command_line 	$USER2$/prowl.pl -apikey="$_CONTACTPROWL_APIKEY$" -priority=1 -application="Nagios" -event="Service Notification" -notification="$HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ '$SERVICEOUTPUT$'"
    }

Wichtig ist noch, dass der embedded Perl Interpreter ausgeschaltet ist, den sonst kann das Perl Skript nicht fehlerfrei ausgeführt werden. Dazu gibt es in der nagios.cfg eine entsprechende Direktive. Wird der ePN genutzt, kann man alternativ auch in der Command Definition den normalen Interpreter angeben. Statt “$USER2$/prowl.pl” müsste man dann “/usr/bin/perl -w /usr/lib/nagios/plugins/eventhandlers/prowl.pl” angeben.IMG_0320
Das wars eigentlich schon. Einfacher und günstiger kann man realtime Meldungen kaum auf sein mobiles Gerät senden. Man sollte sich allerdings klar sein, dass das ganze nur funktioniert, solange der Nagios Server sich noch mit dem Prowl Gateway im Internet verbinden kann. Zusätzlich gibt es ein API Limit von aktuell 1.000 Meldungen pro Stunde und natürlich garantiert Prowl keinerleih Verfügbarkeit. Aber das ist bei SMS ja auch nicht anders.

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

Nagios Benachrichtigungen per iPhone Push

Eigentlich hatte ich letzte Woche ja geschrieben, dass ich mich in dieser Woche mit SMS Benachrichtigungen beschäftigen will. Weil aber das Growl Thema von letzter Woche so gut ankam, werde ich lieber nochmal bei Growl nachlegen. Und das SMS Thema hat auch noch Zeit bis nächste Woche.
Mit iPhone OS 3.0 hat Apple ja nun endlich die Möglichkeit implementiert sogenannte Push Benachrichtigungen in realtime an ein iPhone zu versenden. Mit dieser Technik bietet sich nun ein einfacher und vor allem auch kostengünstiger Weg, das ganze auch für Nagios Benachrichtigungen zu verwenden. Zur technischen Implementierung gibt es Prowl, was so viel ist wie ein Growl Client für das iPhone. Das hatte ich ja letzte Woche vorgestellt um Benachrichtigungen von Nagios in realtime am Mac anzuzeigen. Diese Woche werden wir nun genau diese Growl Benachrichtigungen weiter an das iPhone pushen.
IMG_0287Gegenüber einer SMS hat Prowl vor allem einen klaren Vorteil bei den Kosten. Denn nach dem Kauf der iPhone App für aktuell 2,39 EUR, fallen keine weiteren Kosten an. Während eine SMS ja jedes mal beim Versenden etwas kostet. Im Vergleich zur ebenfalls kostenlosen eMail hat die Push Notification außerdem einen Geschwindigkeitsvorteil. Und zusätzlich bietet Prowl eine Historie aller Meldungen der letzten 30 Tage.
Interessant ist auch das Zusammenspiel mit dem Mac: Man kann Growl so einstellen. dass es nur dann Benachrichtigungen auf das iPhone weiterleitet, wenn der Rechner gerade im idle Mode ist oder diese Nachrichten eine bestimmte Mindestpriorität haben.
IMG_0286Wenn Ihr also nun überzeugt seit, sind folgende Schritte notwendig um sich Nagios Meldungen an das iPhone pushen zu lassen:

  1. Zuerst muss Growl eingerichtet sein und der Nagios Server seine Benachrichtigungen an einen Mac senden. Eine entsprechende Anleitung hatte ich letzte Woche hier gepostet.
  2. Melden Sie sich bei Prowl an und erstellen Sie sich unter Register einen Account. Durch diesen Service werden später die Benachrichtigungen an das iPhone versendet.
  3. Downloaden und installieren Sie das Growl Plugin. Nach dem Download das Zip-File entpacken und auf die Datei “Prowl.growlView” doppelklicken.
  4. Anschliessend werden Sie gefragt, ob Sie das Plugin gleich konfigurieren wollen, beantworten Sie die Frage mit Ja. Auf der Konfigurationsseite des Plugins geben Sie Ihre Prowl Accountdaten aus Schritt 2 an und klicken Sie Verify. Die anderen Optionen können Sie beispielsweise so angeben:
    prowl_growl_preferences
  5. Zuletzt muss nur noch auf Ihrem iPhone die Prowl Applikation installiert und konfiguriert werden. Mit diesem Link gelangen Sie direkt in den Appstore, wo Sie den Prowl Client für aktuell 2,39 EUR kaufen können. Danach fallen übrigens keine Kosten mehr an, d.h. der Versand der eigentlichen Nachrichten ist im Gegensatz zu SMS kostenlos. Nach der Installation starten Sie die Applikation und geben dort ebenfalls Ihren Prowl Usernamen und Ihr Passwort ein.
  6. Damit ist die Einrichtung fertig. Wie schon bei Growl, können Sie auch Prowl manuell testen, indem Sie auf dem Nagios Server folgendes eingeben:
    # ./grotify -H IP_Adresse_Mac -a Nagios -p Passwort -t "Nagios Notification" -m "Testalert"

Viel Spass mit den gepushten Benachrichtigungen. Nächste Woche geht es dann aber wirklich um SMS, insbesondere den einfachsten, schnellsten und vor allem kostengünstigsten Weg SMS Benachrichtigungen zu implementieren.

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

Links 007

Monitor Dell Servers Running Windows Server Using Nagios and SNMP
Use Nagios to trend and troubleshoot performance issues
Windows Vista Nagios Gadget
iNagios: Simple iPhone interface to your Nagios monitoring server.
Managing a Nagios Configuration with SVN
Best Practices for Designing a Nagios Monitoring System

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

Unser Blog jetzt auch fürs iPhone

Das NETWAYS Blog gibt es ab sofort auch in einer speziellen Version für das iPhone. Die WordPress Extension WPtouch bereitet den Inhalt für Besucher mit einem iPhone speziell für das kleinere Display auf.
Bei uns intern ist in den letzten Wochen nochmal ein erneuter iPhone Hype ausgebrochen. Nicht durch das iPhone 3G, sondern durch die neue 2.0 Firmware, die endlich ActiveSync und somit Exchange nativ unterstützt. Damit entfällt der lästige Umweg der Synchronisierung über iTunes für Kalender und Kontakte, bzw. IMAP für Mails. Alles kommt jetzt ohne Kabel und in realtime aufs Telefon. Auch unser Blog 🙂

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.