![]() |
Service fernüberwachen
Ich muss für ein Projekt, welches aus verschiedenen Programmen und mehreren Diensten besteht, die Möglichkeit einbauen, dass von einem entfernten Arbeitsplatz die Dienste überwacht werden können.
Im genaueren geht es darum, dass die Pförtner in ihrem Kassenprogramm (gehört auch zu diesem Projekt) eine Info sehen sollen, ob die Serverdienste (gehören ebenfalls zu diesem Projekt) laufen, und diese ggf. auch starten können sollen. Letzteres allerdings ohne sich auf den Server aufschalten zu müssen, denn diese Rechte sollen sie nicht bekommen. Wie würde man so was am Sinnvollsten realisieren. Sowohl die Anzahl der zu überwachenden Dienste, als auch die Anzahl der überwachenden Programme kann sich verändern. Das Starten der Dienste kommt später, das werde ich wohl über einen Helperservice realisieren. Erst mal soll aber die Überwachung laufen. Ich hatte mir überlegt, das per UDP-Broadcast zu machen. Soll heißen, jeder Dienst sendet einen UCP-Broadcast in definierten Intervallen ins Netzwerk. Jeder gestartete Client kann diese empfangen. Kommt von einem Dienst keine Broadcast mehr, so kann man ja davon ausgehen, dass er nicht mehr reagiert, pausiert oder beendet wurde, und der Pförtner kann reagieren. Wäre das mit einem UDP-Broadcast schon das sinnvollste, oder gibt es noch bessere Möglichketen? Später kann ggf. der Helperservice selbst einen Neustart der Dienste übernehmen, aber die Pförtner sollen auf jeden Fall sehen können, ob die benötigten Dienste laufen. |
AW: Service fernüberwachen
Ich würde die Überwachung der Dienste nicht in den Diensten selbst implementieren, sondern in einem eigenen Dienst.
So kann sich der Dienst auf seine Kernaufgabe konzentrieren. Außerdem kannst Du dann den Überwachungsdienst einfacher auf weitere Dienste ausweiten, ohne die zu überwachenden Dienste anfassen zu müssen. Bei dem Überwachungsdienst würde ich sowas wie einen Observer implementieren, wo die Clients ihre Interesse an dem Status eines bestimmten Dienstes kund tun können. Der Überwachungsdienst informiert dann die Clients über Änderungen und nimmt auch Start- und Stopanforderungen an. Hier wäre auch die Möglichkeit z.B. ein Rechtesystem zu implementieren, ohne die zu überwachenden Dienste anfassen zu müssen. |
AW: Service fernüberwachen
Zitat:
Grüße Klaus |
AW: Service fernüberwachen
Einen kleinen Service gebaut mit einem
Delphi-Quellcode:
der dann z.B. eine Status-Seite anzeigen kann und darüber auch die Dienste startet.
TIdHTTPServer
Dabei werden einfach irgendwelche Links von dem Server aufgerufen und damit eine bestimmte Aktion ausgelöst. PS: Richtig nett/flexibel wird das, wenn du erst eine kleine REST-Schnittstelle implementierst. Dann kannst du dir überlegen ob du das komplett über HTML-Seiten machen möchtest und/oder über eine eigene Anwendung (Desktop/Mobil). Das ist dann wurscht, weil alle nur noch bestimmte Links aufrufen um die Aktionen auszulösen ;) |
AW: Service fernüberwachen
Das mit dem THTTPServer ist ne gute Idee. Den würde ich dann im Helperservice unterbringen, welcher seinerseits die Workerservices überwacht, bzw. abfragt (Ich will ggf. auch noch ein paar Statusinformationen auslesen).
Vor allen Dingen die Tatsache das ggf. auch noch auf mobilen Endgeräten darzustellen finde ich richtig nett :) Jetzt muß ich mir nur noch überlegen, wie Kommunikation zwischen den Diensten möglichst schlank realisiere. Auch über REST? Zitat:
Zitat:
|
AW: Service fernüberwachen
Grad gesehen, die RestClient-Komponente gibt's in meinem XE4 noch gar nicht :( (oder ich bin blind)
|
AW: Service fernüberwachen
Zitat:
|
AW: Service fernüberwachen
Ob ich dafür tatsächlich ein DataSnap benutzen würde ...
Eigentlich brauchst du nur die HTTP-Server-Komponente und sendest an den fröhlich deine Requests und von dem den Response. Wenn das was du hin- und herschickst z.B. JSON-Daten sind, dann ist das schon REST ;) |
AW: Service fernüberwachen
Die Komponenten hätten dir in dem Fall sowieso nur leidlich geholfen. Schau mal, ich hatte vor nicht mal einer Woche genau die gleiche Frage:
![]() |
AW: Service fernüberwachen
Da ich keine zusätzlichen Komponenten einsetzen möchte, sondern nur das, was Delphi von Haus aus liefert, kann ich ja nur auf TCPServer zurückgreifen, oder sehe ich das falsch?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz