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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190885
Url: https://administrator.de/contentid/190885
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
2 Kommentare
Neuester Kommentar
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
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