Application Real-Time Monitoring Service (ARMS) provides zero-code application performance management (APM) for Java applications running in Container Service for Kubernetes (ACK). Install the ack-onepilot add-on on your cluster, and ARMS automatically discovers your application topology, monitors interfaces, and captures failed and slow requests — without any code changes. For more information about ARMS Application Monitoring, see What is Application Monitoring.
After setup, you can:
-
Identify failed requests and slow requests
-
Reproduce request parameters
-
Detect memory leaks
-
Discover system bottlenecks
-
Visualize service dependencies as a 3D topology map
Prerequisites
Before you begin, make sure you have:
-
A namespace in your ACK cluster. This guide uses
arms-demoas an example. See Manage namespaces and resource quotas -
A supported JDK version on your Java application (see the table below)
-
ARMS activated on your account. See Activate ARMS
Supported JDK versions:
| JDK version | Support status | Notes |
|---|---|---|
| 1.7.0+ | Deprecated | ARMS agent V3.0.X and later will drop Java 7 support. Upgrade to a newer version. See Application Monitoring no longer supports Java 7. |
| 1.8.0_25 | Not recommended | Agent installation may fail. Upgrade to the latest 1.8.X. |
| 1.8.0_31 | Not recommended | Agent installation may fail. Upgrade to the latest 1.8.X. |
| 1.8.0_191+ | Recommended | Minimum recommended version for Kubernetes clusters. |
| 11.0.8+ | Supported | |
| 17 | Supported |
Step 1: Install the ack-onepilot add-on
The old arms-pilot component is no longer maintained. ack-onepilot is its replacement and is fully compatible — no application configuration changes are needed. To migrate from arms-pilot, see How do I uninstall arms-pilot and install ack-onepilot?
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the name of the target cluster. In the left navigation pane, click Add-ons.
-
In the Logs and Monitoring section, find ack-onepilot and click Install. In the dialog box, keep the default parameter values and click OK.
By default, ack-onepilot supports up to 1,000 pods. For every additional 1,000 pods, add 0.5 CPU cores and 512 MB of memory to the ack-onepilot component. After installation, you can upgrade, configure, or uninstall ack-onepilot from the Add-ons page.
Step 2: Authorize ARMS to access resources
The authorization method depends on whether your cluster has the addon.arms.token Secret. This Secret enables ARMS to perform password-free authorization automatically. Most recently created ACK managed clusters include it by default; some older clusters may not.
Check whether your cluster has addon.arms.token:
-
Log on to the ACK console and click Clusters.
-
Click the cluster name. In the left navigation pane, choose Configurations > Secrets.
-
Select kube-system from the Namespace drop-down list and check whether
addon.arms.tokenis listed.
If addon.arms.token exists: No further authorization is needed. Skip to Step 3.
If addon.arms.token does not exist: Grant the cluster's Worker RAM Role access to ARMS:
-
Log on to the ACK console and click Clusters.
-
Click the cluster name. In the left navigation pane, click Cluster Information.
-
On the Basic Information tab, go to the Cluster Resources section and click the link next to Worker RAM Role.
-
On the Permissions tab, click Grant Permission.
-
Select the AliyunARMSFullAccess policy and click Grant permissions.
If your cluster connects to Elastic Container Instances (ECI): Go to the RAM Quick Authorization page to grant the AliyunMSEForECIRole role, then restart the ack-onepilot pods.
Step 3: Enable ARMS monitoring for your Java deployment
Add ARMS labels to the spec.template.metadata section of your Deployment YAML to enable monitoring when the application starts.
-
Log on to the ACK console and click Clusters.
-
Click the cluster name. In the left navigation pane, choose Workloads > Deployments.
-
On the Deployments page, click Create from YAML.
-
Select a template from the Sample Template drop-down list, then add the following labels to the
spec.template.metadatasection in the Template editor:armsSecAutoEnable: "on"connects the application to Application Security. This label is optional. For billing details, see Billing.labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # Replace with your application name armsSecAutoEnable: "on" # Include this label only if you want to enable Application SecurityReplace
<your-deployment-name>with the actual name of your application.The following complete YAML template creates a namespace, two Deployments, and supporting services, with ARMS monitoring enabled on both Deployments:

Verify the setup
After the Deployment starts, confirm that monitoring is active:
-
On the Deployments page in the ACK console, find your application and click
> ARMS Console in the Actions column. -
In the ARMS console, confirm that your application name appears in the application list.
If your application does not appear or monitoring data is missing, see Why is monitoring data not displayed after an ARMS agent is installed on a Java application in an ACK cluster? or Why does an ARMS agent fail to be installed for an application in an ACK cluster?
What's next
-
Application overview — Explore the ARMS Application Monitoring dashboard: request traces, topology maps, and performance metrics.
FAQ
-
Why is the monitoring data abnormal after I change the cluster or namespace of an application?
-
How do I use ack-onepilot when a VPC connection cannot be established?
-
Why does an ARMS agent fail to be installed for an application in an ACK cluster?
-
Why are the suffixes of application names missing after I update the applications?