Implantar o Agente Java do APM
Ao provisionar com sucesso o agente Java do APM, você pode implantá-lo.
Para implantar o agente Java do APM em qualquer aplicativo Java, adicione o parâmetro -javaagent
ao script de inicialização da JVM. Dependendo do ambiente Java, um servidor de aplicativos ou um microsserviço, os usuários podem ter scripts de inicialização de shell ou de bastidores ou outra forma de executar a linha de comando Java.
Veja abaixo exemplos de como implantar o agente Java do APM nos seguintes aplicativos Java:
Oracle WebLogic Server
Veja aqui as informações sobre como implantar o agente Java do APM no Oracle WebLogic Server.
- Defina uma variável para apontar para o diretório de destino do servidor de aplicativos. Este é o diretório no qual o agente Java do APM é provisionado.
Defina a variável
$DOMAIN_HOME
para apontar para o diretório de Domínio do Oracle WebLogic Server e confirme se o agente Java do APM foi provisionado no mesmo diretório de destino antes de executar a próxima etapa.Servidor de Aplicativos Informações da Variável do Diretório de Destino Oracle WebLogic Server Defina a variável $DOMAIN_HOME
para apontar para o Domínio do Oracle WebLogic Server.export DOMAIN_HOME=<Oracle WebLogic Server Domain>
- Faça uma cópia de backup do arquivo
startWebLogic.sh
:cd $DOMAIN_HOME/bin cp startWebLogic.sh startWebLogic.sh.orig
- Use um editor de texto e edite o script
startWebLogic.sh
original e adicione a opção-javaagent
.- Se você estiver implantando o agente Java do APM no Servidor de Administração do Oracle WebLogic e em Servidores Gerenciados, adicione a seguinte opção
-javaagent
ao conjuntoJAVA_OPTIONS
, após a chamadasetDomainEnv.sh
:JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:$DOMAIN_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Se você estiver implantando o agente Java do APM apenas em Servidores Gerenciados, adicione a seguinte opção
-javaagent
ao conjunto deJAVA_OPTIONS
em uma instruçãoif
após a chamadasetDomainEnv.sh
:if [ "$SERVER_NAME" != "AdminServer" ] ; then set JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:$DOMAIN_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar" fi
- Se você estiver implantando o agente Java do APM no Servidor de Administração do Oracle WebLogic e em Servidores Gerenciados, adicione a seguinte opção
- Interrompa e reinicie o Oracle WebLogic Server:
cd $DOMAIN_HOME/bin ./stopWebLogic.sh cd .. nohup ./startWebLogic.sh >& startup.log &
Se você tiver Servidores Gerenciados, interrompa e reinicie-os também:
cd $DOMAIN_HOME/bin ./stopManagedWebLogic.sh {SERVER_NAME} {ADMIN_URL} {USER_NAME} {PASSWORD} nohup ./startManagedWebLogic.sh {SERVER_NAME} {ADMIN_URL} >& {SERVER_NAME}.log &
Observação
Observe que a versão$DOMAIN_HOME
destartWebLogic.sh
é usada, mesmo que você tenha editado a versão$DOMAIN_HOME/bin
. Chamar o comando de um nível superior (de$DOMAIN_HOME
) chama o comando de um nível inferior (de$DOMAIN_HOME/bin
). No entanto, o comandostopWebLogic.sh
será chamado do diretório$DOMAIN_HOME/bin
.
Depois que o agente Java do APM for implantado com sucesso, a mensagem Oracle APM Agent: Initialized AgentInstance
será exibida no log de inicialização do servidor.
Servidor Apache Tomcat
Veja aqui as informações sobre como implantar o agente Java do APM no Servidor Apache Tomcat.
- Defina uma variável para apontar para o diretório de destino do servidor de aplicativos. Este é o diretório no qual o agente Java do APM é provisionado.
Defina a variável
$CATALINA_HOME
para apontar para o diretório de destino do Servidor Apache Tomcat e confirme se o agente Java do APM foi provisionado no mesmo diretório de destino antes de executar a próxima etapa.Servidor de Aplicativos Informações da Variável do Diretório de Destino Servidor Apache Tomcat Defina a variável $CATALINA_HOME
para apontar para o diretório de destino do Servidor Apache Tomcat.- Se você estiver usando um shell Bash:
export CATALINA_HOME=<Apache Tomcat Server destination directory>
- Se estiver usando um shell C:
setenv CATALINA_HOME "<Apache Tomcat Server destination directory>"
- Se você estiver usando um shell Bash:
- Faça uma cópia de backup do arquivo
catalina.sh
.$ cd $CATALINA_HOME/bin $ cp catalina.sh catalina.sh.orig
- Use um editor de texto e edite o arquivo
catalina.sh
original e adicione a seguinte opção-javaagent
aCATALINA_OPTS
. Faça a alteração fora de qualquer instruçãoif
ou bloco de código que não possa ser executado durante a inicialização do servidor. Isso garantirá que o flag-javaagent
seja sempre adicionado às opções de inicialização do servidor.CATALINA_OPTS="${CATALINA_OPTS} -javaagent:$CATALINA_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Interrompa e reinicie o Servidor Apache Tomcat:
$ cd $CATALINA_HOME/bin $ ./shutdown.sh $ ./startup.sh
Depois que o agente Java do APM for implantado com sucesso, a mensagem Oracle APM Agent: Initialized AgentInstance
será exibida no log de inicialização do servidor.
Para obter mais informações, consulte Instalar um Agente Java do APM em um Tutorial do Servidor de Aplicativos Tomcat.
Servidor Jetty
Veja aqui as informações sobre como implantar o agente Java do APM no Servidor Jetty.
- Defina uma variável para apontar para o diretório de destino do servidor de aplicativos. Este é o diretório no qual o agente Java do APM é provisionado.
Defina a variável
JETTY_HOME
para apontar para o diretório de destino do Jetty Server (onde o software Jetty foi extraído) e confirme se o agente Java do APM foi provisionado no mesmo diretório antes de executar a próxima etapa. - Inicie o servidor Jetty.
java -javaagent:/<Destination_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar $JETTY_HOME/start.jar
Depois que o agente Java do APM for implantado com sucesso, a mensagem Oracle APM Agent: Initialized AgentInstance
será exibida no log de inicialização do servidor.
Spring Boot
Veja aqui as informações sobre como implantar um agente Java do APM em um microsserviço Spring Boot executando o Apache Tomcat incorporado.
application.properties
do aplicativo Spring Boot para ativar o Apache Tomcat Mbeans:spring.jmx.enabled=true
server.tomcat.mbeanregistry.enabled=true
Como alternativa, adicione as propriedades acima: spring.jmx.enabled
e server.tomcat.mbeanregistry.enabled
como propriedades do sistema na linha de comando.
-javaagent
a seguir ao script de inicialização do seu microsserviço. Observe que <Destination Directory>
denota o diretório no qual você provisionou o agente.java -javaagent:<Destination Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<microservice.jar>
Depois que o agente Java do APM for implantado com sucesso, a mensagem Oracle APM Agent: Initialized AgentInstance
será exibida no log de inicialização do microsserviço.
JBoss Servidor
Aqui estão informações sobre como implantar o agente APM Java no Servidor JBoss.
As instruções abaixo são aplicáveis para JBoss EAP e Wildfly.
- Defina uma variável para apontar para o diretório de destino do servidor de aplicativos. Este é o diretório no qual o agente Java do APM é provisionado.
Defina a variável
$JBOSS_HOME
para apontar para o diretório de destino do Servidor JBoss e confirme se o agente Java do APM foi provisionado no mesmo diretório de destino antes de executar a próxima etapa.Servidor de Aplicativos Informações da Variável do Diretório de Destino JBoss Servidor Defina a variável
$JBOSS_HOME
para apontar para o diretório de destino do Servidor JBoss.- Se você estiver usando um shell Bash:
export JBOSS_HOME=<JBoss Server destination directory>
- Se estiver usando um shell C:
setenv JBOSS_HOME "<JBoss Server destination directory>"
- Se você estiver usando um shell Bash:
- Faça uma cópia de backup do arquivo
standalone.conf
:cd $JBOSS_HOME/bin cp standalone.conf standalone.conf.orig
- Use um editor de texto e edite o arquivo
standalone.conf
original e adicione as seguintes opções Java aJAVA_OPTS
. Faça a alteração fora de qualquer instruçãoif
ou bloco de código que não possa ser executado durante a inicialização do servidor.- Adicione a opção
-javaagent
aJAVA_OPTS
.JAVA_OPTS="$JAVA_OPTS -javaagent:$JBOSS_HOME/oracle-apm-agent/bootstrap/ApmAgent.jar"
- Edite a propriedade
jboss.modules.system.pkgs
Java para incluir"com.oracle.apm"
.Por exemplo:
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.oracle.apm"
Observação
Cada ambiente é diferente. A propriedade do servidor Jboss pode incluir pacotes diferentes dos mostrados no exemplo acima.
- Adicione a opção
- Pare e reinicie o Servidor JBoss:
cd $JBOSS_HOME/bin ./jboss-cli.sh -c :shutdown nohup ./standalone.sh -b 0.0.0.0&> startup.log &
Depois que o agente Java do APM for implantado com sucesso, a mensagem Oracle APM Agent: Initialized AgentInstance
será exibida no log de inicialização do servidor.
Docker e Kubernetes
Veja aqui as informações sobre como implantar um agente Java do APM em um contêiner do Docker e no Oracle Container Engine for Kubernetes (OKE).
Implantar o Agente Java do APM na Imagem do Contêiner do Docker
Veja aqui as informações sobre como implantar um agente Java do APM em uma imagem de contêiner do Docker e no Oracle Container Engine for Kubernetes (OKE).
Figura 3-1 Implantar o Agente Java do APM na Imagem do Contêiner do Docker

