2013-09-28 12 views
7

Con la versione precedente del framework Java Play, è possibile fornire un argent della riga di comando per caricare gli agent di monitoraggio. Ad esempio, NewRelic potrebbe essere caricato comeJava Play 2.2 non supporta javaagent

./path/to/start -javaagent:/path/to/newrelic.jar 

Con il rilascio della 2.2, il team di gioco ha cambiato in modo significativo lo script di avvio. Da quello che posso dire, non supporta più javaagents. Qualcun altro ha ottenuto NewRelic in esecuzione con Java Play 2.2+? Il gioco è grandioso, ma è una tecnologia inutile se non è possibile monitorarlo in un ambiente di produzione ...

risposta

12

Sembra che si può far precedere opzioni Java con -J (in modo simile a proprietà di sistema utilizzando -D):

$ bin/<app> -J-javaagent:lib/newrelic.jar 

Scoperto questo mentre rovistando nello script stesso, ma si fa notare nel sommario di utilizzo:

$ bin/<app> -h 
Usage: [options]  
... 
    -J-X    pass option -X directly to the java runtime 
        (-J is stripped) 
... 
+0

Mentre questo sembra "funzionare" non sto ottenendo alcun dato ... – penfold

+0

Grande scoperta !! L'argomento -J ha causato il caricamento dell'agente NewRelic. Per qualche motivo i registri di NewRelic indicano che sta inviando dati, ma l'interfaccia utente web di NewRelic non viene aggiornata. Segnalerò una volta che avrò notizie dal loro team di supporto. – Chris

+0

Mi sembra di ricevere dati ora. Ironia della sorte, penso che la collezione stava fallendo. – penfold

1

Con il nuovo packager nativo in Play Framework 2.2 è necessario impostare le opzioni Java nella variabile di ambiente JAVA_OPTS.

+0

Ciao James - Ottimo suggerimento. Quando ho provato questo, ha funzionato per le proprietà di sistema con il flag -D, ma non ha funzionato per le opzioni jJ -Java. Quando imposto l'esportazione JAVA_OPTS come "-J-javaagent: /path/to/newrelic.jar -Dnewrelic.bootstrap_classpath = true", javaagent non è stato avviato. – Chris

+0

Bummer. Indagherò perché questo non funziona. sembra come dovrebbe –

+1

Ho appena impostato il mio JAVA_OPTS = "- J-javaagent: path/java.newrelic-agent-3.0.1.jar" e ha funzionato. (usando play2.2, nuova reliquia, heroku) – codaR0y

0

In Play Framework versione 2.2, lo script di avvio dell'applicazione è stato modificato in una directory diversa. Per caricare la libreria javaagent, è necessario specificarne il percorso completo.

Per esempio, se Heroku-javaagent-1.4.jar è in lib directory del progetto:

heroku config:set JAVA_OPTS="-Xmx384m -Xss512k -XX:+UseCompressedOops -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -javaagent:/app/lib/heroku-javaagent-1.4.jar=stdout=true,lxmem=true" 
0

Questo funziona per play framework 2.3.x Ho copiato il file di configurazione jar agente + yml a PLAY_APP_ROOT/lib

sbt start -J-javaagent:lib/newrelic.jar 
Problemi correlati