Seite wählen

NETWAYS Blog

JSON-Streams über HTTP

Viele Anwendungen sind darauf angewiesen, in Echtzeit Benachrichtigungen zu bestimmten Ereignissen zu erhalten:

  • Der Benutzer soll sofort über neue E-Mails benachrichtigt werden.
  • Notifications von einem Monitoring-System sollen durch eine Anwendung in der Taskleiste angezeigt werden.
  • Nachrichten, die per Instant Messaging versendet werden, sollten zeitnah beim Empfänger ankommen.

Zur Umsetzung solcher Anwendungen bieten sich durch die Verwendung von bekannten Standardprotokollen wie HTTP signifikante Vorteile:

Vorhandene Tools und Infrastruktur

Für HTTP gibt es in nahezu jeder Programmiersprache nativ integrierte Libraries. Hierdurch sinkt für Entwickler, die einen neuen Client für das Protokoll schreiben wollen der initiale Aufwand. Zwar unterscheiden sich die Anwendungen trotzdem noch an einigen Stellen (Wie sehen einzelne Messages aus? Welche URLs werden verwendet?), dafür werden andere Themen wie Authentifizierung bereits durch den Standard abgehandelt.
Um im Fehlerfall bzw. während der Entwicklung Probleme zu analysieren gibt es bereits etliche Tools. Diese reichen von einfachen konsolen-basierten HTTP-Clients wie curl und wget über Protokoll-Analyse-Tools wie Wireshark hin zu speziell für HTTP entwickelten Debug-Hilfsmitteln wie Fiddler.
Zusätzlich unterstützt HTTP mittels HTTP-Proxies „Routing“, da es in jeder Anfrage alle notwendigen Adressinformationen bereithält.

Streaming über HTTP

Nun ist HTTP zunächst ein Protokoll, das darauf basiert, dass für eine Anfrage jeweils genau eine Antwort übermittelt wird. Wie können wir nun also dem HTTP-Client unaufgefordert Events schicken?
Die einfache Grundlage hierfür ist eine Technologie, die als „Long Polling“ bekannt ist: Der HTTP-Client sendet hierbei zunächst einen Request und bekommt vom Server auch eine Antwort. Diese Antwort hat allerdings kein Ende: Der Server sendet über die noch bestehende Verbindung JSON-kodierte Ereignisse sobald sie vorliegen.
Der Client muss dazu die Möglichkeit haben, zwischen den einzelnen JSON-kodierten Ereignissen unterscheiden zu können. Am Beispiel von zwei JSON-Ereignissen möchte ich hier auf die unterschiedlichen Ansätze eingehen.
Beispiel:

  • { „id“: 1, „message“: „Hallo Welt“ }
  • { „id“: 2, „message“: „Dies ist ein Test.“ }

Inkrementeller JSON-Parser

Ein JSON-Parser, der den Datenstrom inkrementell parsen kann, hat die Möglichkeit, zu erkennen, an welcher Stelle eine JSON-Message aufhört und die nächste beginnt. Die Messages werden hierbei also einfach aneinander gehängt. Der Body der HTTP-Antwort würde dabei etwa so aussehen:

{ "id": 1, "message": "Hallo Welt" }{ "id": 2, "message": "Dies ist ein Test." }

Vorteil hierbei ist, dass die Implementation des Servers sehr einfach ist. Allerdings können nur wenige JSON-Parser inkrementell parsen, was die Entwicklung des Clients erschwert.

Eine JSON-Message pro Zeile

Hierbei werden einzelne JSON-Messages per Newline („\n“) getrennt. Beim Encoden der Messages muss darauf geachtet werden, dass diese selbst keine Newlines beinhalten.

{ "id": 1, "message": "Hallo Welt" }
{ "id": 2, "message": "Dies ist ein Test." }

Auf Clientseite ist dies im Regelfall recht einfach umzusetzen. Die Entwicklung des Servers wird minimal dadurch erschwert, dass mit Newlines innerhalb der JSON-Messages richtig umgegangen werden muss.

Längenangabe vor jeder JSON-Message

Bei dieser Möglichkeit sendet der Server vor jeder eigentlichen Message die Länge der JSON-Daten gefolgt von einem Newline:

37
{ "id": 1, "message": "Hallo Welt" }
45
{ "id": 2, "message": "Dies ist ein Test." }

(Wer nachzählt kommt möglicherweise darauf, dass die Längenangaben um ein Byte zu groß sind. Hierbei ist zu beachten, dass ich für dieses Beispiel aus Gründen der Lesbarkeit nach den JSON-Messages ein Newline eingefügt habe, das dann auch Bestandteil der Message ist und mitgezählt werden muss.)
Im Regelfall sollte es sowohl für Client als auch Server recht einfach sein, dies umzusetzen.

