Registratore di volo JDK
Java Flight Recorder (JFR) è uno strumento multiuso per la raccolta di vari dati per l'esecuzione di applicazioni Java e della relativa JVM. JMS si basa su di esso e consente agli amministratori della flotta di richiedere registrazioni JFR su tutte le applicazioni trovate da JMS.
L'onere di accedere alle macchine che eseguono le applicazioni, utilizzando vari strumenti per avviare le registrazioni JFR, raccogliere le registrazioni JFR e accedere alle registrazioni da un'unica posizione viene ridotto utilizzando JMS. Dal momento che Java Flight Recorder può osservare e raccogliere molte metriche utili fornite da JVM come l'uso della memoria, la garbage collection, l'uso dei thread, le eccezioni e così via, i clienti possono facilmente monitorare il comportamento delle loro applicazioni.
Console cloud OCI
- Connettersi a OCI Console come amministratore.
- Aprire il menu di navigazione, fare clic su Osservabilità e gestione, quindi su Fleets in Java Management.
- Selezionare la flotta.
- Fare clic su Istanze gestite, quindi sull'istanza gestita in cui è in esecuzione l'applicazione.
- Fare clic su Applicazioni e selezionare l'applicazione su cui avviare la registrazione JFR.
- Fare clic su Azioni, quindi selezionare Esegui JDK Flight Recorder.
- Fare clic su Avvia.
- Al termine della richiesta di lavoro, fare clic sulla richiesta di lavoro e, nei dettagli, passare ai file JFR situati nel bucket della flotta.
OCI CLI
- Creare il modello di payload delle destinazioni utilizzando il comando seguente:
oci jms fleet request-jfr-recordings --generate-param-json-input targets
- Scopri i dettagli della tua applicazione, ad esempio con:
oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID
- Modificare il file json del payload, ad esempio:
[ { "applicationInstallationKey": "$APP_INSTALL_KEY", "applicationKey": "$APP_KEY", "jreKey": "$APP_JRE_KEY", "managedInstanceId": "$MANAGED_INSTANCE_OCID" } ]
- Eseguire il seguente comando:
oci jms fleet request-jfr-recordings --fleet-id $FLEET_OCID --jfc-profile-name default.jfc --targets file://targets.json
Esempio
#!/usr/bin/env bash
# configuration variables
APP_INSTALL_LOCATION=/usr/share/tomcat
JFC_FILENAME=custom.jfc
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
# get application installation key
APP_INSTALL_KEY=$(oci jms application-installation-usage-summary summarize-application-installation-usage --app-installation-path-contains "$APP_INSTALL_LOCATION" --fleet-id $FLEET_OCID | jq -r '.data.items[]."application-installation-key"')
# create custom jfc file from default profile
jfr configure thread-dump=10s exceptions=all --output $JFC_FILENAME
ENCODED_JFC=$(cat $JFC_FILENAME | base64)
# start jfr recording with v2 custom profile for JDK 9 or higher
WORK_REQUEST_OCID=$(oci jms fleet request-jfr-recordings \
--fleet-id "$FLEET_OCID" \
--jfc-profile-name custom-profile \
--jfc-v2 "$ENCODED_JFC" \
--targets "[{\"applicationInstallationKey\":\"$APP_INSTALL_KEY\", \"managedInstanceId\":\"$MANAGED_INSTANCE_OCID\"}]" | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
# additionally you can add your own logic to check if work request is finished
# sleep 600
# oci jms work-request get --work-request-id "$WORK_REQUEST_OCID" | jq .data.status
Nota
- La utility della riga di comando
jfr
fa parte dei bundle JDK più recenti. - L'utility della riga di comando
base64
potrebbe non essere presente nella piattaforma Windows.
Una volta completata la richiesta di lavoro, il JFR viene caricato nel bucket associato alla flotta:
# list all the jfr recordings created during work request execution
oci jms work-request-log-entry list-work-request-logs --all --work-request-id "$WORK_REQUEST_OCID" | jq -r '.data.items[].message | fromjson | select(.objectName != null) | .objectName' | sort | uniq
JMS/JFR/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/20250710104111_155_0_91783_0_org.apache.catalina.startup.Bootstrap.jfr