All Products
Search
Document Center

Application Real-Time Monitoring Service:Instal agen Java ARMS di kluster ACK dan ACS

Last Updated:Sep 03, 2026

Application Real-Time Monitoring Service (ARMS) secara otomatis menginstrumentasi aplikasi Java yang berjalan di Container Service for Kubernetes (ACK) dan Container Compute Service (ACS). Instal komponen ack-onepilot di kluster Anda dan tambahkan tiga label ke Deployment Anda. ARMS kemudian mengumpulkan jejak (traces), topologi aplikasi, metrik panggilan API, serta data error dan latensi tanpa perubahan kode apa pun.

Catatan

Langkah instalasi untuk ACK dan ACS identik. Panduan ini menggunakan ACK sebagai contoh.

Cara kerja

Komponen ack-onepilot (ARMS Agent Onboarding Assistant) berjalan sebagai controller di kluster Anda. Saat pod yang diberi label dimulai, ack-onepilot secara otomatis menyuntikkan agen Java ARMS ke dalam pod tersebut. Ketika rilis versi agen baru tersedia, ack-onepilot akan melakukan upgrade agen pada restart aplikasi berikutnya. Untuk mengunci versi tertentu, lihat Mengontrol versi agen secara manual.

Untuk detail mekanisme penyuntikan, lihat Cara kerja ack-onepilot.

Penting

Komponen arms-pilot lama tidak lagi dipelihara. ack-onepilot adalah penggantinya dan sepenuhnya kompatibel — migrasi tidak memerlukan perubahan pada konfigurasi aplikasi Anda. Untuk langkah migrasi, lihat Uninstal arms-pilot dan instal ack-onepilot.

Ikhtisar proses

Menyiapkan pemantauan ARMS terdiri dari tiga langkah:

  1. Instal ack-onepilot — Deploy komponen pemantauan melalui Konsol ACK.

  2. Grant ARMS permissions — Konfigurasikan autentikasi kluster untuk ARMS (berbeda-beda tergantung jenis kluster).

  3. Beri label Deployment Anda — Tambahkan tiga label ke templat pod Anda untuk mengaktifkan auto-instrumentation.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Langkah 1: Instal ack-onepilot

  1. Masuk ke Konsol ACK. Pada halaman Clusters, klik nama kluster.

  2. Di panel navigasi kiri, klik Add-ons. Cari ack-onepilot.

  3. Pada kartu ack-onepilot, klik Install.

  4. Pada kotak dialog, pertahankan nilai parameter default dan klik OK.

Catatan

ack-onepilot mendukung hingga 1.000 pod secara default. Untuk setiap tambahan 1.000 pod, alokasikan 0,5 core CPU dan 512 MB memori ke komponen tersebut.

Setelah instalasi, Anda dapat melakukan upgrade, konfigurasi, atau uninstal ack-onepilot dari halaman Add-ons.

Langkah 2: Berikan izin ARMS

Izin yang diperlukan bergantung pada jenis kluster Anda. Temukan jenis kluster Anda dan ikuti petunjuk yang sesuai.

Kluster ACK yang dikelola

Kluster ACK yang dikelola dengan ARMS Addon Token sudah diotorisasi secara otomatis. Periksa apakah token tersebut ada sebelum melanjutkan.

Periksa keberadaan ARMS Addon Token:

  1. Masuk ke Konsol ACK. Klik Clusters, lalu klik nama kluster.

  2. Di panel navigasi kiri, pilih Configurations > Secrets. Pilih kube-system dari daftar drop-down Namespace.

  3. Cari secret bernama addon.arms.token di halaman Secrets.

  • Jika addon.arms.token ada — kluster sudah diotorisasi. Lewati ke Langkah 3.

  • Jika addon.arms.token tidak ada — tambahkan kebijakan izin yang diperlukan secara manual (lihat di bawah).

Catatan

Jika kluster memiliki ARMS Addon Token, ARMS melakukan otorisasi tanpa password pada kluster tersebut. ARMS Addon Token mungkin tidak tersedia di beberapa kluster ACK yang dikelola. Kami menyarankan Anda memeriksa keberadaan ARMS Addon Token sebelum menggunakan ARMS untuk memantau aplikasi di kluster tersebut.