Clever die Temperatur via Netzwerk messen – HWg-STE und Neon 110

Da noch diese Woche die Temperaturen an der 30°C-Marke kratzen, stellen wir noch einmal unsere beliebtesten Geräte zur einfachen Temperaturüberwachung vor. Spätestens wenn Sie bereits einen Hitzeschaden an Ihrer Hardware hatten, wissen Sie die Vorzüge einer günstigen Temperaturüberwachung zu schätzen.
HWg-STE_IP_SNMP_Thermometer_800
HWg-STE: Unser günstiger Allrounder – ab 149,00 € erhalten Sie ein digitales Netzwerkthermometer inkl. allem was Sie zum Messen benötigen (3m IP67-Temperatursensor, Netzteil, MIB-Table, Plugin) – Natürlich gibts die Messwerte via Webinterface, Mail oder als Ausgabe fürs Monitoring (Plugin). Natürlich bieten wir noch andere Ausführungen an, wie beispielsweise PoE, Push (Messwerte via SensDesk-Portal), Plus (2 dry-contact inputs)… Darüber hinaus haben Sie die Möglichkeit, einen weiteren 1-Wire Sensor an das HWg-STE anzuschließen.
neon
Neon 110: Unser Neon 110 gibt’s zum Tiefpreis für 99,00 € – auch inkl. Sensor  (Temperatur und Luftfeuchtigkeit) und Netzteil. Eine PoE-Version gibt es nicht, das Neon ist halt wie es ist 🙂 Dafür aber mit Weboberfläche, Mailalarmierung und Messwerten via XML und Monitoring-Plugin.
99 € sind ja auch fast geschenkt und einem geschenkten Gaul… Sie wissen schon.
Natürlich kommt es immer auf die individuellen Gegebenheiten an, aber falls Sie sich nicht sicher sind, helfen wir Ihnen natürlich gerne und jederzeit weiter. Falls Sie Interesse an Lösungen für große Umgebungen haben, stöbern Sie doch einmal im Store – Sie werden sicher fündig!
Übrigens: bis 15:30 Uhr bestellt und die Ware ist schon am nächsten Werktag bei Ihnen.
SMS-Alarmierung? Die haben wir auch, schauen Sie doch mal unsere Ethernet-SMS Gateways an!

Neue Braintower SMS Gateways verfügbar

Braintower_Desktop
Braintower hat aufgeräumt. Ab sofort gibt es anstelle der begehrten Braintower SMS Gateway S, Braintower SMS Gateway S Advanced und des Braintower SMS Gateway L, nur noch das Braintower SMS Gateway Desktop-Edition und das Braintower SMS Gateway Rack-EditionUnter der Haube hat sich jedoch Einiges getan! So wird jetzt auf High-Performance Hardware gesetzt. Mit der neuen Hardware sind nun bis zu 60 SMS pro Minute möglich (Beachten Sie unsere Hinweise hierzu direkt in der jeweiligen Produktbeschreibung).
Und die Features? Die gibt es weiterhin, jedoch in Form von Modulen. Sie haben nun die Gelegenheit, Ihr Braintower SMS Gateway individuell mit Modulen nach Ihren Anforderungen zu bestücken. Und da hat Braintower wahrlich nicht mit Funktionen gegeizt, aber sehen Sie sich doch selbst einmal die verfügbaren Module an.