Recomendação:
Use essa opção quando for possível fazer alterações na imagem do contêiner do Docker.
Por exemplo, se você precisar alterar a configuração do agente do APM, poderá fazer alterações na imagem do Docker.
Para implantar o agente Java do APM, siga as etapas abaixo:
- Antes de continuar, confirme se você concluiu os pré-requisitos e o agente Java do APM provisionado.
Observação
Ao provisionar o agente Java do APM, é recomendável provisioná-lo em qualquer local da sua máquina local e, em seguida, copiá-lo para uma imagem do Docker. - Modifique seu
Dockerfile
para copiar o agente Java do APM para uma imagem do Docker:COPY <DESTINATION_DIRECTORY>/oracle-apm-agent <Docker_Image_Directory>/oracle-apm-agent/
Observe que
<DESTINATION_DIRECTORY>
denota o local em sua máquina local na qual você provisionou o agente Java do APM e<Docker_Image_Directory>
denota o diretório na imagem do Docker para o qual você está copiando o agente Java do APM. O<Docker_Image_Directory>
também poderia ser o diretório de destino do servidor de aplicativos no Docker, por exemplo,$DOMAIN_HOME
, se você estiver trabalhando com o Oracle WebLogic Server. - Adicione a seguinte opção
-javaagent
ao script de inicialização do servidor de aplicativos:java -javaagent:<Docker_Image_Directory>/oracle-apm-agent/bootstrap/ApmAgent.jar -jar target/<appserver.jar>
- Crie uma nova imagem do Docker com o agente Java do APM incorporado e o script de inicialização modificado e envie a imagem para o registro.
Se você usar o Kubernetes para gerenciar seus contêineres do Docker, atualize a sua configuração do Kubernetes para usar a nova imagem do Docker e reinicie o pod do Kubernetes.
Além disso, você pode definir dimensões adicionais a serem reportadas do pod do Kubernetes usando a API Downward, copiando as seguintes definições de ambiente e volume na especificação de implantação (arquivo yaml
) do pod do Kubernetes. Para obter informações sobre a API Downward, consulte The Downward API na documentação do Kubernetes.
Definições de Ambiente
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
Definições 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
Se a implantação do Kubernetes não tiver labels, anotações ou ambos, a API Downward para o mesmo causará um erro quando o aplicativo for implantado. Nesse caso, você deve remover a entrada da API Downward correspondente a metadata.labels
, metadata.annotations
ou ambos.
Implantar o Agente Java do APM usando o Operador OpenTelemetry
Veja informações sobre como implantar um agente Java do APM usando o operador OpenTelemetry para injetar e configurar automaticamente o agente Java do APM em seus pods de aplicativos Java em execução nos clusters do Kubernetes (K8s).
Figura 3-2 Implantar Agente Java do APM usando o Operador OpenTelemetry

