Despliegue del agente Java de APM
Al aprovisionar correctamente el agente Java de APM, puede desplegar el agente Java de APM.
Para desplegar el agente Java de APM en cualquier aplicación Java, debe agregar el parámetro -javaagent
al script de inicio de JVM. Según el entorno Java, un servidor de aplicaciones o un microservicio, los usuarios pueden tener scripts de inicio de shell o bate, u otra forma de ejecutar la línea de comandos Java.
Consulte los siguientes ejemplos sobre cómo desplegar el agente Java de APM en las siguientes aplicaciones Java:
Oracle WebLogic Server
A continuación se incluye información sobre cómo desplegar el agente Java de APM en Oracle WebLogic Server.
- Defina una variable que apunte al directorio de destino del servidor de aplicaciones. Este es el directorio en el que se aprovisiona el agente Java de APM.
Defina la variable
$DOMAIN_HOME
para que apunte al directorio de dominio de Oracle WebLogic Server y confirme que el agente Java de APM se ha aprovisionado en el mismo directorio de destino antes de realizar el siguiente paso.Servidor de aplicaciones Información de la variable del directorio de destino Oracle WebLogic Server Defina la variable $DOMAIN_HOME
para que apunte al dominio de Oracle WebLogic Server.export DOMAIN_HOME=<Oracle WebLogic Server Domain>
- Realice una copia de seguridad del archivo
startWebLogic.sh
:cd $DOMAIN_HOME/bin cp startWebLogic.sh startWebLogic.sh.orig
- Utilice un editor de texto para editar el script
startWebLogic.sh
original y agregar la opción-javaagent
.- Si va a desplegar el agente Java de APM en Oracle WebLogic Administration Server y los servidores gestionados, agregue la siguiente opción de
-javaagent
al juegoJAVA_OPTIONS
, después de la llamadasetDomainEnv.sh
:JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:$DOMAIN_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Si va a desplegar el agente Java de APM solo en servidores gestionados, agregue la siguiente opción de
-javaagent
al juegoJAVA_OPTIONS
en una sentenciaif
después de la llamadasetDomainEnv.sh
:if [ "$SERVER_NAME" != "AdminServer" ] ; then set JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:$DOMAIN_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar" fi
- Si va a desplegar el agente Java de APM en Oracle WebLogic Administration Server y los servidores gestionados, agregue la siguiente opción de
- Pare y reinicie Oracle WebLogic Server:
cd $DOMAIN_HOME/bin ./stopWebLogic.sh cd .. nohup ./startWebLogic.sh >& startup.log &
Si tiene servidores gestionados, también debe pararlos y reiniciarlos:
cd $DOMAIN_HOME/bin ./stopManagedWebLogic.sh {SERVER_NAME} {ADMIN_URL} {USER_NAME} {PASSWORD} nohup ./startManagedWebLogic.sh {SERVER_NAME} {ADMIN_URL} >& {SERVER_NAME}.log &
Nota
Observe que se utiliza la versión$DOMAIN_HOME
destartWebLogic.sh
, aunque haya editado la versión$DOMAIN_HOME/bin
. La llamada al comando desde un nivel superior (desde$DOMAIN_HOME
) llama al comando desde un nivel inferior (desde$DOMAIN_HOME/bin
). Sin embargo, el comandostopWebLogic.sh
se llamará desde el directorio$DOMAIN_HOME/bin
.
Una vez que el agente Java de APM se ha desplegado correctamente, aparece el mensaje Oracle APM Agent: Initialized AgentInstance
en el log de inicio del servidor.
Apache Tomcat Server
A continuación se incluye información sobre cómo desplegar el agente Java de APM en Apache Tomcat Server.
- Defina una variable que apunte al directorio de destino del servidor de aplicaciones. Este es el directorio en el que se aprovisiona el agente Java de APM.
Defina la variable
$CATALINA_HOME
para que apunte al directorio de destino de Apache Tomcat Server y confirme que el agente Java de APM se ha aprovisionado en el mismo directorio de destino antes de realizar el siguiente paso.Servidor de aplicaciones Información de la variable del directorio de destino Apache Tomcat Server Defina la variable $CATALINA_HOME
para que apunte al directorio de destino de Apache Tomcat Server.- Si utiliza un shell Bash:
export CATALINA_HOME=<Apache Tomcat Server destination directory>
- Si utiliza un shell C:
setenv CATALINA_HOME "<Apache Tomcat Server destination directory>"
- Si utiliza un shell Bash:
- Realice una copia de seguridad del archivo
catalina.sh
.$ cd $CATALINA_HOME/bin $ cp catalina.sh catalina.sh.orig
- Utilice un editor de texto para editar el archivo
catalina.sh
original y agregar la siguiente opción de-javaagent
aCATALINA_OPTS
. Realice el cambio fuera de cualquier sentenciaif
o bloques de código que es posible que no se ejecuten durante el inicio del servidor. Esto garantizará que el indicador-javaagent
siempre se agregue a las opciones de inicio del servidor.CATALINA_OPTS="${CATALINA_OPTS} -javaagent:$CATALINA_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Detenga y reinicie Apache Tomcat Server:
$ cd $CATALINA_HOME/bin $ ./shutdown.sh $ ./startup.sh
Una vez que el agente Java de APM se ha desplegado correctamente, aparece el mensaje Oracle APM Agent: Initialized AgentInstance
en el log de inicio del servidor.
Para obtener más información, consulte el tutorial sobre instalación de un agente Java de APM en un servidor de aplicaciones de Tomcat.
Servidor Jetty
Esta es la información sobre cómo desplegar el agente Java de APM en Jetty Server.
- Defina una variable que apunte al directorio de destino del servidor de aplicaciones. Este es el directorio en el que se aprovisiona el agente Java de APM.
Defina la variable
JETTY_HOME
para que apuntar al directorio del destino de Jetty Server (donde se extrajo el software Jetty) y confirme que el agente Java de APM se ha aprovisionado en el mismo directorio del destino antes de realizar el siguiente paso. - Inicie el servidor Jetty.
java -javaagent:/<Destination_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar $JETTY_HOME/start.jar
Una vez que el agente Java de APM se ha desplegado correctamente, aparece el mensaje Oracle APM Agent: Initialized AgentInstance
en el log de inicio del servidor.
Spring Boot
A continuación se incluye información sobre cómo desplegar un agente Java de APM en un microservicio de Spring Boot que ejecuta Apache Tomcat embebido.
application.properties
de la aplicación Spring Boot para activar los beans gestionados de Apache Tomcat:spring.jmx.enabled=true
server.tomcat.mbeanregistry.enabled=true
También puede agregar las propiedades anteriores: spring.jmx.enabled
y server.tomcat.mbeanregistry.enabled
como propiedades del sistema en la línea de comandos.
-javaagent
al script de inicio del microservicio. Tenga en cuenta que <Destination Directory>
indica el directorio en el que ha aprovisionado el agente.java -javaagent:<Destination Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<microservice.jar>
Una vez que el agente Java de APM se ha desplegado correctamente, aparece el mensaje Oracle APM Agent: Initialized AgentInstance
en el log de inicio del microservicio.
Servidor JBoss
A continuación, se muestra información sobre cómo desplegar el agente Java de APM en el servidor JBoss.
Las siguientes instrucciones son aplicables para JBoss EAP y Wildfly.
- Defina una variable que apunte al directorio de destino del servidor de aplicaciones. Este es el directorio en el que se aprovisiona el agente Java de APM.
Defina la variable
$JBOSS_HOME
para que apunte al directorio de destino del servidor JBoss y confirme que el agente Java de APM se ha aprovisionado en el mismo directorio de destino antes de realizar el siguiente paso.Servidor de aplicaciones Información de la variable del directorio de destino Servidor JBoss Defina la variable
$JBOSS_HOME
para que apunte al directorio de destino del servidor JBoss.- Si utiliza un shell Bash:
export JBOSS_HOME=<JBoss Server destination directory>
- Si utiliza un shell C:
setenv JBOSS_HOME "<JBoss Server destination directory>"
- Si utiliza un shell Bash:
- Realice una copia de seguridad del archivo
standalone.conf
:cd $JBOSS_HOME/bin cp standalone.conf standalone.conf.orig
- Utilice un editor de texto y edite el archivo
standalone.conf
original y agregue las siguientes opciones de Java aJAVA_OPTS
. Realice el cambio fuera de cualquier sentenciaif
o bloques de código que es posible que no se ejecuten durante el inicio del servidor.- Agregue la opción
-javaagent
aJAVA_OPTS
.JAVA_OPTS="$JAVA_OPTS -javaagent:$JBOSS_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Edite la propiedad Java
jboss.modules.system.pkgs
para incluir"com.oracle.apm"
.Por ejemplo:
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.oracle.apm"
Nota
Cada entorno es diferente. La propiedad del servidor Jboss puede incluir diferentes paquetes de los que se muestran en el ejemplo anterior.
- Agregue la opción
- Pare y reinicie el servidor JBoss:
cd $JBOSS_HOME/bin ./jboss-cli.sh -c :shutdown nohup ./standalone.sh -b 0.0.0.0&> startup.log &
Una vez que el agente Java de APM se ha desplegado correctamente, aparece el mensaje Oracle APM Agent: Initialized AgentInstance
en el log de inicio del servidor.
Docker y Kubernetes
A continuación se incluye información sobre cómo desplegar un agente Java de APM en un contenedor de Docker y en Oracle Container Engine for Kubernetes (OKE).
Despliegue del agente Java de APM en la imagen de contenedor de Docker
A continuación se incluye información sobre cómo desplegar un agente Java de APM en una imagen de contenedor de Docker y en Oracle Container Engine for Kubernetes (OKE).
Figura 3-1 Despliegue del agente Java de APM en la imagen de contenedor de Docker

