All Products
Search
Document Center

Application Real-Time Monitoring Service:Bagaimana cara menerapkan beberapa instans pada satu host?

Last Updated:Aug 19, 2026

Untuk menerapkan beberapa instans aplikasi pada satu host, atur parameter -Darms.agentId ke nilai unik untuk setiap proses JVM, seperti 001, 002, atau 003. Parameter ini menentukan proses JVM yang akan dihubungkan.

Contoh

# 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

Ganti placeholder dengan nilai aktual Anda:

PlaceholderDeskripsiContoh
{user.workspace}Jalur absolut ke direktori instalasi agen ARMS/home/admin
<LicenseKey>Kunci lisensi ARMS untuk aplikasi AndaLTAI5tXxx
<AppName>Nama aplikasi yang terdaftar di ARMSmy-order-service
Catatan

Argumen -javaagent harus ditempatkan sebelum argumen -jar. Ini merupakan opsi JVM, bukan argumen aplikasi.

Catatan

Untuk versi agen ARMS sebelum 2.7.3.5, ganti aliyun-java-agent.jar dengan arms-bootstrap-1.7.0-SNAPSHOT.jar. Lakukan upgrade ke versi agen terbaru untuk mengakses fitur dan perbaikan terkini.

Skenario penerapan cross-host pada kontainer Docker

Jika Anda menerapkan aplikasi yang sama dalam kontainer Docker pada beberapa Instance ECS, jaringan bridge Docker default di setiap host menggunakan subnet 172.17.0.0/16. Akibatnya, kontainer di host berbeda dapat memiliki alamat IP internal yang sama, seperti 172.17.0.2. ARMS mengidentifikasi instans aplikasi berdasarkan alamat IP, sehingga kontainer dengan alamat IP yang sama digabung menjadi satu instans dalam daftar instans Pemantauan Aplikasi.

Solusi 1: Gunakan mode jaringan host

Jalankan kontainer dengan --network=host agar kontainer menggunakan alamat IP host secara langsung. Karena setiap Instance ECS memiliki alamat IP yang berbeda, pendekatan ini menghindari konflik alamat IP akibat penggunaan jaringan bridge Docker default.

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

Solusi 2: Suntikkan agent ID menggunakan variabel lingkungan

Jika Anda tidak dapat menggunakan mode jaringan host, pertahankan skrip penerapan yang sama di setiap host dan gunakan variabel lingkungan HOSTNAME dari kontainer—yang nilainya berbeda di setiap host—untuk mengatur -Darms.agentId secara dinamis. Pendekatan ini mencegah duplikasi agent ID tanpa memerlukan konfigurasi khusus per host dalam skrip penerapan.

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