Recomendação:
Use essa opção se não for possível atualizar a imagem do contêiner do Docker e você preferir fazer alterações na configuração do agente Java do APM usando o recurso personalizado (CR) do Kubernetes para injetar automaticamente o agente do APM nas JVMs na inicialização.
- Para o controle de versão da imagem do Docker, evite usar a tag
:latest
ao implantar contêineres em produção, pois é mais difícil rastrear qual versão da imagem está em execução e mais difícil fazer rollback corretamente. Em vez disso, especifique uma tag significativa, comov1.12.1.3
. -
Para o Kubernetes, faça backups dos recursos personalizados (CRs) e dos mapas de configuração do Kubernetes.
Pré-requisito: Instale o Operador OpenTelemetry no cluster do Kubernetes.
Há três opções diferentes disponíveis: Manifesto de release do operador, Gráfico helm do operador ou Hub do Operador.
Na maioria dos casos, um cert-manager deve ser instalado. Se a opção de gráfico helm for usada, haverá uma opção para gerar um certificado autoassinado.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.2/cert-manager.yaml
Para instalar o operador OpenTelemetry, execute o seguinte:
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
Implantar o agente Java do APM
Para implantar o agente Java do APM, siga estas etapas:
- Criar um Recurso Personalizado (CR) do Kubernetes.
Para gerenciar a instrumentação automática, o Operador OpenTelemetry precisa receber informações sobre o agente Java do APM e sua configuração, que é feita usando a Definição de Recurso Personalizado (CRD).
Este Recurso Personalizado será usado pelo operador para copiar o agente no pod e adicionar a ele a configuração necessária.
Para criar o CR, execute o seguinte: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
Em que:- <data-upload-endpoint> é o URL do ponto final de upload de dados que é gerado quando o domínio do APM é criado. Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
- <private-data-key> é a chave de dados privada de instalação do agente Java do APM que é gerada quando o domínio do APM é criado. Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
O CR criado pode ser consultado executando o seguinte comando:
Todos os pontos finais e variáveis de ambiente devem estar corretos para que a instrução automática funcione corretamente.kubectl get otelinst -n opentelemetry-operator-system
- Adicione a anotação do Kubernetes.
O operador OpenTelemetry usa a anotação do Kubernetes para decidir quais pods devem ser injetados automaticamente com o agente Java do APM.
A anotação pode ser adicionada a um namespace. Nesse caso, todos os pods dentro desse namespace serão injetados. A anotação também pode ser adicionada a objetos PodSpec individuais, disponíveis como parte da Implantação, Statefulset e outros recursos.
Nota:instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/inst-apm-java"
Para começar a editar seu namespace, faça o seguinte:- Execute o comando:
kubectl edit namespace <your-namespace-name>
- Edite o namespace assim que o editor for aberto. Por exemplo, editor
vi
. - Adicione a anotação ao namespace. Tenha em mente que o recuo é muito importante para torná-lo um arquivo YAML válido.
Exemplo: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:
- Execute o comando:
- Reinicie o pod do Kubernetes.
Para reiniciar o pod no qual você deseja injetar automaticamente o agente Java do APM, execute o seguinte:
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Verifique o pod do Kubernetes.
Para verificar se seu pod foi injetado automaticamente com o agente Java do APM depois que ele foi reiniciado, execute o seguinte:
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
Agora você pode ir para a próxima etapa: Verificar Implantação do Agente Java do APM.
Para obter mais informações sobre como implantar um agente Java do APM usando o Operador OpenTelemetry, confira o blog: Implante automaticamente um agente Java do APM em Ambientes Kubernetes usando o Operador OpenTelemetry
Implantar o Agente Java do APM em um Volume Montado
Veja informações sobre como implantar um agente Java do APM no Oracle Container Engine for Kubernetes (OKE) usando um volume montado.
Figura 3-3 Implantar o Agente Java do APM em um Volume Montado

