Skip to content

Installing AngusAgent

AngusAgent serves as the core component of the AngusTester distributed testing system, providing three key capabilities:

  1. Task Execution Engine: Launches and manages script execution tasks.
  2. Service Simulation Platform: Runs and manages Mock services.
  3. Node Monitoring Center: Collects and reports node resource metrics in real-time.

The default complete installation package of AngusAgent includes the following components:

  • AngusRunner: Test task and data generation task executor
  • MockService: Interface simulation service
  • AngusAgent: Node agent service
  • AngusProxy: Request proxy service
  • plugins: Test plugin collection

I. Prerequisites

  • Ensure the target port 6807 is available.
  • Operating System: Supports Linux / macOS / Windows Server.
  • Java Environment: For non-container installations, ensure JDK17+ is installed.
  1. Log in to the AngusTester console.
  2. Navigate to: Configuration -> Nodes → Add Node.
  3. Enter node information (IP/account/password).
  4. Click the "Install Agent Online" button.

Online Installation Diagram

⚠️ Installation Requirements:

  • Only system administrators and AngusTester application administrators can configure installations.
  • The node's SSH port must be open (default: 22).
  • The account must have root privileges.
  • Network connectivity must be established without firewall restrictions.

🛠️ Troubleshooting Installation Failures:
If online installation fails, use the script installation method below.

III. Script Installation

bash
# Create installation directory  
mkdir -p /opt/AngusAgent && cd /opt/AngusAgent  

# Fetch and execute the installation script (copy the command generated in the console)  
curl -s "https://bj-c1-prod-files.xcan.cloud/storage/pubapi/v1/file/install-agent.sh?fid=297761877096660998" | bash -s 1.0.0 299082246680215554 \  
  'https://bj-c1-prod-apis.xcan.cloud/tester/openapi2p/v1/ctrl' \  
  aWpbSRQ4OwXiOA1_8AJFVgQY8cDBkJUq4PSLwIb9D3lFoWJOR1hsFUG_EyhWUq5CNu-E7K1X29ZffzbhnVZylXTMFnFBMWKXX-EcMohOoMplWVbA78S0WayLuzsaPF6k \  
  1 203883811233071104

IV. Manual Configuration Installation

  1. Run the following command or click Download Installation Package
    bash
     curl -LO https://nexus.xcan.cloud/repository/release/package/AngusAgent-Full-1.0.0.zip
  2. After downloading the package, extract it to the target directory (e.g., /opt/AngusAgent)
    bash
    # Extract the package to the target directory  
    mkdir -p /opt/AngusAgent  
    unzip -qo AngusAgent-Full-1.0.0.zip -d /opt/AngusAgent  
    
    # Navigate to the installation directory  
    cd /opt/AngusAgent
  3. Configure core parameters:
    properties
    # Configure identity information  
    # vi conf/agent.properties  
    ##########################################  
    angusagent.principal.tenantId=Your Tenant ID  
    angusagent.principal.deviceId=Unique Node ID  
    
    # Configure server controller address and authentication  
    # vi conf/remoting.properties  
    ##########################################  
    remoting.ctrlUrlPrefix=Controller URL  
    remoting.ctrlAccessToken=Your Node Authorization Token

    Parameter Retrieval:
    View parameters in Configuration -> Nodes -> Installation Configuration.
    Configuration Parameters Diagram

  4. Run the agent
    bash
    ./startup-agent.sh

V. Verification

  • Health Check
    bash
    curl -i http://localhost:6807  
    
    # Expected response:  
    HTTP/1.1 200 OK  
    Content-Type: application/json  
    
    {  
      "app": "AngusAgent",  
      "version": "1.0.0",  
      "health": {"status": "UP"},  # Key status metric  
      "principal": {  
        "tenantId": "1",  
        "deviceId": "205198142092607130"  
      }  
    }
  • Console Verification
    1. Access the AngusTester console.
    2. Navigate to: Node Management → Node List.
    3. Check the target node status:
      • Connection Status: Should show Connected.
      • ⏱️ Last Heartbeat: Updated within 2 minutes.

    ⏳ Status synchronization may take up to 2 minutes. If the node remains disconnected, check the network and configuration.

