11 Stimmen

Einfache Serverüberwachung mit Java

Ich suche nach einer Lösung, die es mir ermöglicht, den Ressourcenverbrauch eines Servers zu überwachen. Vorzugsweise sind die Metriken, die ich erhalten möchte, die Netzwerkauslastung IO und, wenn möglich, die durchschnittliche CPU-Nutzung/Last und die Festplatten-IO.

Die einzige weitere Anforderung, die ich habe, ist, dass diese Informationen von Java abgerufen werden können, damit sie manipuliert werden können, und zumindest unter Linux (Fedora) funktionieren.

Ich habe schon von einigen Überwachungsinstrumenten gehört, bin mir aber nicht sicher, wie ich das am besten angehen soll. Wahrscheinlich möchte ich die Informationen etwa alle 30 Sekunden abrufen.

Danke

Update: Um es noch einmal zu betonen: Ich beziehe mich auf die systemweite Überwachung und nicht auf die Java-spezifische Überwachung. Ich möchte nur Java verwenden, um auf diese Metriken zuzugreifen

3voto

Pascal Thivent Punkte 548176

Sie können die Überwachung an ein spezielles Tool delegieren, z. B. Kakteen , Centreon o Zenoss aber das könnte für eine einzelne Anwendung etwas zu viel des Guten sein.

Für eine einfache Lösung könnte JMX tatsächlich die bessere Lösung sein. Als Ausgangspunkt schlage ich vor, den folgenden Artikel zu lesen: Überwachung lokaler und entfernter Anwendungen mit JMX 1.2 und JConsole . Dann schauen Sie sich an Verwendung von JConsole zur Überwachung von Anwendungen ein sehr ausführlicher Artikel, der zeigt wie man mit JConsole auf verschiedene zentrale Überwachungs- und Verwaltungsfunktionen, die von der Java-Plattform bereitgestellt werden:

  • Niedrigen Speicherplatz erkennen
  • Verbose Tracing für GC und Klassenladen aktivieren oder deaktivieren
  • Deadlocks erkennen
  • Kontrolle des Loglevels aller Logger in einer Anwendung
  • Zugriff auf OS-Ressourcen - Sun's Plattform-Erweiterung
  • Verwalten der Managed Beans (MBeans) einer Anwendung

Aber, AFAIK, JMX gibt Ihnen keinen Zugang zu Netzwerk IO, so dass Sie eine Kombination dieser Werkzeuge benötigen. Zum Glück gibt es viele Tools (z.B. Cacti, SmokePing ) verwenden das RDD-Format, das Sie leicht mit Java-APIs wie JRobin o rdd4j .

2voto

SimonJ Punkte 20636

Ich fange an, mich für die gesammelt , ein modularer C-Daemon, der sich auf die Überwachung (und nicht auf die grafische Darstellung) konzentriert und eine Vielzahl von Plugins :

Es scheint mehrere Möglichkeiten zu geben, um Metriken in Ihren Java-Code zu bekommen:

  • in Bearbeitung, unter Verwendung der oben genannten Java-Plugin um einen Schreib-Callback zu registrieren, der Daten von den verschiedenen anderen Plugins empfängt
  • über das Netz, durch Einbettung jcollectd (eine Java-Implementierung des collectd-Protokolls) in Ihre Anwendung
  • indirekt, indem Sie in eine CSV- oder RRD-Datei schreiben und eine der verschiedenen RRD-Implementierungen für Java verwenden

2voto

Heiko Rupp Punkte 29262

Ich möchte nur RHQ (http://rhq-project.org/ ) in die Runde werfen :-)

1voto

Adamski Punkte 52945

Sie könnten die Verwendung des Ganglien Überwachungsinstrument. Es verwendet XML für die Datendarstellung, so dass ich mir vorstellen kann, dass der Zugriff auf die Daten von Java aus recht einfach ist. Außerdem hat es den Vorteil, dass es hochgradig skalierbar ist und die Möglichkeit bietet, Servermetriken für eine große Anzahl von Rechnern aufzuzeichnen.

0voto

nelsonslament Punkte 527

Am besten sehen Sie in /proc nach, wie die Ressourcen Ihres Systems genutzt werden /proc/cpuinfo und /proc/net/ sind ein guter Anfang.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X