-
Use essa opção quando não for possível fazer alterações na imagem do contêiner do Docker e você preferir usar um volume montado compartilhado quando forem necessárias alterações no agente Java do APM.
- Exemplo 1: Se você precisar fazer alterações frequentes na configuração do agente do APM, a imagem do contêiner precisará ser atualizada, mas não é viável fazer isso.
- Exemplo 2: Se o usuário que está implantando o agente do APM não tiver o acesso ou as permissões necessárias para reconstruir uma imagem de contêiner.
-
Para o controle de versão da imagem do docker, faça backup dos arquivos binários e de configuração.
Para implantar o agente Java do APM em um volume montado, siga estas etapas:
- Confirme se você concluiu as tarefas de pré-requisito do agente Java do APM.
Anote o ponto final de upload de dados e a chave de dados quando o Domínio do APM tiver sido criado.
- Crie um novo sistema de arquivos que montará os pods.
Ao criar o sistema de arquivos, é importante garantir a seleção do mesmo Compartimento de Rede Virtual na Nuvem (VCN) que o Kubernetes está usando. Faça o mesmo para o Compartimento de Sub-rede.
- Monte o sistema de arquivos nos pods.
Esta etapa requer edições nos arquivos yaml correspondentes.
Crie o
PersistentVolume
e as entidades relacionadas no Kubernetes, usando o arquivo yaml abaixo. Observe os seguintes campos que você precisa editar para seu ambiente:mntTargetId
,server
epath
.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 as alterações, execute
kubectl apply -f <filename.yaml>
Em seguida, atualize o arquivo yaml que gerencia os pods e adicione a montagem de volume e volume.
Para entrar em vigor, recrie os pods.
- Faça download do arquivo do agente Java do APM.
Faça download do arquivo e copie-o para o volume montado.
Para obter instruções de download, consulte Fazer Download do Software do Agente Java do APM.
Após o download, copie-o para o volume montado.
- Provisionar o Agente Java do APM.
Faça log-in em um dos contêineres para provisionar o Agente Java do APM, localize o arquivo jar apm-java-agent-installer e execute o seguinte:
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 obter instruções de provisionamento, consulte Provisionar o Agente Java do APM.
- Implantar o Agente Java do APM.
Implante o Java Agent do APM fornecendo o local oracle-apm-agent para o microsserviço no arquivo yaml.
Adicione o argumento
-javaagent
e o local do arquivo jar do agente do APM ao comando java de cada microsserviço:java -javaagent:<Mounted Volume>/oracle-apm-agent/bootstrap/ApmAgent.jar
- Reinicie o Kubernetes.
Recrie os pods executando:
kubectl apply -f <filename.yaml>
.Agora você pode ir para a próxima etapa: Verificar Implantação do Agente Java do APM.
Para obter mais informações sobre como implantar um agente Java do APM em um volume montado, assista ao vídeo: Instrumentação de Inicialização do Kubernetes Spring para Rastreamento Distribuído ou confira o blog: Application Performance Monitoring: Instrumentar o Java no Kubernetes para Monitoramento e Diagnóstico.