Déployer l'agent Java APM
Une fois l'agent Java APM provisionné avec succès, vous pouvez le déployer.
Pour déployer l'agent Java APM sur n'importe quelle application Java, vous devez ajouter le paramètre -javaagent
au script de démarrage JVM. Selon l'environnement Java, un serveur d'applications ou un microservice, les utilisateurs peuvent avoir des scripts de démarrage shell ou bat, ou une autre façon d'exécuter la ligne de commande Java.
Voir les exemples ci-dessous pour déployer l'agent Java APM sur les applications Java suivantes :
Oracle WebLogic Server
Voici des informations sur le déploiement de l'agent Java APM sur Oracle WebLogic Server.
- Définissez une variable pointant vers le répertoire de destination de votre serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
$DOMAIN_HOME
pour qu'elle pointe vers le répertoire du domaine Oracle WebLogic Server et vérifiez que l'agent Java APM a été provisionné dans le même répertoire de destination avant d'exécuter l'étape suivante.Serveur d'applications Informations sur la variable de répertoire de destination Oracle WebLogic Server Définissez la variable $DOMAIN_HOME
pour qu'elle pointe vers le domaine Oracle WebLogic Server.export DOMAIN_HOME=<Oracle WebLogic Server Domain>
- Faites une copie de sauvegarde du fichier
startWebLogic.sh
:cd $DOMAIN_HOME/bin cp startWebLogic.sh startWebLogic.sh.orig
- Utilisez un éditeur de texte pour modifier le script
startWebLogic.sh
initial et ajoutez l'option-javaagent
.- Si vous déployez l'agent Java APM sur Oracle WebLogic Administration Server et les serveurs gérés, ajoutez l'option
-javaagent
suivante au jeuJAVA_OPTIONS
, après l'appelsetDomainEnv.sh
:JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:$DOMAIN_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Si vous déployez l'agent Java APM sur les serveurs gérés uniquement, ajoutez l'option
-javaagent
suivante au jeuJAVA_OPTIONS
dans un énoncéif
après l'appelsetDomainEnv.sh
:if [ "$SERVER_NAME" != "AdminServer" ] ; then set JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:$DOMAIN_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar" fi
- Si vous déployez l'agent Java APM sur Oracle WebLogic Administration Server et les serveurs gérés, ajoutez l'option
- Arrêtez, puis redémarrez Oracle WebLogic Server :
cd $DOMAIN_HOME/bin ./stopWebLogic.sh cd .. nohup ./startWebLogic.sh >& startup.log &
Si vous avez des serveurs gérés, arrêtez et redémarrez-les également :
cd $DOMAIN_HOME/bin ./stopManagedWebLogic.sh {SERVER_NAME} {ADMIN_URL} {USER_NAME} {PASSWORD} nohup ./startManagedWebLogic.sh {SERVER_NAME} {ADMIN_URL} >& {SERVER_NAME}.log &
Note
Remarquez que la version$DOMAIN_HOME
destartWebLogic.sh
est utilisée, même si vous avez modifié la version$DOMAIN_HOME/bin
. L'appel de la commande à partir d'un niveau supérieur (à partir de$DOMAIN_HOME
) appelle la commande à partir d'un niveau inférieur (à partir de$DOMAIN_HOME/bin
). Toutefois, la commandestopWebLogic.sh
sera appelée à partir du répertoire$DOMAIN_HOME/bin
.
Une fois l'agent Java APM déployé, le message Oracle APM Agent: Initialized AgentInstance
s'affiche dans le journal de démarrage du serveur.
Serveur Apache Tomcat
Voici des informations sur le déploiement de l'agent Java APM sur le serveur Apache Tomcat.
- Définissez une variable pointant vers le répertoire de destination de votre serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
$CATALINA_HOME
pour qu'elle pointe vers le répertoire de destination du serveur Apache Tomcat et vérifiez que l'agent Java APM a été provisionné dans le même répertoire de destination avant d'exécuter l'étape suivante.Serveur d'applications Informations sur la variable de répertoire de destination Serveur Apache Tomcat Définissez la variable $CATALINA_HOME
pour qu'elle pointe vers le répertoire de destination du serveur Apache Tomcat.- Si vous utilisez un interpréteur de commandes Bash :
export CATALINA_HOME=<Apache Tomcat Server destination directory>
- Si vous utilisez un interpréteur de commandes C :
setenv CATALINA_HOME "<Apache Tomcat Server destination directory>"
- Si vous utilisez un interpréteur de commandes Bash :
- Faites une copie de sauvegarde du fichier
catalina.sh
.$ cd $CATALINA_HOME/bin $ cp catalina.sh catalina.sh.orig
- Utilisez un éditeur de texte pour modifier le fichier
catalina.sh
initial et ajoutez l'option-javaagent
suivante àCATALINA_OPTS
. Apportez la modification en dehors des énoncés ou des blocs de codeif
qui peuvent ne pas être exécutés au démarrage du serveur. Cela garantit que l'indicateur-javaagent
est toujours ajouté aux options de démarrage du serveur.CATALINA_OPTS="${CATALINA_OPTS} -javaagent:$CATALINA_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Arrêtez, puis redémarrez le serveur Apache Tomcat :
$ cd $CATALINA_HOME/bin $ ./shutdown.sh $ ./startup.sh
Une fois l'agent Java APM déployé, le message Oracle APM Agent: Initialized AgentInstance
s'affiche dans le journal de démarrage du serveur.
Pour plus d'informations, voir le tutoriel Installer un agent Java APM sur un serveur d'applications Tomcat.
Jetty Server
Voici des informations sur le déploiement de l'agent Java APM sur le serveur Jetty.
- Définissez une variable pointant vers le répertoire de destination de votre serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
JETTY_HOME
pour pointer vers le répertoire de destination du serveur Jetty (où le logiciel Jetty a été extrait) et vérifiez que l'agent Java APM a été provisionné dans le même répertoire de destination avant d'exécuter l'étape suivante. - Démarrez le serveur Jetty.
java -javaagent:/<Destination_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar $JETTY_HOME/start.jar
Une fois l'agent Java APM déployé, le message Oracle APM Agent: Initialized AgentInstance
s'affiche dans le journal de démarrage du serveur.
Spring Boot
Voici des informations sur le déploiement d'un agent Java APM sur un microservice Spring Boot exécutant Apache Tomcat intégré.
application.properties
de l'application Spring Boot pour activer les Mbeans Apache Tomcat :spring.jmx.enabled=true
server.tomcat.mbeanregistry.enabled=true
Vous pouvez également ajouter les propriétés ci-dessus : spring.jmx.enabled
et server.tomcat.mbeanregistry.enabled
en tant que propriétés système sur la ligne de commande.
-javaagent
suivante au script de démarrage de votre microservice. Notez que <Destination Directory>
indique le répertoire dans lequel vous avez provisionné l'agent.java -javaagent:<Destination Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<microservice.jar>
Une fois l'agent Java APM déployé, le message Oracle APM Agent: Initialized AgentInstance
s'affiche dans le journal de démarrage du microservice.
Serveur JBoss
Voici des informations sur le déploiement de l'agent Java APM sur le serveur JBoss.
Les instructions ci-dessous s'appliquent à JBoss EAP et Wildfly.
- Définissez une variable pointant vers le répertoire de destination de votre serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
$JBOSS_HOME
pour qu'elle pointe vers le répertoire de destination du serveur JBoss et vérifiez que l'agent Java APM a été provisionné dans le même répertoire de destination avant d'exécuter l'étape suivante.Serveur d'applications Informations sur la variable de répertoire de destination Serveur JBoss Définissez la variable
$JBOSS_HOME
pour qu'elle pointe vers le répertoire de destination du serveur JBoss.- Si vous utilisez un interpréteur de commandes Bash :
export JBOSS_HOME=<JBoss Server destination directory>
- Si vous utilisez un interpréteur de commandes C :
setenv JBOSS_HOME "<JBoss Server destination directory>"
- Si vous utilisez un interpréteur de commandes Bash :
- Effectuez une copie de sauvegarde du fichier
standalone.conf
:cd $JBOSS_HOME/bin cp standalone.conf standalone.conf.orig
- Utilisez un éditeur de texte et modifiez le fichier
standalone.conf
initial et ajoutez les options Java suivantes àJAVA_OPTS
. Apportez la modification en dehors des énoncés ou des blocs de codeif
qui peuvent ne pas être exécutés au démarrage du serveur.- Ajoutez l'option
-javaagent
àJAVA_OPTS
.JAVA_OPTS="$JAVA_OPTS -javaagent:$JBOSS_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Modifiez la propriété Java
jboss.modules.system.pkgs
pour inclure"com.oracle.apm"
.Par exemple :
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.oracle.apm"
Note
Chaque environnement est différent. La propriété du serveur Jboss peut inclure des packages différents de ceux indiqués dans l'exemple ci-dessus.
- Ajoutez l'option
- Arrêtez et redémarrez le serveur JBoss :
cd $JBOSS_HOME/bin ./jboss-cli.sh -c :shutdown nohup ./standalone.sh -b 0.0.0.0&> startup.log &
Une fois l'agent Java APM déployé, le message Oracle APM Agent: Initialized AgentInstance
s'affiche dans le journal de démarrage du serveur.
Docker et Kubernetes
Voici des informations sur le déploiement d'un agent Java APM dans un conteneur Docker et Oracle Container Engine for Kubernetes (OKE).
Déployer l'agent Java APM dans une image de conteneur Docker
Voici des informations sur le déploiement d'un agent Java APM dans une image de conteneur Docker et Oracle Container Engine for Kubernetes (OKE).
Figure 3-1 : Déployer l'agent Java APM dans l'image de conteneur Docker