Tambahkan kebijakan izin secara manual:

  1. Pada halaman Clusters, klik nama kluster.

  2. Pada tab Basic Information di halaman Cluster Information, klik tautan di samping Worker RAM Role di bagian Cluster Resources.

  3. Pada halaman yang muncul, klik Grant Permission di tab Permissions.

  4. Pada panel Grant Permission, tambahkan dua kebijakan berikut, lalu klik Grant permissions:

    Policy

    Access scope

    AliyunTracingAnalysisFullAccess

    Full access to Managed Service for OpenTelemetry

    AliyunARMSFullAccess

    Full access to ARMS

Kluster khusus ACK dan kluster terdaftar

Kluster khusus ACK dan kluster terdaftar ACK One memerlukan dua hal:

  • Akun Alibaba Cloud Anda harus memiliki izin AliyunARMSFullAccess dan AliyunSTSAssumeRoleAccess. Lihat Kelola izin untuk Pengguna RAM.

  • Komponen ack-onepilot harus memiliki pasangan AccessKey dengan izin ARMS.

Berikan pasangan AccessKey ke ack-onepilot menggunakan salah satu metode berikut.

Metode 1: Tentukan pasangan AccessKey di Helm

  1. Masuk ke Konsol ACK. Klik Clusters, lalu klik nama kluster.

  2. Di panel navigasi kiri, pilih Applications > Helm. Klik Update di samping ack-onepilot.

  3. Ganti nilai accessKey dan accessKeySecret dengan ID AccessKey dan Rahasia AccessKey Anda. Klik OK.

    Catatan

    Untuk mendapatkan pasangan AccessKey, lihat Buat pasangan AccessKey.

    admissionRegistration:
      failurePolicy: Ignore
      onlyLabel: false
    configuration:
      downloadTimeout: "90"
    controller:
      accessKey: __ACCESSKEY__
      accessKeySecret: __ACCESSKEY_SECRET__
      accessSource: ACSKS
      cluster_id: c0c3c907a2e30
      clusterProfile: __ACK_CLUSTER_PROFILE__
      clusterType: __ACK_CLUSTER_TYPE__
      imagePullPolicy: Always
      is_finance: <no value>
      logLevel: 1
  4. Mulai ulang Penyebaran aplikasi.

Metode 2: Gunakan Secret Kubernetes

  1. Masuk ke Konsol ACK. Klik Clusters, lalu klik nama kluster.

  2. Di panel navigasi kiri, pilih Configurations > Secrets. Pilih namespace ack-onepilot dan buat Secret untuk menyimpan ID AccessKey dan Rahasia AccessKey Anda.

    Catatan

    Untuk mendapatkan pasangan AccessKey, lihat Buat pasangan AccessKey.

    Saat membuat Secret, atur Name menjadi ack-onepilot-aksk, pilih Opaque untuk Type, dan tambahkan dua baris ke tabel data: kunci ak sesuai dengan ID AccessKey Anda, dan kunci sk sesuai dengan Rahasia AccessKey Anda.

  3. Di panel navigasi kiri, pilih Workloads > Deployments. Klik komponen ack-onepilot (biasanya bernama ack-onepilot-ack-onepilot di namespace ack-onepilot).

  4. Di pojok kanan atas, klik Edit. Di bagian Environment Variables, tambahkan dua variabel berikut dan referensikan nilai Secret tersebut. Klik OK.

    Environment variable

    Description

    ONE_PILOT_ACCESSKEY

    Merujuk ke ID AccessKey yang disimpan di Secret

    ONE_PILOT_ACCESSKEY_SECRET

    Merujuk ke Rahasia AccessKey yang disimpan di Secret

Kluster serverless ACK (ASK) dan kluster terintegrasi ECI

Lengkapi otorisasi di halaman Resource Access Authorization, lalu restart semua pod komponen ack-onepilot.

Langkah 3: Beri label Deployment Anda

Tambahkan tiga label ke bagian spec.template.metadata.labels YAML Deployment Anda untuk mengaktifkan pemantauan ARMS:

labels:
  armsPilotAutoEnable: "on"
  armsPilotCreateAppName: "<your-deployment-name>"    # Ganti <your-deployment-name> dengan nama aplikasi Anda.
  aliyun.com/app-language: java

Label

Value

Description

armsPilotAutoEnable

"on"