Empfängergruppen
Lassen Sie Nachrichten an eine Vielzahl von Empfängern weiterleiten. Vereinfachen Sie die Verwaltung komplexer, immer wiederkehrender User-Gruppen. Sparen Sie sich die Zeit, die dieser Vorgang manuell benötigen würde.
E-Mail to SMS
Nutzen Sie die E-Mail to SMS Funktion, um SMS – direkt und mit nur einem Klick – aus Ihrem eigenen E-Mail-System zu versenden. So sparen Sie Zeit und Aufwand in der Pflege eines weiteren Adressbuchs.
Monitoring
Das Monitoring-System des SMS Gateways behält die integrierte Umgebung genau im Blick und meldet Ausfälle und Schwankungen verlässlich und autark. So bleibt auch ein Ausfall Ihres Monitoring-Systems in der Nacht nicht unbemerkt.
SMS-Weiterleitung
Im betrieblichen Alltag ist die E-Mail nicht wegzudenken. Lassen Sie SMS als E-Mail Nachricht an einen oder mehrere E-Mail-Empfänger weiterleiten.
Text to DTMF
Die SMS wird an einen Festnetzanschluss weitergeleitet und mithilfe von DTMF-Tönen (Mehrfrequenzwahlverfahren) übermittelt.
Achtung: Nur mit einem neuen Gateway ab Werk verfügbar.
Auto Reply
Antworten Sie auf eingehende Nachrichten mit einer standardisierten und automatisch gesendeten SMS. Achtung: Modul SMS Weiterleitung wird benötigt.
High Availability
Hochverfügbarkeit ist gerade dort, wo das SMS Gateway kritische Aufgaben erfüllt, notwendig. Mehr Sicherheit bedeutete bessere Planbarkeit für einen reibungslosen Betrieb. Der Cluster läuft im Active/Passive Mode, ein Loadbalancen um mehr SMS-Durchsatz zu bekommen, ist nicht möglich.
Supportoption für SMS Gateway Desktop Edition
Sichern Sie sich gegen teure Ausfälle ab und profitieren Sie von einem erstklassigem Service. Die Support-Option für das Braintower SMS Gateway Desktop-Edition.
Supportoption für SMS Gateway Rack Edition
Sichern Sie sich gegen teure Ausfälle ab und profitieren Sie von einem erstklassigem Service. Die Support-Option für das Braintower SMS Gateway Rack-Edition.

Das kann sich unserer Meinung nach schon sehen lassen. Das haben Sie jetzt zu tun:

  1. Gateway aussuchen
  2. Module eintüten
  3. Kaufen drücken
  4. Montag über die Lieferung freuen (Desktop-Edition reichlich auf Lager)

Natürlich stehen wir bei Fragen auch unterstützend zur Seite. Für Braintower haben wir auch einen FAQ-Bereich aufgesetzt.

SMS unter Linux versenden – so einfach geht's

CT63_USB_SetEin wichtiger Bestandteil von Monitoringsystemen wie Nagios oder Icinga ist die Alarmierung. Wir bekommen viele Anfragen, wie eine sichere Alarmierung neben der klassischen E-Mail realisierbar ist. Oft bleibt dabei nur noch die SMS übrig, da sie ein kostengünstiges, aber effektives Mittel zur Alarmierung ist.
Heute möchte ich einen kurzen Einblick geben wie man SMS unter Linux verschicken kann – darüber hinaus gibt es einen kurzen Einblick in die Konfiguration vom Monitoring-System zum Versand der SMS.
Ganz wichtig für den SMS-Versand ist ein GSM-Modem. Hier bieten wir unseren Kunden zwei verschiedene Klassen an.
Zum einen gibt es USB-Modems – diese sind kostengünstig aber nur direkt an den Monitoring-Server anzuschließen – die Nutzung ist entsprechend der Signalqualität eingeschränkt. An dieser Stelle empfehlen wir unseren Kunden das CEP-CT63 USB powered – es braucht nur noch eine SIM-Karte – sonst ist alles dabei. Wer gerne auf eine Lösung mit Netzteil zurück greift, sollte sich das CEP CT63 ansehen – dieses eignet sich zusammen mit unserer CAT5/USB Verlängerung.
Auf der anderen Seite bieten wir auch SMS-Gateways mit LAN-Anschlüssen an. Diese eignen sich für Kunden, die Ihre SMS von mehreren Applikationen aus verschicken möchten oder auf gewisse Zusatzdienste nicht verzichten wollen. Diese SMS-Gateways bieten alle eine HTTP-Api – eine SMS wird mittels eines Aufrufs Links verschickt – die parameter werden alle in der URL übergeben. Sie haben die freie Wahl zwischen dem MultiTech iSMS oder dem Braintower SMS Gateway S.
Das Braintower SMS Gateway S Advanced bietet darüber hinaus noch eine Mail2SMS Schnittstelle und Reverse-Nagios Checks. Wenn das Gateway den Monitoring-Server nicht mehr erreicht – so kann es eigenständig eine Alarmierungs-SMS verschicken. Falls Ihre Applikation nur in der Lage ist E-Mails zu versenden – so haben Sie mit diesem Gateway die Möglichkeit auch diese als SMS zu empfangen.
Kommen wir nun wie versprochen zur Einrichtung und dem SMS-Versand mit unserem CEP CT63 USB powered unter Linux.

  • bauen Sie die SIM-Karte wie in der Kurzanleitung beschrieben in das Gerät ein – schließen Sie die Antenne an das Gerät an
  • öffnen Sie Ihre Linux-Shell
  • führen Sie folgendes Kommando aus
  • tail -f /var/log/messages
  • schließen Sie nun das Modem an den Computer an
  • Das Gerät wird ohne weitere Treiber erkannt in unserem Beispiel als „ttyACM0“
  • notieren Sie sich Ihre Ausgabe
  • öffnen Sie die Konfigurationsdatei Ihrer zuvor installierten SMS Server Tools 3 mit einem Texteditor
  • vim /etc/smsd.conf
  • kontrollieren Sie die farblich hervorgehobenen Feld und passen Sie diese ggf. an.