VI. Service Management

  • Linux/macOS
bash
# Start service  
./startup-agent.sh  
# Stop service  
./shutdown-agent.sh  
# View logs  
tail -f logs/agent.log

VII. Configuration Reference

Agent Service Configuration (agent.properties)

ini
#-----------------------------------------------------------------------------------  
# AngusAgent Service Configuration  
#-----------------------------------------------------------------------------------  
## IP address the agent binds to (default: 0.0.0.0, listens on all interfaces)  
angusagent.serverIp=0.0.0.0  
## Port number the agent binds to (default: 6807)  
angusagent.serverPort=6807  
## Enable SSL for the Netty HTTP server (default: false)  
angusagent.useSsl=false  
## Enable Netty logging (recommended for debugging only, default: false)  
angusagent.enableNettyLog=false  
## Configure request log level (options: NONE, BASIC, HEADERS, FULL)  
### - NONE: No logging  
### - BASIC: Logs request method, URL, response status, and execution time (default)  
### - HEADERS: Logs basic info + request/response headers  
### - FULL: Logs headers, body, and metadata of requests/responses  
angusagent.requestLogLevel=FULL  
## Thread name prefix for request processing (default: AngusAgent-Thread)  
angusagent.threadNamePrefix=AngusAgent-Thread  
#-----------------------------------------------------------------------------------  
# AngusAgent Service Management Configuration  
#-----------------------------------------------------------------------------------  
## Base path for management endpoints (fixed as /actuator)  
#angusagent.management.endpointsBasePath=/actuator  
## Allow CORS for management endpoints (default: false)  
angusagent.management.endpointsAllowCors=false  
#-----------------------------------------------------------------------------------  
# Authentication Configuration  
#-----------------------------------------------------------------------------------  
## Tenant ID (required for private deployments, default: empty)  
angusagent.principal.tenantId=  
## Device (Node) ID (required for private deployments, default: empty)  
angusagent.principal.deviceId=  
#-----------------------------------------------------------------------------------  
# Data Push Configuration  
#-----------------------------------------------------------------------------------  
# JVM metrics push interval (default: 15 seconds)  
angusagent.jvmMetrics.pushIntervalInSecond=15  
# Node info registration push interval (default: 300 seconds)  
angusagent.nodeInfo.pushIntervalInSecond=300  
# Node usage registration push interval (default: 15 seconds)  
angusagent.nodeUsage.pushIntervalInSecond=15

Data Exchanger Configuration (remoting.properties)

ini
#-----------------------------------------------------------------------------------  
# Remote Client Configuration  
#-----------------------------------------------------------------------------------  
# Remote server host address (direct connection mode for test environments only, default: 127.0.0.1:5035)  
remoting.serverHost=  
# AngusTester controller service discovery URL prefix. If unconfigured or connection fails, uses serverHost as fallback  
remoting.ctrlUrlPrefix=  
## Access token for AngusCtrl API (required for private deployments, default: empty)  
remoting.ctrlAccessToken=  
## Heartbeat message interval (must be less than serverMaxAllowHeartbeat, default: 10000 ms)  
remoting.heartbeatInterval=10000  
# Allow reconnection after disconnection (default: true)  
remoting.allowReconnect=true  
# Reconnection interval after disconnection  
remoting.reconnectInterval=5000  
#-----------------------------------------------------------------------------------  
# Remote Server/Client Common Configuration  
#-----------------------------------------------------------------------------------  
# Timeout for synchronous message sending (stops waiting for response after this duration, default: 60000 ms)  
remoting.sendTimeout=60000  
#-----------------------------------------------------------------------------------

Released under the GPL-3.0 License.