Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Como implantar várias instâncias em um único host?

Última atualização: Aug 18, 2026

Para implantar várias instâncias de uma aplicação em um único host, defina o parâmetro -Darms.agentId com um valor exclusivo para cada processo JVM, como 001, 002 ou 003. Esse parâmetro especifica o processo JVM de destino.

Exemplo

# Instance 1
java -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar \
  -Darms.licenseKey=<LicenseKey> \
  -Darms.appName=<AppName> \
  -Darms.agentId=001 \
  -jar demoApp.jar

# Instance 2
java -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar \
  -Darms.licenseKey=<LicenseKey> \
  -Darms.appName=<AppName> \
  -Darms.agentId=002 \
  -jar demoApp.jar

Substitua os espaços reservados pelos valores reais:

Espaço reservado

Descrição

Exemplo

{user.workspace}

Caminho absoluto do diretório de instalação do agente ARMS

/home/admin

<LicenseKey>

Chave de licença do ARMS da aplicação

LTAI5tXxx

<AppName>

Nome da aplicação registrada no ARMS

my-order-service

Nota

O argumento -javaagent deve preceder o argumento -jar, pois é uma opção da JVM, e não um argumento da aplicação.

Nota

Em versões do agente ARMS anteriores a 2.7.3.5, substitua aliyun-java-agent.jar por arms-bootstrap-1.7.0-SNAPSHOT.jar. Atualize para a versão mais recente do agente para obter os recursos e as correções atuais.

Cenário de implantação de contêineres Docker em vários hosts

Ao implantar a mesma aplicação em contêineres Docker em várias instâncias ECS, a rede bridge padrão do Docker em cada host usa a sub-rede 172.17.0.0/16. Consequentemente, contêineres em hosts diferentes podem receber o mesmo endereço IP interno, como 172.17.0.2. Como o ARMS identifica as instâncias da aplicação pelo endereço IP, contêineres com o mesmo IP são mesclados em uma única instância na lista de instâncias do Application Monitoring.

Solução 1: Usar o modo de rede do host

Inicie o contêiner com --network=host para que ele use diretamente o endereço IP do host. Como cada instância ECS tem um endereço IP diferente, essa abordagem evita o conflito de endereços IP causado pela rede bridge padrão do Docker.

docker run --network=host \
  -e JAVA_TOOL_OPTIONS="-javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey=<LicenseKey> -Darms.appName=<AppName>" \
  <image>

Solução 2: Injetar o ID do agente com uma variável de ambiente

Se não for possível usar o modo de rede do host, mantenha o mesmo script de implantação em todos os hosts e utilize a variável de ambiente HOSTNAME do contêiner. Essa variável tem um valor diferente em cada host e permite definir dinamicamente o parâmetro -Darms.agentId, evitando IDs de agente duplicados sem exigir configurações específicas por host no script de implantação.

java -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar \
  -Darms.licenseKey=<LicenseKey> \
  -Darms.appName=<AppName> \
  -Darms.agentId=$HOSTNAME \
  -jar demoApp.jar