wircom
Goto Top

Dienst und GUI via SNMP kommunizieren lassen

Liebe Community,
ich habe hier ein für mich höchst interessante Aufgabe erhalten, die ich leider bislang noch nicht eindeutig lösen kann, es wäre super wenn jemand ein paar Lösungsansätze hat. In Form eines Brainstormings.

Aufgabe:
Es existiert eine entwickelte Software (sagen wir zur Haussteuerung) die vor Jahren mal erstellt wurde und auch kontinuierlich weiter gepflegt wird. Damals war die Trennung zwischen GUI und Anwendung nicht relevant, also packte man alles in einander. Soweit so gut, funktioniert auch einwandfrei.

Durch steigende Anforderungen an die Software und steigende Anforderungen vom Netzwerk und dem Betriebssystem (Microsoft) sind wir nun an einem Punkt angelangt, an dem wir die Anwendung, (Dienst) von der GUI (Benutzeroberfläche) trennen müssen.

Ein Grund zum Beispiel ist die Tatsache, dass die Anwendung auch dann funktionieren muss wenn kein User angemeldet ist. Die Oberfläche soll dann als User gestartet werden (gleicher PC) und die Anwendung entsprechend fragen was der User wissen möchte. Ebenfalls möchte ich im Step 3 das ganze System auch (extern) Monitoren können. Beispielsweise mit Nagios oder was ähnlichen.

Das ließe sich mit JMX, NET Framework und diverse anderen Programme auch (vermutlich recht schnell) realisieren, aber…
...der Clou bei der Sache ist der, dass die Anwendung und die GUI nicht unbedingt in der gleichen Programmiersprache erstellt werden sollen. Ebenfalls ist auch angedacht, die Informationen Plattformübergreifend zur Verfügung zu stellen. (Priorität ist aber sekundär).

Ich hatte mir wie folgt überlegt. Ich erfinde das Rad nicht neu und verwende die Idee der „Netzwerküberwachung von Geräten“. Dabei wird häufig das Protokoll SNMP genutzt, mit denen ich anhand einer MIB genau das erfahren kann was ich möchte.
Ich Programmiere meine Anwendung (Dienst) also so, dass er mir wie ein Netzwerkgerät, die Information zur Verfügung stellt die ich brauche. Anschließend Programmiere ich eine GUI, die als Monitoring System mir das darstellt was ich wissen möchte.

Der Transportweg ist SNMP v3. Die zu übermittelnden Informationen definiere ich in einer eigens für mich erstellten MIB Tabelle. (die meinetwegen auch bei der IANA registriert wird).

Zur Kernfrage an die Community
Ist dieser Gedanken überhaupt technisch machbar? Könnte ich den Zustand von (sagen wir 1000 Sensoren) damit abfragen, wenn diese sich pro Sekunde einmal ändern, ohne mir das Netzwerk lahm zu legen noch die GUI oder den Dienst in die „Knie“ zu zwingen?

Hat jemand das schon mal gemacht? Gibt es dazu weiterführende Informationen. Ich bin dankbar für alle Vorschläge.

Besten Dank vorab und Grüße ins Netz
WirCom

Content-ID: 190885

Url: https://administrator.de/contentid/190885

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

108012
108012 12.09.2012 um 21:21:02 Uhr
Goto Top
Hallo Wircom,

Vorab noch eins ich kann keine einzige Zeile Code schreiben, wenn ich also
hier und da eine Denkfehler mache nicht gleich ärgern. Damit will ich nur kurz sagen dass ich nicht mithalten kann ob man nun in Fortran77 oder C++ schreiben sollte und ob das auch mit den von mir gemachten Vorschlägen harmonisiert!

Also ich weiß ja nicht in welcher Sprache Ihr euer Programm zur Hausautomation
geschrieben habt und ich weiß auch nicht in welcher anderen Sprache Du vorhast eine GUI abzusetzen, aber ich würde Euer Programm auf einen Server laufen lassen
auf dem auch der PRTG von Paessler läuft und einen separaten Server für Nagios aufsetzen, zum einen um eine klare Aufgabenteilung vor zu nehmen, zum anderen um eine Lastverteilung vorzunehmen und via VPN kann man sich von außerhalb mit dem Netzwerk verbinden und auf die Server zugreifen um Sie zu administrieren.

Das man lokal eine Art Konsole hat oder auch eine GUI in der man einige Parameter einstellen kann ist schon in Ordnung nur die ganze Arbeit doppelt machen ist irgendwie doch Zeitverschwendung, oder nicht?

Nagios bietet hinsichtlich des Funktionsumfangs eine Fülle von Sensoren und scheint schier unendlich erweiterbar.

Alles was jedoch rein Netzwerk basierend ist, Router, Switche, Server würde ich durch PRTG anzeigen lassen wollen, der bringt auch einen MIB Konverter mit und
ist schnell erweiterbar und sogar Cluster fähig.

Man hat so schnell den Überblick und muss sich nicht durch einen undurchsichtigen
Wust von Informationen durch hangeln und eine Lastverteilung ist halt auch gleich vorgenommen, denn bei 1000 Abfragen in der Sekunde, wird nicht nur die Frage im Raum stehen ob Euer Netzwerk die Last verarbeiten kann, sondern das die Server nicht in die Knie gehen und die Auswertung weiter läuft.

Auf die Server kann man dann via VPN auch von außerhalb zu greifen und diese remote verwalten und administrieren, ebenso wie das Programm wenn es auf dem PRTG Server läuft.

Wenn alles an Dein eigenes Programm gemeldet wird und dann noch in der GUI
dargestellt werden soll ist das natürlich „doppelt gemoppelt“, lass doch Dein Programm entscheiden was alles abgefragt werden soll und lass dann den einen Teil
in Nagios anzeigen und um den anderen Teil kümmert sich der PRTG.

