scylla-jmx/scripts/scylla-jmx
2016-10-17 18:38:10 -07:00

100 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (C) 2015 Cloudius Systems, Ltd.
JMX_PORT="7199"
API_ADDR=""
API_PORT=""
CONF_FILE=""
DEBUG=""
PARAM_HELP="-h"
PARAM_JMX_PORT="-jp"
PARAM_API_PORT="-p"
PARAM_ADDR="-a"
PARAM_LOCATION="-l"
LOCATION="target"
LOCATION_SCRIPTS="scripts"
PARAM_FILE="-cf"
ALLOW_REMOTE="-r"
ALLOW_DEBUG="-d"
REMOTE=0
HOSTNAME=`hostname`
print_help() {
cat <<HLPEND
scylla-jmx [$PARAM_HELP] [$PARAM_API_PORT port] [$PARAM_ADDR address] [$PARAM_JMX_PORT port] [$PARAM_FILE file]
This script is used to run the jmx proxy
By default it would connect to the local API ($API_ADDR) and will listen on the JMX port ($JMX_PORT)
This script receives the following command line arguments:
$PARAM_HELP - print this help screen and exit
$PARAM_JMX_PORT <port> - The jmx port to open
$PARAM_API_PORT <port> - The API port to connect to
$PARAM_ADDR <address> - The API address to connect to
$PARAM_FILE <file> - A configuration file to use
$PARAM_LOCATION <location> - The location of the jmx proxy jar file
$ALLOW_REMOTE - When set allow remote jmx connectivity
$ALLOW_DEBUG - When set open debug ports for remote debugger
HLPEND
}
while test "$#" -ne 0
do
case "$1" in
"$PARAM_API_PORT")
API_PORT="-Dapiport="$2
shift 2
;;
"$PARAM_ADDR")
API_ADDR="-Dapiaddress="$2
shift 2
;;
"$PARAM_PORT")
API_ADDR=$2
shift 2
;;
"$PARAM_JMX_PORT")
JMX_PORT=$2
shift 2
;;
"$PARAM_LOCATION")
LOCATION=$2
LOCATION_SCRIPTS="$2"
shift 2
;;
"$PARAM_FILE")
CONF_FILE="-Dapiconfig="$2
shift 2
;;
"$ALLOW_REMOTE")
REMOTE=1
shift 1
;;
"$PARAM_HELP")
print_help
exit 0
;;
"$ALLOW_DEBUG")
DEBUG="-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:7690,server=y,suspend=n"
shift 1
;;
*)
echo "Unknown parameter: $1"
print_help
exit 1
esac
done
if [ $REMOTE -eq 1 ]; then
REMOTE="-Djavax.management.builder.initial=com.scylladb.jmx.utils.APIBuilder -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=$HOSTNAME"
else
REMOTE="-Dcassandra.jmx.local.port=$JMX_PORT"
fi
exec "$LOCATION_SCRIPTS"/symlinks/scylla-jmx $API_ADDR $API_PORT $DEBUG $CONF_FILE $REMOTE -Xmx256m -XX:+UseSerialGC -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar $LOCATION/scylla-jmx-1.0.jar