Recommandation :
Utilisez cette option lorsqu'il est possible d'apporter des modifications à l'image de conteneur Docker.
Par exemple, si vous devez modifier la configuration de l'agent APM, vous pouvez apporter des modifications à l'image Docker.
Pour déployer l'agent Java APM, procédez comme suit :
- Avant de continuer, confirmez que vous avez terminé les préalables et provisionné l'agent Java APM.
Note
Lors du provisionnement de l'agent Java APM, il est recommandé de le provisionner à l'emplacement de votre ordinateur local, puis de le copier dans une image Docker. - Modifiez le fichier
Dockerfile
pour copier l'agent Java APM dans une image Docker :COPY <DESTINATION_DIRECTORY>/oracle-apm-agent <Docker_Image_Directory>/oracle-apm-agent/
Notez que
<DESTINATION_DIRECTORY>
indique l'emplacement sur votre machine locale où vous avez provisionné l'agent Java APM et<Docker_Image_Directory>
indique le répertoire dans l'image Docker où vous copiez l'agent Java APM.<Docker_Image_Directory>
peut également être le répertoire de destination du serveur d'applications dans Docker, par exemple$DOMAIN_HOME
, si vous utilisez Oracle WebLogic Server. - Ajoutez l'option
-javaagent
suivante au script de démarrage de votre serveur d'applications :java -javaagent:<Docker_Image_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<appserver.jar>
- Créez une nouvelle image Docker avec l'agent Java APM intégré et le script de démarrage modifié, puis poussez l'image vers le registre.
Si vous utilisez Kubernetes pour gérer vos conteneurs Docker, mettez à jour votre configuration Kubernetes afin d'utiliser la nouvelle image Docker et redémarrez le pod Kubernetes.
Vous pouvez également définir des dimensions supplémentaires à déclarer à partir du pod Kubernetes à l'aide de l'API descendante, en copiant les paramètres d'environnement et de volume suivants dans la spécification de déploiement (fichier yaml
) du pod Kubernetes. Pour plus d'informations sur l'API descendante, voir API descendante dans la documentation sur Kubernetes.
Paramètres d'environnement
spec:
containers:
- name: <container-name>
image: image: <your-registry>/<your-docker-image>:latest
env:
- name: APM_ATTRIBUTES_K8S_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APM_ATTRIBUTES_K8S_NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: APM_ATTRIBUTES_K8S_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
Paramètres de volume
spec:
containers:
- name: <container-name>
image: image: <your-registry>/<your-docker-image>:latest
volumeMounts:
- name: apm-attributes-k8s
mountPath: /etc/apm-attributes-k8s
volumes:
- name: apm-attributes-k8s
downwardAPI:
items:
- path: "labels"
fieldRef:
fieldPath: metadata.labels
- path: "annotations"
fieldRef:
fieldPath: metadata.annotations
Si le déploiement de Kubernetes ne comporte pas d'étiquettes, d'annotations ou les deux, l'API descendante pour ces dernières entraînera une erreur lors du déploiement de l'application. Dans un tel cas, vous devez supprimer l'entrée d'API descendante correspondant à metadata.labels
, metadata.annotations
ou aux deux.
Déployer l'agent Java APM à l'aide de l'opérateur OpenTelemetry
Voici des informations sur le déploiement d'un agent Java APM à l'aide de l'opérateur OpenTelemetry pour injecter et configurer automatiquement l'agent Java APM dans vos pods d'application Java s'exécutant sur des grappes Kubernetes (K8s).
Figure 3-2 Déployer l'agent Java APM à l'aide de l'opérateur OpenTelemetry

