2013-09-28 5 views
7

Mit der früheren Version des Java Play-Frameworks konnten wir eine Befehlszeile argent zum Laden von Überwachungsagenten bereitstellen. Zum Beispiel könnte NewRelic alsJava Play 2.2 unterstützt nicht javaagent

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

hat sich deutlich das Startskript Mit der Veröffentlichung der 2.2, die Play-Team geändert geladen werden. Soweit ich das beurteilen kann, unterstützt es keine Java-Agenten mehr. Hat jemand anderes NewRelic mit Java Play 2.2+ gestartet? Das Spiel ist großartig, aber seine nutzlose Technologie, wenn man es nicht in einer Produktionsumgebung überwachen kann ...

Antwort

12

Es scheint, dass Sie Java-Optionen mit -J (in ähnlicher Weise wie in Systemeigenschaften mit -D) Präfix können:

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

diese während Entdeckt um im Skript selbst stoßend, aber es wird darauf hingewiesen, in der Zusammenfassung der Verwendung:

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

Während dies zu "arbeiten" scheint, bekomme ich keine Daten ... – penfold

+0

Toller Fund !! Das Argument -J führte dazu, dass der NewRelic-Agent geladen wurde. Aus irgendeinem Grund zeigen die NewRelic-Protokolle an, dass Daten gesendet werden, aber die Web-Benutzeroberfläche von NewRelic wird nicht aktualisiert. Ich melde mich, sobald ich von ihrem Support-Team gehört habe. – Chris

+0

Ich scheine jetzt Daten zu bekommen. Ironischerweise glaube ich, dass die Sammlung versagt hat. – penfold

1

Mit dem neuen nativen Packer in Play Framework 2.2 müssen Sie Java-Optionen in der Umgebungsvariablen JAVA_OPTS setzen.

+0

Hallo James - Großer Vorschlag. Als ich dies versuchte, funktionierte es für Systemeigenschaften mit dem -D-Flag, aber nicht für -J Java-Optionen. Wenn ich den JAVA_OPTS-Export als "-J-javaagent: /path/to/newrelic.jar -Dnewelrelic.bootstrap_classpath = true" festlegte, wurde der Javaagent nicht gestartet. – Chris

+0

Bumm. Ich werde untersuchen, warum das nicht funktioniert. Es scheint so als müsste es. –

+1

Ich habe nur meine JAVA_OPTS = "- J-javaagent: pfad/java.newrelic-agent-3.0.1.jar" und es funktionierte. (mit play2.2, neues Relikt, heroku) – codaR0y

0

In Play Framework Version 2.2 wurde das Anwendungsstart-Skript in ein anderes Verzeichnis geändert. Um die Java-Agent-Bibliothek zu laden, muss der vollständige Pfad angegeben werden.

Zum Beispiel, wenn Heroku-javaagent-1.4.jar im lib Verzeichnis des Projektes ist:

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

Die für PlayFramework 2.3.x arbeitet kopierte ich die Agenten jar + yml Konfigurationsdatei zu PLAY_APP_ROOT/lib

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