Domanda

Chi vorrei trovare o sviluppare un'applicazione che può essere eseguito come un demone, informare l'amministratore via email o SMS quando le applicazioni Java in esecuzione su un host ottenere eventuali eccezioni o errori. So JVMTI può raggiungere parte del mio obiettivo , ma avrà un impatto le prestazioni delle applicazioni monitorate (non so quanto sarà, sarà accettabile se è lieve), oltre che sembra essere un lavoro troublesom per sviluppare un agente JVMTI e non sono sicuro cosa accadrebbe se più applicazioni in esecuzione contemporaneamente utilizzando lo stesso agente. C'è qualche soluzioni migliori? Grazie in anticipo.

È stato utile?

Soluzione

Un modo potrebbe essere quello di utilizzare un sistema di registrazione come log4j che pubblica tutti gli errori che si verificano sul sistema A a un server di registrazione sul sistema di B da cui è possibile monitorare gli errori si è verificato. Questo non è un solutation del tutto generico tuttavia, dal momento che solo le eccezioni propagate a log4j (o qualsiasi altro sistema di registrazione) sarà gestita -. Ma può essere un buon inizio

Altri suggerimenti

La soluzione migliore è quella di avere l'applicazione Java inviare i suoi errori tramite e-mail / sms. Il problema è che i programmi genereranno eccezioni e gestire correttamente durante il normale funzionamento. Si vuole solo particolare eccezione.

In caso contrario si potrebbe scrivere un lettore di log, che legge i log dell'applicazione. Questo è difficile da ottenere, ma si può fare.

Un'applicazione in grado di generare 1000 eccezione per giorni e ancora essere comportarsi normalmente perché l'applicazione sa come gestire queste eccezioni. per esempio. ogni volta che una connessione socket viene chiuso un'eccezione può essere gettato.

IMO, l'approccio migliore è quello di implementare un sistema di controllo esterno. Questo può:

  • monitorare più applicazioni
  • servizi di infrastruttura del monitor
  • la disponibilità della rete del monitor e la macchina l'accessibilità,
  • le risorse del monitor, quali l'utilizzo del processore e il file system.

Applicazioni può essere monitorato in una varietà di modi, tra cui:

  • per l'elaborazione degli eventi di registro,
  • guardando per riavvio dell'applicazione,
  • da "ping" Web API dell'applicazione per controllare il servizio vitalità, e
  • utilizzando interfacce JMX dell'applicazione.

Queste informazioni possono essere filtrata e priorità in modo intelligente, e gli eventi critici può essere segnalato con qualsiasi mezzo è più appropriato.

Se non si desidera singole applicazioni l'invio di email, perché non hanno informazioni sufficienti per fare un lavoro decente. Inoltre, mettendo la logica di segnalazione in singole applicazioni rischia di portare alla realizzazione incoerente, povero configurabilità, e così via.

C'è un vicino alternativa al JVMTI: JPDA . Questa infrastruttura consente di creare un telecomando "debugger" (sì, questo è quello che hai intenzione di fare) utilizzando il codice Java, e collegarlo alla VM utilizzando la connessione locale o remoto.

Ci saranno, come per JVMTI, un overhead di esecuzione del programma. Tuttavia, come la Trace.java L'esempio mostra, è abbastanza semplice da implementare e collegare sia a bersaglio VM.

Infine, preavviso, se si desidera eseguire il codice strumento da application server (JBoss, Glassfish, Tomcat, è il nome) ci sono vari altri mezzi a disposizione.

seguo il modello in cui ogni eccezione viene registrato in una tabella. Poi un feed RSS di selezionare da quel tavolo. Mi iscrivo al feed RSS in MS Outlook sul lavoro e anche sul mio telefono Android con un programma chiamato NewsRob. NewsRob farmi impostare il mio telefono per avvisare me quando c'è qualcosa di nuovo.

I blog su come fare questo QUI. E 'in .net, ma si ottiene l'idea.

Come passo correlato ho trovato un modo per informare me quando qualcosa non è accaduto. Questo blog è QUI.

Ci sono un sacco di applicazioni là fuori che quello che stai cercando in un modo che non fa impatto sulle prestazioni. Hai avuto uno sguardo al Kibana / elasticsearch, o Splunk o Logscape per le soluzioni enterprise (entrambi hanno anche versioni gratuite).

ho intenzione di eco ciò che è già stato detto e evidenziare ciò che Java offre già e che cosa si può fare con un sistema di monitoraggio esterno. Java fornisce già:

  • log4j - errori nel registro, AVVERTIMENTI, FATAL ed eccezioni in un file
  • JMX - Crea metriche applicative personalizzate e si ha anche accesso a java.lang / *, che vi darà l'utilizzo heap di memoria, raccolta dei rifiuti, i contatori filo ecc
  • JVM registrazione GC - è possibile registrare tutti gli eventi la vostra raccolta dei rifiuti in un file e guardare per eventuali lunghi collezioni completa GC.

Un sistema di controllo esterno vi permetterà di impostare avvisi innescati diversi scenari operativi. Si riceverà anche la visualizzazione del vostro prestazioni del sistema attraverso grafici. Ho usato Logscape di java app in passato per monitorare 30 processi Java sparsi host over3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top