Mengaktifkan penyuntikan agen otomatis untuk pod

armsPilotCreateAppName

"<your-deployment-name>"

Nama aplikasi yang ditampilkan di Konsol ARMS. Ganti dengan nama aplikasi Anda.

aliyun.com/app-language

java

Menentukan bahasa aplikasi untuk agen

Catatan

Label harus berada di spec.template.metadata.labels (templat pod), bukan di metadata.labels (metadata Deployment). Menempatkan label di lokasi yang salah merupakan penyebab umum data pemantauan tidak muncul.

Terapkan label ke Deployment yang sudah ada

  1. Masuk ke Konsol ACK. Klik Clusters, lalu pilih nama kluster.

  2. Di panel navigasi kiri, pilih Workloads > Deployments.

  3. Pada halaman Stateless, klik more icon > YAML Edit di samping aplikasi target.

  4. Tambahkan tiga label ke spec.template.metadata.labels dan klik Update.

Catatan

Untuk informasi selengkapnya tentang keamanan aplikasi, lihat Apa itu keamanan aplikasi?.

Untuk informasi selengkapnya tentang penagihan keamanan aplikasi, lihat Ikhtisar penagihan.

apiVersion: v1
kind: Namespace
metadata:
  name: arms-demo
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: arms-springboot-demo
  namespace: arms-demo
  labels:
    app: arms-springboot-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: arms-springboot-demo
  template:
    metadata:
      labels:
        app: arms-springboot-demo
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: "arms-k8s-demo"
    spec:
      containers:
        - resources:

Buat Deployment baru dengan pemantauan aktif

Pada halaman Stateless, klik Create from YAML dan sertakan label dalam definisi Deployment Anda.

Klik untuk melihat contoh YAML lengkap (Java)

apiVersion: v1
kind: Namespace
metadata:
  name: arms-demo
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: arms-springboot-demo
  namespace: arms-demo
  labels:
    app: arms-springboot-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: arms-springboot-demo
  template:
    metadata:
      labels:
        app: arms-springboot-demo
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: "arms-k8s-demo"
    spec:
      containers:
        - resources:
            limits:
              cpu: 0.5
          image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
          imagePullPolicy: Always
          name: arms-springboot-demo
          env:
            - name: SELF_INVOKE_SWITCH
              value: "true"
            - name: COMPONENT_HOST
              value: "arms-demo-component"
            - name: COMPONENT_PORT
              value: "6666"
            - name: MYSQL_SERVICE_HOST
              value: "arms-demo-mysql"
            - name: MYSQL_SERVICE_PORT
              value: "3306"
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: arms-springboot-demo-subcomponent
  namespace: arms-demo
  labels:
    app: arms-springboot-demo-subcomponent
spec:
  replicas: 2
  selector:
    matchLabels:
      app: arms-springboot-demo-subcomponent
  template:
    metadata:
      labels:
        app: arms-springboot-demo-subcomponent
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
    spec:
      containers:
        - resources:
            limits:
              cpu: 0.5
          image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
          imagePullPolicy: Always
          name: arms-springboot-demo-subcomponent
          env:
            - name: SELF_INVOKE_SWITCH
              value: "false"
            - name: MYSQL_SERVICE_HOST
              value: "arms-demo-mysql"
            - name: MYSQL_SERVICE_PORT
              value: "3306"
---
apiVersion: v1
kind: Service
metadata:
  labels:
    name: arms-demo-component
  name: arms-demo-component
  namespace: arms-demo
spec:
  ports:
    - name: arms-demo-component-svc
      port: 6666
      targetPort: 8888
  selector:
    app: arms-springboot-demo-subcomponent
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: arms-demo-mysql
  namespace: arms-demo
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - resources:
            limits:
              cpu: 0.5
          image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
          name: mysql
          ports:
            - containerPort: 3306
              name: mysql
---
apiVersion: v1
kind: Service
metadata:
  labels:
    name: mysql
  name: arms-demo-mysql
  namespace: arms-demo
spec:
  ports:
    - name: arms-mysql-svc
      port: 3306
      targetPort: 3306
  selector:
    app: mysql

Verifikasi data pemantauan

Pada halaman Stateless, klik more icon > ARMS Console di kolom Actions aplikasi target untuk melihat detail pemantauan aplikasi.

FAQ