Recommandation :
Utilisez cette option s'il n'est pas possible de mettre à jour l'image de conteneur Docker et si vous préférez apporter des modifications à la configuration de l'agent Java APM à l'aide de la ressource personnalisée (CR) Kubernetes pour injecter automatiquement l'agent APM dans les JVM au démarrage.
- Pour le contrôle des versions d'image Docker, évitez d'utiliser le marqueur
:latest
lors du déploiement de conteneurs en production, car il est plus difficile de suivre la version de l'image en cours d'exécution et plus difficile de la repositionner correctement. Spécifiez plutôt une balise significative telle quev1.12.1.3
. -
Pour Kubernetes, effectuez des sauvegardes des ressources personnalisées (CR) et des mappages de configuration de Kubernetes.
Préalable : Installez l'opérateur OpenTelemetry dans la grappe Kubernetes.
Trois options sont disponibles : Manifeste de lancement d'opérateur, Graphique d'aide de l'opérateur ou Operator Hub.
Dans la plupart des cas, un gestionnaire de certificats doit être installé. Si l'option de graphique de commande est utilisée, il existe une option pour générer un certificat auto-signé.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.2/cert-manager.yaml
Pour installer l'opérateur OpenTelemetry, exécutez les opérations suivantes :
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
Déployer l'agent Java APM
Pour déployer l'agent Java APM, procédez comme suit :
- Créez une ressource personnalisée Kubernetes (CR).
Pour gérer l'instrumentation automatique, l'opérateur OpenTelemetry doit recevoir des informations sur l'agent Java APM et sa configuration à l'aide de la définition de ressource personnalisée (CRD).
Cette ressource personnalisée sera utilisée par l'opérateur pour copier l'agent dans le pod et lui ajouter la configuration requise.
Pour créer le CR, exécutez les opérations suivantes :kubectl apply -f - <<EOF apiVersion: opentelemetry.io/v1alpha1 kind: Instrumentation metadata: name: inst-apm-java namespace: opentelemetry-operator-system spec: java: image: container-registry.oracle.com/oci_observability_management/oci-apm-java-agent:1.15.0.516 env: - name: OTEL_com_oracle_apm_agent_data_upload_endpoint value: <data-upload-endpoint> - name: OTEL_com_oracle_apm_agent_private_data_key value: <private-data-key> EOF
Où :- <data-upload-endpoint> est l'URL du point d'extrémité de chargement des données générée lors de la création du domaine APM. Pour plus d'informations, voir Obtenir un point d'extrémité de chargement de données et des clés de données.
- <private-data-key> est la clé de données privée d'installation de l'agent Java APM qui est générée lors de la création du domaine APM. Pour plus d'informations, voir Obtenir un point d'extrémité de chargement de données et des clés de données.
Le CR créé peut être interrogé en exécutant la commande suivante :
Tous les points d'extrémité et variables d'environnement doivent être corrects pour que l'instrumentation automatique fonctionne correctement.kubectl get otelinst -n opentelemetry-operator-system
- Ajoutez l'annotation Kubernetes.
L'opérateur OpenTelemetry utilise l'annotation Kubernetes pour décider quels pods doivent être injectés automatiquement avec l'agent Java APM.
L'annotation peut être ajoutée à un espace de noms. Dans ce cas, tous les pods de cet espace de noms seront injectés. L'annotation peut également être ajoutée à des objets PodSpec individuels, disponibles dans le cadre du déploiement, de Statefulset et d'autres ressources.
Annotation :instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/inst-apm-java"
Pour commencer à modifier votre espace de noms, procédez comme suit :- Exécutez la commande suivante :
kubectl edit namespace <your-namespace-name>
- Modifiez l'espace de noms une fois l'éditeur ouvert. Par exemple, l'éditeur
vi
. - Ajoutez l'annotation à l'espace de noms. Gardez à l'esprit que l'indentation est très importante pour en faire un fichier YAML valide.
Exemple :apiVersion: v1 kind: Namespace metadata: labels: kubernetes.io/metadata.name: mynamespace annotations: instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/inst-apm-java" name: mynamespace spec:
- Exécutez la commande suivante :
- Redémarrez le module de réseautage Kubernetes.
Pour redémarrer le pod où vous voulez injecter automatiquement l'agent Java APM, exécutez les opérations suivantes :
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Vérifiez le pod Kubernetes.
Pour vérifier que votre pod a été injecté automatiquement avec l'agent Java APM après son redémarrage, exécutez la commande suivante :
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
Vous pouvez maintenant passer à l'étape suivante : Vérifier le déploiement de l'agent Java APM.
Pour plus d'informations sur le déploiement d'un agent Java APM à l'aide de l'opérateur OpenTelemetry, consultez le blogue : Déployer automatiquement un agent Java APM dans des environnements Kubernetes à l'aide de l'opérateur OpenTelemetry
Déployer un agent Java APM sur un volume monté
Voici des informations sur le déploiement d'un agent Java APM dans Oracle Container Engine for Kubernetes (OKE) à l'aide d'un volume monté.
Figure 3-3 Déployer un agent Java APM sur un volume monté

