Starting a RM agent as a service on Linux
To ensure that the Resource Monitoring agent starts by itself when the host is restarted, you can set up the environment in such a way that the Resource Monitoring agent can be started as a service.
Before you begin
- Java 8 installed on the host.
- HCL OneTest™ Server added to the PATH environment variable.
- An offline token to connect the agent securely with appropriate permissions. You can create an offline token from the User menu of the Resource Monitoring page or you can re-use your active offline token. The token expires if it is not used for a month.
About this task
This topic relies on systemd services that is the default on most modern Linux distributions. Other ways may require adaptations of the instructions but the provided script will be a good basis in most cases.
Procedure
- Create a folder on your local hard drive like /opt/RMAgent-linuxservice.
- Download the agent .jar file that is available from the agents page in the Resource Monitoring service, under the Extend the Resource Monitoring service with agents section and save it to the same directory.
- Create a new file /etc/systemd/system/RMAgent-linuxservice.service.
-
Add the following content to this new file:
[Unit] Description = Resource Monitoring Agent After = network.target [Service] Type = forking ExecStart = /opt/RMAgent-linuxservice/RMAgent-linuxservice.sh start ExecStop = /opt/RMAgent-linuxservice/RMAgent-linuxservice.sh stop Restart = on-failure RestartSec = 10 [Install] WantedBy = multi-user.target
-
Create another file
/opt/RMAgent-linuxservice/RMAgent-linuxservice.sh.
#!/bin/sh #!/bin/sh # Update the 3 following variables with the Server's host name, project id and offline token: SERVICE_URL=https://<hostname>/rm PROJECT_ID=<project-id> export HCL_ONETEST_OFFLINE_TOKEN=<offline-token> ARGS="--serviceUrl=$SERVICE_URL --projectId=$PROJECT_ID --autoUpgradeDownloadThen=exitFailure" SCRIPT=$(readlink -f "$0") RMAGENT_HOME=$(dirname "$SCRIPT") # Ensure we're using the latest downloaded jar file PATH_TO_JAR=`ls -t $RMAGENT_HOME/com.hcl.test.rm.agent-*.jar | head -1` if [ -z "$PATH_TO_JAR" ] then cd $RMAGENT_HOME && { curl -k -O -J $SERVICE_URL/agent-jar; cd -; } PATH_TO_JAR=`ls -t $RMAGENT_HOME/com.hcl.test.rm.agent-*.jar | head -1` if [ -z "$PATH_TO_JAR" ] then echo "Start the server at $SERVICE_URL to allow download of the latest agent jar file" echo "Exiting..." exit 1 fi fi SERVICE_NAME="Resource Monitoring Agent" #Pid file will reside in this script’s folder PATH_TO_PID=$RMAGENT_HOME/RMAgent-pid #Log file will reside in this script’s folder PATH_TO_LOG=$RMAGENT_HOME/RMAgent.log case $1 in start) echo "Starting $SERVICE_NAME ..." if [ ! -f $PATH_TO_PID ]; then nohup java -jar $PATH_TO_JAR $ARGS >> $PATH_TO_LOG 2>&1 & echo $! > $PATH_TO_PID echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is already running ..." fi ;; stop) if [ -f $PATH_TO_PID ]; then PID=$(cat $PATH_TO_PID); echo "$SERVICE_NAME stopping ..." kill $PID; echo "$SERVICE_NAME stopped ..." rm $PATH_TO_PID else echo "$SERVICE_NAME is not running ..." fi ;; restart) if [ -f $PATH_TO_PID ]; then PID=$(cat $PATH_TO_PID); echo "$SERVICE_NAME stopping ..."; kill $PID; echo "$SERVICE_NAME stopped ..."; rm $PATH_TO_PID echo "$SERVICE_NAME starting ..." nohup java -jar $PATH_TO_JAR $ARGS >> $PATH_TO_LOG 2>&1 & echo $! > $PATH_TO_PID echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is not running ..." fi ;; esac
Note:- Replace <service-hostname> by the host name of the host that runs HCL OneTest™ Server.
- Replace <project-id> which is the number you'll find after /projects/ in the browser's URL when browsing to this project.