SMS-Servertools-Configblau: Gerätename – muss in der Definition und Konfiguration gleich sein
rot: Devicename: diesem haben wir ein paar Schritte vorher in /var/log/messages ermittelt
orange: keep open auf yes setzen – dies lässt die Verbindung zum Modem geöffnet und vermeidet Probleme

  • Speichern Sie nun Ihre Konfiguration und starten Sie SMS Server Tools neu
  • /etc/init.d/smsd restart
  • Testen Sie die erfolgreiche Konfiguration, geben Sie folgendes Kommando auf der Befehlszeile ein, ersetzen Sie die Telefonnummer durch die, wohin Sie die SMS schicken möchten
  • sendsms +4917185247569 ‚Hello, how are you?‘
  • Wenige Sekunden später bekommen Sie die SMS auf die angegebene Rufnummer zugeschickt – wenn nicht, suchen Sie nach dem Fehler in /var/log/smsd.log

In Nagios oder Icinga lässt sich das Modem mit folgender Konfiguration einbinden:
define command {
command_name    host-notify-by-sms
command_line    /usr/local/bin/sendsms  „$CONTACTPAGER$“ „$HOSTSTATE$ alert for $HOSTALIAS$! Check nagios“
}

define command {
command_name    service-notify-by-sms
command_line    /usr/local/bin/sendsms „$CONTACTPAGER$“ „$HOSTALIAS$n$SERVICEDESC$n$SERVICESTATE$nDate/Time: $DATE$ $TIME$n$SERVICEOUTPUT$“
}
Thats it – die Alarmierung läuft!
Wem die Alarmierung per SMS zu wenig ist – der sollte sich mal bei unseren Voice-Alarmierungen umsehen. Übrigens: für die SMS-Gateways mit LAN-Anschluss bieten wir auch einen Einrichtungsservice vor Ort an.

Multitab Remoteverbindungs-Manager

mRemote
Als ich letztens temp. von Linux auf Windows umstellen musste, waren die ersten Tage als Administrator doch sehr mühsam. Immer wieder das Putty auf machen, RDP vorbereiten und Co. Dazu fehlte mir die gewohnte Tab-Umgebung einer einfachen Linux Shell und deren Struktur zur Ordnung der ganzen Verbindungen. Nach ein paar Tagen hat mich das ganze dann so gestört, dass ich mich nach Alternativen umgeschaut habe. Denn das muss doch auch unter Windows irgendwie einfach unter einen Hut zu bekommen sein – und am besten auch kostenlos.
Fündig wurde ich dann bei einem eigentlich sehr alten Tool, welches sich mRemote nennt. Es bietet Windows Usern auf einer Open-Source Basis die Möglichkeit, gleich eine ganze Fülle von Verbindungsarten zentral zu Verwalten und zu Steuern. In der letzten freien Version werden folgende Protokolle unterstützt : RDP, VNC, ICA, SSH, Telnet, HTTP/S, Rlogin und Raw. Zus. bietet es auch einen integrierten Dateitransfer über SCP/SFTP an – also an sich eine Verbindung vieler Aufgaben in einem Programm.
Sehr zu erwähnen ist die Art und Weise, mit der man die ganzen Verbindungen Ordnen kann. Es gibt z.B. die Möglichkeit Verbindungen zu einer bestimmten Gruppe zusammenzufassen und diese dann in einem eigenen Sub-Tab zu betreiben. Diese wiederum kann man sogar an verschiedene Bereiche eines Bildschirms docken oder auf mehrere Monitore auftrennen und jederzeit frei verschieben. Experimentell kann man sogar die ganzen Verbindungen in einer Datenbank speichern um so die Verwaltung noch zu vereinfachen.
Die Erwähnung als ‚letzte freie Version‘ bezieht sich auf eine Zusammenlegung von mRemote mit dem Remote Desktop von visionapp. Neuer Features und Funktionen werden dann seit 2009 in einer kommerziellen Lösung weiter betrieben. Für Administrator, welche fest unter Windows arbeiten sicher ein nicht ganz unnützliches Tool. Und die Lizenzkosten halten sich auch auf einem sehr niedrigen Niveau.