Déploiement de l'agent Java APM
Une fois l'agent Java APM provisionné, 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 de la JVM. Selon l'environnement Java, un serveur d'applications ou un microservice, les utilisateurs peuvent disposer de scripts de démarrage de shell ou de batch, ou d'une autre façon d'exécuter la ligne de commande Java.
Reportez-vous aux exemples ci-dessous pour savoir comment 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 du serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
$DOMAIN_HOME
de façon à ce 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 de passer à l'étape suivante.Serveur d'applications Informations sur la variable de répertoire de destination Oracle WebLogic Server Définissez la variable $DOMAIN_HOME
de façon à ce 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
d'origine et ajouter l'option-javaagent
.- Si vous déployez l'agent Java APM sur des serveurs gérés et le serveur d'administration Oracle WebLogic, ajoutez l'option
-javaagent
suivante à l'ensemble d'optionsJAVA_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 uniquement sur des serveurs gérés, ajoutez l'option
-javaagent
suivante à l'ensemble d'optionsJAVA_OPTIONS
dans une instructionif
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 des serveurs gérés et le serveur d'administration Oracle WebLogic, ajoutez l'option
- Arrêtez et redémarrez Oracle WebLogic Server :
cd $DOMAIN_HOME/bin ./stopWebLogic.sh cd .. nohup ./startWebLogic.sh >& startup.log &
Si vous disposez de serveurs gérés, arrêtez-les 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 &
Remarque
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
est appelée à partir du répertoire$DOMAIN_HOME/bin
.
Une fois l'agent Java APM déployé, le message Oracle APM Agent: Initialized AgentInstance
apparaît 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 du serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
$CATALINA_HOME
de façon à ce 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 de passer à l'étape suivante.Serveur d'applications Informations sur la variable de répertoire de destination Serveur Apache Tomcat Définissez la variable $CATALINA_HOME
de façon à ce qu'elle pointe vers le répertoire de destination du serveur Apache Tomcat.- Si vous utilisez un shell de type bash :
export CATALINA_HOME=<Apache Tomcat Server destination directory>
- Si vous utilisez un shell C :
setenv CATALINA_HOME "<Apache Tomcat Server destination directory>"
- Si vous utilisez un shell de type 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
d'origine et ajouter l'option-javaagent
suivante àCATALINA_OPTS
. Apportez la modification en dehors des instructionsif
ou des blocs de code 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 et 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
apparaît dans le journal de démarrage du serveur.
Pour plus d'informations, reportez-vous au tutoriel d'installation d'un agent Java APM sur un serveur d'applications Tomcat.
Serveur Jetty
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 du serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
JETTY_HOME
de façon à ce qu'il pointe vers le répertoire d'origine 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 d'origine avant de passer à 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
apparaît 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 un serveur Apache Tomcat imbriqué.
application.properties
de l'application Spring Boot pour activer des 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 du microservice. <Destination Directory>
désigne 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
apparaît 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 du serveur d'applications. Il s'agit du répertoire dans lequel l'agent Java APM est provisionné.
Définissez la variable
$JBOSS_HOME
de sorte 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'effectuer l'étape suivante.Serveur d'applications Informations sur la variable de répertoire de destination Serveur JBoss Définissez la variable
$JBOSS_HOME
de sorte qu'elle pointe vers le répertoire de destination du serveur JBoss.- Si vous utilisez un shell de type bash :
export JBOSS_HOME=<JBoss Server destination directory>
- Si vous utilisez un shell C :
setenv JBOSS_HOME "<JBoss Server destination directory>"
- Si vous utilisez un shell de type bash :
- Faites 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
d'origine, puis ajoutez les options Java suivantes àJAVA_OPTS
. Apportez la modification en dehors des instructionsif
ou des blocs de code 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"
Remarque
Chaque environnement est différent. La propriété du serveur Jboss peut inclure des packages différents de ceux présenté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
apparaît 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 dans Oracle Container Engine for Kubernetes (OKE).
Déploiement d'un agent Java APM dans une image de conteneur Docker
Découvrez comment déployer un agent Java APM dans une image de conteneur Docker et dans Oracle Container Engine for Kubernetes (OKE).
Figure 3-1 Déploiement de 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, vérifiez que vous avez terminé les prérequis et provisionné l'agent Java APM.
Remarque
Lors du provisionnement de l'agent Java APM, il est recommandé de le provisionner à l'emplacement de votre ordinateur local, puis de le copier vers une image Docker. - Modifiez
Dockerfile
pour copier l'agent Java APM vers une image Docker :COPY <DESTINATION_DIRECTORY>/oracle-apm-agent <Docker_Image_Directory>/oracle-apm-agent/
<DESTINATION_DIRECTORY>
désigne l'emplacement où vous avez provisionné l'agent Java APM sur l'ordinateur local et<Docker_Image_Directory>
le répertoire de l'image Docker vers lequel vous copiez l'agent Java APM.<Docker_Image_Directory>
peut également désigner 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 du serveur d'applications :java -javaagent:<Docker_Image_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<appserver.jar>
- Créez une image Docker à l'aide de l'agent Java APM intégré et du script de démarrage modifié, puis transmettez-la au registre.
Si vous utilisez Kubernetes pour gérer vos conteneurs Docker, mettez à jour votre configuration Kubernetes de façon à utiliser la nouvelle image Docker, puis redémarrez le pod Kubernetes.
Vous pouvez également définir des dimensions supplémentaires pour lesquelles générer des rapports à partir du pod Kubernetes à l'aide de l'API Downward, en copiant les paramètres d'environnement et de volume suivants dans la spécification de déploiement (fichier yaml
) du pod Kubernetes. Reportez-vous à la section sur l'API Downward dans la documentation Kubernetes pour obtenir plus d'information.
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 Kubernetes ne comporte pas de libellés, d'annotations ou les deux, l'API Downward engendre une erreur lors du déploiement de l'application. Dans ce cas, vous devez enlever l'entrée d'API Downward correspondant à metadata.labels
, metadata.annotations
ou aux deux.
Déploiement de 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 exécutés sur des clusters Kubernetes (K8s).
Figure 3-2 Déploiement de 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 que vous préférez apporter des modifications à la configuration de l'agent Java APM à l'aide de la ressource personnalisée Kubernetes pour injecter automatiquement l'agent APM dans les JVM au démarrage.
- Pour la gestion des versions d'image Docker, évitez d'utiliser la balise
:latest
lors du déploiement de conteneurs en production, car il est plus difficile de savoir quelle version de l'image est en cours d'exécution et d'annuler correctement. A la place, indiquez une balise significative telle quev1.12.1.3
. -
Pour Kubernetes, effectuez des sauvegardes des ressources personnalisées Kubernetes (CR) et des configmaps.
Prérequis : installez l'opérateur OpenTelemetry dans le cluster Kubernetes.
Trois options sont disponibles : Operator release manifest, Operator helm chart ou Operator Hub.
Dans la plupart des cas, un cert-manager doit être installé. Si l'option de graphique en barre est utilisée, vous pouvez générer un certificat auto-signé à la place.
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 la commande suivante :
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, ce qui est fait à 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 la CR, exécutez la commande suivante :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 d'adresse de téléchargement de données générée lors de la création du domaine APM. Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
- <private-data-key> est la clé de données privée d'installation d'agent Java APM qui est générée lors de la création du domaine APM. Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
Vous pouvez interroger le CR créé en exécutant la commande suivante :
Tous les points de terminaison 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éterminer les pods à injecter 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 :
kubectl edit namespace <your-namespace-name>
- Modifiez l'espace de noms une fois l'éditeur ouvert. Par exemple, é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 :
- Redémarrez le pod Kubernetes.
Pour redémarrer le pod dans lequel vous voulez injecter automatiquement l'agent Java APM, exécutez la commande suivante :
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Vérifiez le pod Kubernetes.
Pour vérifier que le 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 blog : Déploiement automatique d'un agent Java APM dans des environnements Kubernetes à l'aide de l'opérateur OpenTelemetry
Déploiement d'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éploiement de l'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 des modifications fréquentes à la configuration de 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 ne dispose pas des droits d'accès ou droits d'accès requis pour reconstruire une image de conteneur.
-
Pour la gestion des versions d'image docker, sauvegardez les fichiers binaires et de configuration.
Pour déployer l'agent Java APM sur un volume monté, procédez comme suit :
- Vérifiez que vous avez terminé les tâches prérequises de l'agent Java APM.
Notez l'adresse de téléchargement de données et la clé de 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 cloud 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 le fichier
PersistentVolume
et les entités associées dans Kubernetes, à l'aide du fichier yaml ci-dessous. Notez les champs suivants à 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>
Ensuite, mettez à jour le fichier yaml qui gère les pods et ajoutez le volume et le montage de volume.
Pour prendre effet, recréez les pods.
- Téléchargez le fichier d'agent Java APM.
Téléchargez et copiez le fichier sur le volume monté.
Pour obtenir des instructions de téléchargement, reportez-vous à Téléchargement du logiciel d'agent Java APM.
Après le téléchargement, copiez-le sur le volume monté.
- Provisionnement de 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 la commande suivante :
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 sur le provisionnement, reportez-vous à Provisionnement de l'agent Java APM.
- Déploiement de 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 : Kubernetes Spring Boot Instrumentation for Distributed Tracing ou consultez le blog : Application Performance Monitoring : Instrument Java on Kubernetes for Monitoring and Diagnostics.