Recomendación:
Utilice esta opción cuando sea posible realizar cambios en la imagen de contenedor de Docker.
Por ejemplo, si puede que necesite cambiar la configuración del agente de APM, podrá realizar cambios en la imagen de Docker.
Para desplegar el agente Java de APM, siga estos pasos:
- Antes de continuar, confirme que ha completado los requisitos previos y aprovisionado el agente Java de APM.
Nota
Al aprovisionar el agente Java de APM, se recomienda aprovisionarlo en cualquier ubicación de la máquina local y, a continuación, copiarlo en una imagen de Docker. - Modifique el archivo
Dockerfile
para copiar el agente Java de APM en una imagen de Docker:COPY <DESTINATION_DIRECTORY>/oracle-apm-agent <Docker_Image_Directory>/oracle-apm-agent/
Tenga en cuenta que
<DESTINATION_DIRECTORY>
indica la ubicación en la máquina local en la que ha aprovisionado el agente Java de APM y<Docker_Image_Directory>
indica el directorio de la imagen de Docker en la que va a copiar el agente Java de APM.<Docker_Image_Directory>
también puede ser el directorio de destino del servidor de aplicaciones en Docker; por ejemplo,$DOMAIN_HOME
, si está trabajando con Oracle WebLogic Server. - Agregue la siguiente opción de
-javaagent
al script de inicio del servidor de aplicaciones:java -javaagent:<Docker_Image_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<appserver.jar>
- Cree una nueva imagen de Docker con el agente Java de APM incorporado y el script de inicio modificado, y transfiera la imagen al registro.
Si utiliza Kubernetes para gestionar los contenedores del Docker, actualice la configuración de Kubernetes para utilizar la nueva imagen de Docker y reinicie el pod de Kubernetes.
Además, puede definir las dimensiones adicionales que se notificarán desde el pod de Kubernetes mediante la API descendente copiando la siguiente configuración de volumen y entorno en la especificación de despliegue (archivo yaml
) del pod de Kubernetes. Para obtener información sobre la API descendente, consulte la sección correspondiente (The Downward API) en la documentación de Kubernetes.
Configuración del entorno
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
Configuración del volumen
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 el despliegue de Kubernetes no tiene etiquetas, anotaciones o ambas, la API descendente correspondiente provocará un error cuando se despliegue la aplicación. En este caso, debe eliminar la entrada de API descendente que corresponde a metadata.labels
, metadata.annotations
o ambos.
Despliegue del agente Java de APM con el operador OpenTelemetry
A continuación se muestra información sobre cómo desplegar un agente Java de APM mediante el operador OpenTelemetry para inyectar y configurar automáticamente el agente Java de APM en los pods de aplicación Java que se ejecutan en clusters de Kubernetes (K8s).
Figura 3-2 Despliegue del agente Java de APM con el operador OpenTelemetry

Recomendación:
Utilice esta opción si no es posible actualizar la imagen de contenedor de Docker y prefiere realizar cambios en la configuración del agente Java de APM mediante el recurso personalizado (CR) de Kubernetes para inyectar automáticamente el agente de APM en las JVM al iniciar.
- Para el control de versiones de imágenes de Docker, evite utilizar la etiqueta
:latest
al desplegar contenedores en producción, ya que es más difícil realizar un seguimiento de qué versión de la imagen se está ejecutando y es más difícil realizar un rollback correctamente. En su lugar, especifique una etiqueta significativa, comov1.12.1.3
. -
Para Kubernetes, realice copias de seguridad de los recursos personalizados (CR) y las asignaciones de configuración de Kubernetes.
Requisito: instale el operador OpenTelemetry en el cluster de Kubernetes.
Hay tres opciones diferentes disponibles: Manifiesto de versión de operador, Gráfico de cabecera de operador o Hub de operador.
En la mayoría de los casos, se debe instalar un cert-manager. Si se utiliza la opción de gráfico de timón, hay una opción para generar un certificado autofirmado.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.2/cert-manager.yaml
Para instalar el operador OpenTelemetry, ejecute lo siguiente:
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
Desplegar el agente Java de APM
Para desplegar el agente Java de APM, siga estos pasos:
- Crear un recurso personalizado (CR) de Kubernetes.
Para gestionar la instrumentación automática, se debe proporcionar al operador OpenTelemetry información sobre el agente Java de APM y su configuración mediante la definición de recurso personalizado (CRD).
El operador utilizará este recurso personalizado para copiar el agente en el pod y agregarle la configuración necesaria.
Para crear la CR, ejecute lo siguiente: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
Donde:- <data-upload-endpoint> es la URL de punto final de carga de datos que se genera cuando se crea el dominio de APM. Para obtener información, consulte Cómo obtener el punto final de carga de datos y las claves de datos.
- <private-data-key> es la clave de datos privados de instalación del agente Java de APM que se genera cuando se crea el dominio de APM. Para obtener información, consulte Cómo obtener el punto final de carga de datos y las claves de datos.
La CR creada se puede consultar ejecutando el siguiente comando:
Todos los puntos finales y variables de entorno deben ser correctos para que la instrumentación automática funcione correctamente.kubectl get otelinst -n opentelemetry-operator-system
- Agregue la anotación de Kubernetes.
El operador OpenTelemetry utiliza la anotación de Kubernetes para decidir qué pods se deben inyectar automáticamente con el agente Java de APM.
La anotación se puede agregar a un espacio de nombres. En ese caso, se inyectarán todos los pods dentro de ese espacio de nombres. La anotación también se puede agregar a objetos PodSpec individuales, disponibles como parte de Deployment, Statefulset y otros recursos.
Nota:instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/inst-apm-java"
Para empezar a editar el espacio de nombres, haga lo siguiente:- Ejecute el comando:
kubectl edit namespace <your-namespace-name>
- Edite el espacio de nombres una vez abierto el editor. Por ejemplo, editor
vi
. - Agregue la anotación al espacio de nombres. Tenga en cuenta que la sangría es muy importante para que sea un archivo YAML válido.
Por ejemplo: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:
- Ejecute el comando:
- Reinicie el pod de Kubernetes.
Para reiniciar el pod donde desea inyectar automáticamente el agente Java de APM, ejecute lo siguiente:
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Verifique el pod de Kubernetes.
Para verificar que el pod se haya inyectado automáticamente con el agente Java de APM después de reiniciar, ejecute lo siguiente:
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
Ahora puede ir al siguiente paso: Verificar despliegue de agente Java de APM.
Para obtener más información sobre cómo desplegar un agente Java de APM mediante el operador OpenTelemetry, consulte el blog: Despliegue automático de un agente Java de APM en entornos de Kubernetes mediante el operador OpenTelemetry
Despliegue del agente Java APM en un volumen montado
A continuación se muestra información sobre cómo desplegar un agente Java de APM en Oracle Container Engine for Kubernetes (OKE) mediante un volumen montado.
Figura 3-3 Despliegue del agente Java de APM en un volumen montado

-
Utilice esta opción cuando no sea posible realizar cambios en la imagen de contenedor de Docker y prefiera utilizar un volumen montado compartido cuando se necesiten cambios en el agente Java de APM.
- Ejemplo 1: si necesita realizar cambios de configuración frecuentes en el agente de APM, la imagen de contenedor debe actualizarse, pero no es posible hacerlo.
- Ejemplo 2: si el usuario que está desplegando el agente de APM no tiene el acceso o los permisos necesarios para reconstruir una imagen de contenedor.
-
Para el control de versiones de imágenes de docker, realice una copia de seguridad de los archivos binarios y de configuración.
Para desplegar el agente Java de APM en un volumen montado, siga estos pasos:
- Confirme que ha completado las tareas de requisitos del agente Java de APM.
Anote el punto final de carga de datos y la clave de datos cuando se haya creado el dominio de APM.
- Cree un nuevo sistema de archivos que monte los pods.
Al crear el sistema de archivos, es importante asegurarse de seleccionar el mismo compartimento de red virtual en la nube (VCN) que utiliza Kubernetes. Haga lo mismo para el compartimento de subred.
- Monte el sistema de archivos en los pods.
Este paso requiere ediciones en los archivos yaml correspondientes.
Cree
PersistentVolume
y las entidades relacionadas en Kubernetes mediante el siguiente archivo yaml. Tenga en cuenta los siguientes campos que necesita editar para su entorno:mntTargetId
,server
ypath
.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
Para aplicar los cambios, ejecute
kubectl apply -f <filename.yaml>
A continuación, actualice el archivo yaml que gestiona los pods y agregue el montaje de volumen y volumen.
Para que surta efecto, vuelva a crear los pods.
- Descargue el archivo de agente de Java APM.
Descargue y copie el archivo en el volumen montado.
Para obtener instrucciones de descarga, consulte Descarga del software del agente Java de APM.
Después de descargarlo, cópielo en el volumen montado.
- Aprovisionamiento del agente Java de APM.
Conéctese a uno de los contenedores para aprovisionar el agente Java de APM, busque el archivo jar apm-java-agent-installer y ejecute lo siguiente:
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>
Para obtener instrucciones de aprovisionamiento, consulte Aprovisionamiento del agente Java de APM.
- Despliegue del agente Java de APM.
Despliegue el agente Java de APM proporcionando la ubicación oracle-apm-agent al microservicio en el archivo yaml.
Agregue el argumento
-javaagent
y la ubicación del archivo jar del agente de APM al comando java de cada microservicio:java -javaagent:<Mounted Volume>/oracle-apm-agent/bootstrap/ApmAgent.jar
- Reinicie Kubernetes.
Vuelva a crear los pods ejecutando:
kubectl apply -f <filename.yaml>
.Ahora puede ir al siguiente paso: Verificar despliegue de agente Java de APM.
Para obtener más información sobre cómo desplegar un agente Java de APM en un volumen montado, vea el vídeo: Kubernetes Spring Boot Instrumentation for Distributed Tracing o consulte el blog: Application Performance Monitoring: Instrument Java on Kubernetes for Monitoring and Diagnostics.