-
Utilisez cette option lorsqu'il n'est pas possible d'apporter des modifications à l'image de conteneur Docker et que vous préférez utiliser un volume monté partagé lorsque des modifications à l'agent Java APM sont nécessaires.
- Exemple 1 : Si vous devez apporter fréquemment des modifications de configuration à l'agent APM, l'image de conteneur doit être mise à jour, mais il n'est pas possible de le faire.
- Exemple 2 : Si l'utilisateur qui déploie l'agent APM n'a pas l'accès ou les autorisations requis pour reconstruire une image de conteneur.
-
Pour le contrôle des versions d'image docker, sauvegardez les fichiers binaires et les fichiers de configuration.
Pour déployer l'agent Java APM sur un volume monté, procédez comme suit :
- Confirmez que vous avez terminé les tâches préalables de l'agent Java APM.
Notez le point d'extrémité et la clé de données de chargement des données lors de la création du domaine APM.
- Créez un système de fichiers qui montera les pods.
Lors de la création du système de fichiers, il est important de sélectionner le même compartiment de réseau en nuage virtuel (VCN) que celui utilisé par Kubernetes. Faites de même pour le compartiment de sous-réseau.
- Montez le système de fichiers dans les pods.
Cette étape nécessite des modifications des fichiers yaml correspondants.
Créez
PersistentVolume
et les entités connexes dans Kubernetes, à l'aide du fichier yaml ci-dessous. Notez les champs suivants que vous devez modifier pour votre environnement :mntTargetId
,server
etpath
.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: oci-fss provisioner: oracle.com/oci-fss parameters: mntTargetId: ocid1.mounttarget.oc1.iad.xxxxxxxxxxxxxxxxxxxxxx --- apiVersion: v1 kind: PersistentVolume metadata: name: oke-fsspv spec: storageClassName: oci-fss capacity: storage: 10Gi accessModes: - ReadWriteMany mountOptions: - nosuid nfs: # Replace this with the IP of your FSS file system in OCI server: 10.0.10.39 # Replace this with the Path of your FSS file system in OCI path: "/fss-for-kub" readOnly: false --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: oke-fsspvc spec: storageClassName: oci-fss accessModes: - ReadWriteMany resources: requests: # Although storage is provided here it is not used for FSS file systems storage: 10Gi volumeName: oke-fsspv
Pour appliquer les modifications, exécutez
kubectl apply -f <filename.yaml>
Mettez ensuite à jour le fichier yaml qui gère les pods et ajoutez le montage du volume et du volume.
Pour prendre effet, recréez les pods.
- Téléchargez le fichier de l'agent Java APM.
Téléchargez et copiez le fichier sur le volume monté.
Pour obtenir des instructions de téléchargement, voir Télécharger le logiciel de l'agent Java APM.
Après le téléchargement, copiez-le sur le volume monté.
- Provisionner l'agent Java APM.
Connectez-vous à l'un des conteneurs pour provisionner l'agent Java APM, localisez le fichier JAR apm-java-agent-installer et exécutez les opérations suivantes :
java -jar ./apm-java-agent-installer-<version>.jar provision-agent -service-name=<Name of the Service> -destination=<Destination_Directory> -private-data-key=<Agent installation key generated during APM domain creation> -data-upload-endpoint=<dataUploadEndpoint URL generated during APM domain creation>
Pour obtenir des instructions de provisionnement, voir Provisionner l'agent Java APM.
- Déployer l'agent Java APM.
Déployez l'agent Java APM en fournissant l'emplacement oracle-apm-agent au microservice dans le fichier yaml.
Ajoutez l'argument
-javaagent
et l'emplacement du fichier JAR de l'agent APM à la commande Java de chaque microservice :java -javaagent:<Mounted Volume>/oracle-apm-agent/bootstrap/ApmAgent.jar
- Redémarrez Kubernetes.
Recréez les pods en exécutant :
kubectl apply -f <filename.yaml>
.Vous pouvez maintenant passer à l'étape suivante : Vérifier le déploiement de l'agent Java APM.
Pour plus d'informations sur le déploiement d'un agent Java APM sur un volume monté, regardez la vidéo : Instrumentation de démarrage Kubernetes Spring pour le traçage distribué ou consultez le blogue : Application Performance Monitoring : Instrument Java sur Kubernetes pour la surveillance et les diagnostics.