Frage

Ich möchte eine Anwendung finden oder zu entwickeln, die als Dämon ausführen kann, benachrichtigen Sie den Administrator per E-Mail oder SMS, wenn die Java-Anwendungen, die auf einem Host alle Ausnahmen oder Fehler erhalten. Ich weiß JVMTI kann ein Teil meines Ziel erreichen , aber es wird die Leistung der überwachten Anwendungen auswirken (ich weiß nicht, wie viel wird es sein, wird es akzeptabel, wenn es leichter ist), außerdem ist es ein troublesom Job zu sein scheint ein JVMTI Mittel zu entwickeln, und ich bin nicht sicher, was passieren würde, wenn mehrere Anwendungen gleichzeitig mit dem gleichen Agenten ausgeführt wird. Gibt es bessere Lösungen? Vielen Dank im Voraus.

War es hilfreich?

Lösung

Eine Möglichkeit wäre es, ein Logging-System wie log4j zu verwenden, die auf System B auftretenden alle Fehler auf System A zu einem Logging-Server veröffentlicht, von dem Sie die Fehler aufgetreten überwachen können. Dies ist kein vollständig generisch solutation jedoch, da nur Ausnahmen von log4j propagierten (oder ein anderes Logging-System) behandelt werden würden -. Aber es kann ein guter Anfang sein

Andere Tipps

Die beste Lösung ist die Java-Anwendung zu haben, seine Fehler per E-Mail / SMS senden. Das Problem ist, dass die Programme Ausnahmen erzeugen und korrekt im Normalbetrieb behandeln. Sie wollen nur bestimmte Ausnahme.

Dieses Andernfalls könnten Sie einen Log-Leser schreiben, die die Protokolle der Anwendung liest. Dies ist schwierig richtig zu machen, aber es kann getan werden.

Eine Anwendung kann 1000+ Ausnahme pro Tag erzeugen und noch normal sein Verhalten, weil die Anwendung weiß, wie diese Ausnahmen zu behandeln. z.B. jedes Mal, wenn eine Socket-Verbindung ist eine Ausnahme geschlossen kann geworfen werden.

IMO, der beste Ansatz ist, ein externes Monitoring-System zu implementieren. Dies kann:

  • Monitor mehr Anwendungen
  • Monitor Infrastrukturdienste
  • Monitor Netzverfügbarkeit und Zugänglichkeit der Maschine,
  • Monitor Ressourcen wie Prozessor und Dateisystemnutzung.

Anwendungen können in einer Vielzahl von Arten überwacht werden, einschließlich:

  • durch Protokollereignisse verarbeiten,
  • nach für die Anwendung neu gestartet wird beobachtet,
  • durch die Anwendung der Web-APIs „Pingen“ Service Vitalitäts zu überprüfen und
  • durch die Anwendung der JMX-Schnittstellen verwenden.

Diese Informationen können in einer intelligenten Art und Weise gefiltert und priorisiert werden, und kritische Ereignisse können gemeldet werden, was auch immer Mittel am besten geeignet ist.

Sie wollen nicht einzelne Anwendungen E-Mails zu senden, weil sie nicht über ausreichende Informationen, einen anständigen Job zu tun. Darüber hinaus setzt die Berichtslogik in einzelne Anwendungen wahrscheinlich zu einem uneinheitlichen Umsetzung, schlechte Konfigurierbarkeit führen, und so weiter.

Es ist eine naheliegende Alternative zu JVMTI: JPDA . Diese Infrastruktur ermöglicht es Ihnen, einen Remote „Debugger“ zu erstellen (ja, das ist, was Sie planen, zu tun) Java-Code verwenden, und schließen Sie es an die VM entweder lokal oder remote-Verbindung.

Es wird, wie für JVMTI, Overhead zu Programmausführung. Da jedoch die Trace.java Beispiel zeigt, es ist ganz einfach sowohl implementieren und verbinden VM abzuzielen.

Schließlich Hinweis, wenn Sie Instrument Code laufen durch Anwendungsserver möchten (JBoss, Glassfish, Tomcat, können Sie es nennen) gibt es verschiedene andere Mittel zur Verfügung.

folge ich dem Muster, in dem jede Ausnahme in einer Tabelle protokolliert wird. Dann fütterte ein RSS wählt aus dieser Tabelle. Ich abonniere bei der Arbeit in MS Outlook den RSS-Feed und auch auf meinem Android-Handy mit einem Programm namens NewsRob. NewsRob lassen Sie mich mein Telefon so einstellen, mich zu warnen, wenn es etwas Neues gibt.

ich Blog darüber, wie diese HIER. Es in .net, aber Sie bekommen die Idee.

Als ähnlicher Schritt fand ich einen Weg, um mich zu benachrichtigen, wenn etwas nicht geschehen. Das Blog ist HIER.

Es gibt viele Anwendungen gibt, die das tun, was Sie suchen in einer Weise, die nicht die Leistung auswirken tut. Haben Sie einen Blick auf Kibana / Elasticsearch hatte, oder Splunk oder Logscape für Enterprise-Lösungen (beide auch kostenlose Versionen haben).

Ich werde wiederholen, was bereits gesagt wurde, und markiert, was Java bietet bereits und was Sie mit einem externen Monitoring-System zu tun. Java bereits vor:

  • log4j - log Fehler, Warnungen, FATAL und Ausnahmen in einer Datei
  • JMX - Erstellen Sie Metriken individuelle Anwendung und Sie auch Zugriff auf java.lang haben / *, die Sie Zähler Heap-Speicher-Nutzung, Garbage Collection, Gewinde usw. geben
  • JVM gc Protokollierung - können Sie alle Ereignisse Ihre Garbage Collection melden Sie sich in eine Datei und Uhr für alle lange Voll GC Sammlungen.

Ein externes Monitoring-System werden Sie auf Set Warnungen zulassen aus verschiedenen Einsatzszenarien ausgelöst. Sie werden auch Visualisierung Ihrer Systemleistung durch Diagramme erhalten. Ich habe verwendet Logscape der Java-Anwendung in den letzten 30 Java-Prozesse over3 Hosts verteilt zu überwachen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top