Javaprozesse intern identifzieren

bish

Mitglied
Hallo,
ich hoffe ich bin hier im richtigen Bereich. Folgende Situation:

Wir haben auf einem Windowsserver Anwendungen mit verschiedenen .exe laufen. Zwei dieser .exe werden über Java ausgeführt, sprich man sieht im Windows-Taskmanager zweimal die Prozesse "java.exe"

Im Zuge einer Systemüberwachung möchten wir nun überwachen ob alle unsere Prozesse laufen, die für den Serverbetrieb notwendig sind. Wir können hierfür die Prozesse des Servers auslesen und sehen dann z.B. folgendes Ergebnis

anwendungsexe1.exe
anwendungsexe2.exe
anwendungsexe3.exe
anwendungsexe4.exe
java.exe
java.exe

Anwendungsexe1-4 können wir also direkt identifzieren und feststellen, dass diese laufen (oder eben auch nicht). Problem machen die beiden Prozesse die in JAVA laufen, da wir nach außen hin nur zweimal die java.exe sehen.

Meine Frage ist nun: Gibt es eine Möglichkeit "in" diese java.exe reinzugucken um zu sehen, was von denen ausgeführt wird. Also dass ich von außen sehen kann, dass die eine java.exe z.B. "anwendungsexe5" ausführt und die andere "anwendungsexe6" um so auch die beiden JAVA-Prozesse überwachen zu können.

Man könnte zwar auch einfach gucken ob zweimal die "java.exe" läuft aber damit weiß man noch nicht ob es wirklich die anwendungsspezifischen Prozesse sind oder nur irgendein dahergelaufenes Javaprogramm.

Ich hoffe meine Frage verständlich formuliert haben und noch mehr hoffe ich, dass jemand darauf eine Antwort weiß :)

Grüße und schonmal danke!
 

Andi_CH

Top Contributor
Ich kenne das Tool nicht, aber meine ersten Gedanken sind folgende:

"reinschauen" geht nur, wenn der Prozess eine entsprechende Schnittstelle zur Verfügung stellt.
Wenn ihr die Serverprozesse selbst programmiert könnt ihr diese Schnittstelle ja schaffen. Ein Prozess kann z.B. auf eine Anfrage "Lebst du noch" ein "Nein" zurücksenden falls er abgestürzt ist :D (Ist ja klar was ich meine)

So eine Art "Ping".

In einem konkreten Projekt haben wir das so implementiert, dass die Prozesse ihren Status lieferten und der Überwachungsprozess diese Stati anzeigen konnte. (Bei den einen war das die Auslastung, bei den anderen nur "ja ich lebe noch".

Der Überwachungsprozess selbst wurde von den nicht zeitkritischen Prozessen aus angefragt und notfalls neu gestartet.
 

bish

Mitglied

Klingt schonmal interessant, leite ich mal an unsere NAGIOS-Leute weiter ob man das kombinieren kann. Danke schonmal dafür.



Ich kenne das Tool nicht, aber meine ersten Gedanken sind folgende:

"reinschauen" geht nur, wenn der Prozess eine entsprechende Schnittstelle zur Verfügung stellt.
Wenn ihr die Serverprozesse selbst programmiert könnt ihr diese Schnittstelle ja schaffen. Ein Prozess kann z.B. auf eine Anfrage "Lebst du noch" ein "Nein" zurücksenden falls er abgestürzt ist :D (Ist ja klar was ich meine)

So eine Art "Ping".

In einem konkreten Projekt haben wir das so implementiert, dass die Prozesse ihren Status lieferten und der Überwachungsprozess diese Stati anzeigen konnte. (Bei den einen war das die Auslastung, bei den anderen nur "ja ich lebe noch".

Der Überwachungsprozess selbst wurde von den nicht zeitkritischen Prozessen aus angefragt und notfalls neu gestartet.

Programmieren wir leider nicht selber, ist eingekaufte Fremdsoftware :/ Und es geht ja auch nicht darum, ob wir rausfinden ob der Javaprozess noch läuft (also die java.exe) sondern das was wir "in" Java" lauefn lassen, quasi unsere "anwendung6.exe" :/ Ein Mitarbeiter an der Uni die sich mit Botnetzen, Computersicherheit und so beschäftigen und auch sehr viel mit der JVM arbeiten wusste halt auch keine Möglichkeit "in" JAVA reinzugucken, daher frage ich mal hier ob jemand noch eine Möglichkeit kennt.

Dermüde Joe hat ja etwas geliefert was man mal ausprobieren müsste. Mal gucken wann die Leute die die Überwachung technisch realisieren dafür Zeit haben das zu testen ob das klappt. Das Absetzen von Commands geht ja mittels Nagios ohne Probleme
 

Ähnliche Java Themen


Oben