Die Ausgabe kannst Du ja auf zwei großen Monitoren lokal darstellen lassen.
Einen Monitor für die Hausautomation mit Nagios und einen Monitor für den PRTG.
Für beide Lösungen, Nagios und PRTG gibt es iOS und Android App´s, allerdings würde ich einen Laptop vorziehen, eine gute Gelegenheit dem Chef ein schönes MacBook abzuschwatzen und von dort aus erstellst Du halt eine VPN Verbindung und startest die iOS App´s, eine iPad wäre halt zu Monitoring schon ausreichend, aber falls Du mal an Eurem Programm etwas einstellen möchtest, ist das MacBook schon besser geeignet und das lässt sich auch via VNC schnell einrichten und realisieren.

Ist halt mal wieder die leidvolle Geschichte mit dem lieben Geld denn für „umme“ ist die Lösung nicht das gebe ich ja auch ehrlich zu.

Paessler hat auch eine Stress Test Tool im Repertoire vielleicht kann man damit schon einmal austesten wie die Netzwerklast in Gewicht fällt zumindest Server seitig.


Gruß
Dobby
WirCom
WirCom 13.09.2012 um 08:02:33 Uhr
Goto Top
Hallo Dobby,

erst mal ganz lieben Dank, dass du meine Anfrage, trotz Panne noch mal beantwortet hast. Respekt!

Übrigens kann ich auch keine einzige Zeile Code schreiben, wir sitzen also im gleichen Boot ;)

Zu dem versprochenen Feedback. Ich befürchte, dass ich mich im ersten Teil nicht konkret genug ausgesprochen habe, dafür erst mal sorry. Ich Versuchs mal zu kanalisieren.

Die Haussteuerung läuft auf einen PC. Dieser fragt kontinuierlich in irgendeiner Abtatsrate die Sensoren ab. Das geht, das ist performant das ist seit Jahren im Einsatz. Die GUI dazu wurde eigens dafür entwickelt und ist im selben Guß…keine Trennung,. Buttons und anzeigen liegen da wo ich Sie hin haben möchte, Zusatzfunktionen lassen sich schnell durch eine Brows Funktion hinzufügen. Soweit so gut…
GUI und Anwendung sollen getrennt werden. Die GUI soll nach Möglichkeit genauso aussehen (erst mal) wie die „alte“ GUI. Meinetwegen in der gleichen Programmiersprache und vom gleichen Entwickler. Der Datenaustausch der „sprachenabhängig“ vermutlich einwandfrei über pipes oder sonst was funktionieren würde möchte man aber „standardisieren“. Das wiederum macht die ganze Sache interessant, da der Standard hier den Anspruch erfüllen muss, dass es Programmiersprachen unabhängig ist. Dienst und GUI soll als singelton auf dem PC laufen, die Nagios oder sonst wie Netzwerk-Management Kontroll Software soll nur ein „zusätzliches“ Mittel sein um einzelne ausgewählte Werte zu überwachen. So als Bonbon.
Also zurück zum PC. Paessler ist sicherlich ein interessantes Tool, setzt aber auf dem Ziel auf viele Netzwerke zu überwachen und fällt unter die Kategorie „Bonbon“.
Hier ist die Anforderung wirklich was Neues zu machen, zu programmieren. Das Rad soll trotzdem nicht neu erfunden werden, weil das Protokoll, die Daten zwischen der GUI und dem DIENST meinetwegen was „alt“ bekanntes sein kann. Gerne auch kostenpflichtig. Der Anspruch „Freeware“ steht hier überhaupt nicht im Raum, wenn es was kostet und es erfüllt die Anforderung dann sehr gerne sogar.

Die „Haussteuerung“ hat sich hier im Laden so stark verfeinert, dass man damit recht viel und feinteilig steuern und regeln kann. Jede Abteilung hat da was eigenes für sich gamacht und nun will man „zusammenfinden“. Du darfst dabei nicht unbedingt an eine „stink normale“ Haussteuerung denken. Licht ein/aus. Ist da eher langweilig und programmieren die mir hier auf dem Weg zur Kantine. Interessanter wird es wenn du beispielsweise die Lichtstärke der Lampe, mit Brenndauer und Temperatur bekommen möchtest, die dann wiederum abhängig ist von der Gesamtbeleuchtungsstärke und meinetwegen auch der Tageszeit um zwischen warm und kalt licht umzuschalten.
Der Hausmeister möchte alles in seiner GUI sehen mit den Sachen die für Ihn relevant ist. Das können in dem Fall viele sein. Die IT möchte nur sehen, ob um 23 Uhr jemand das Licht anmacht, denn dann ist es ggf. ein Einbrecher.

Somit ist das umschwenken auf eine reine Netzwerküberwachungssoftware leider nicht der ganze Erfolg. Das SNMP Protokoll mit dem MIB und den OID Objekt Identifier, die jeden Sensor definieren hat für uns so viele Vorteile, dass wir gerade versuchen den Weg weiterzugehen und damit test durchzuführen. Hier auch noch mal die Frage, gibt es eine andere Lösung oder hat jemand schon mal die Anwendung über eine selbstgemachte SNMP OID GUI abgefragt?
Im Netz habe ich zwar selbstgestrickte MIB´s gefunden, keine selbstgestrickte GUI in der Kombination.
Klarer geworden? Wenn unklar, einfach noch mal fragen.
Ich habe alternativ mal einen anderen Artikel geschrieben…
Konzeptionierung der Kommunikation zwischen Benutzeroberfläche und Anwendung

Grüße
WirCom