blob: f05f45cbb9e3c66bbca9e1d9f1d471965db7e432 [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The Chukwa command script
#
# Environment Variables
#
# JAVA_HOME The java implementation to use. Overrides JAVA_HOME.
# CHUKWA_CONF_DIR Alternate conf dir. Default is ${CHUKWA_HOME}/conf.
#
bin=`dirname "$0"`
bin=`cd "$bin"; pwd`
. "$bin"/../libexec/chukwa-config.sh
# if no args specified, show usage
if [ $# = 0 ]; then
echo "Usage: chukwa [--config confdir] COMMAND"
echo "where COMMAND is one of:"
echo " agent run a Chukwa Agent"
echo " archive run the Archive Manager"
echo " collector run a Chukwa Collector"
echo " demux run the Demux Manager"
echo " dp run the Post Demux data processors"
echo " hicc run a HICC Webserver"
echo " droll run a daily rolling job (deprecated)"
echo " hroll run a hourly rolling job (deprecated)"
# Daily rolling and hourly rolling will be deprecated by retention processor
# echo " retention run the Retention Processor"
echo " version print the version"
echo "Utilities:"
echo " backfill run a back fill data loader utility"
echo " dumpArchive view an archive file"
echo " dumpRecord view a record file"
echo " tail start tailing a file"
echo "Most command print help when invoked w/o parameters."
exit 1
fi
# get arguments
COMMAND=$1
shift
if [ -f "${CHUKWA_CONF_DIR}/chukwa-env.sh" ]; then
. "${CHUKWA_CONF_DIR}/chukwa-env.sh"
fi
# Java parameters
if [ "$JAVA_HOME" != "" ]; then
JAVA_HOME=$JAVA_HOME
fi
if [ "$JAVA_HOME" = "" ]; then
echo "Error: JAVA_HOME is not set."
exit 1
fi
if [ "$HADOOP_CONF_DIR" != "" ]; then
CLASSPATH=${HADOOP_CONF_DIR}:${CLASSPATH}
fi
if [ "$CHUKWA_HICC_PORT" != "" ]; then
CHUKWA_HICC_PORT=$CHUKWA_HICC_PORT
fi
if [ "$CHUKWA_HICC_PORT" = "" ]; then
CHUKWA_HICC_PORT=4080
fi
BACKGROUND="true"
# configure command parameters
if [ "$COMMAND" = "agent" ]; then
APP='agent'
CLASS='org.apache.hadoop.chukwa.datacollection.agent.ChukwaAgent'
PID="Agent"
elif [ "$COMMAND" = "archive" ]; then
APP='archive'
CLASS='org.apache.hadoop.chukwa.extraction.archive.ChukwaArchiveManager'
PID='ArchiveManager'
elif [ "$COMMAND" = "collector" ]; then
APP='collector'
CLASS='org.apache.hadoop.chukwa.datacollection.collector.CollectorStub'
PID="Collector"
elif [ "$COMMAND" = "dp" ]; then
APP='postprocess'
CLASS='org.apache.hadoop.chukwa.extraction.demux.PostProcessorManager'
PID='PostProcessorManager'
elif [ "$COMMAND" = "demux" ]; then
APP='Demux'
CLASS='org.apache.hadoop.chukwa.extraction.demux.DemuxManager'
PID='DemuxManager'
elif [ "$COMMAND" = "hicc" ]; then
WEB_SERVICE_COMMON=`ls ${CHUKWA_HOME}/share/chukwa/webapps/hicc.war`
APP='hicc'
CLASS='org.apache.hadoop.chukwa.hicc.HiccWebServer'
CLASSPATH=${CLASSPATH}:${WEB_SERVICE_COMMON}:${HICC_JAR}
PID="hicc"
HOST=`hostname`
JAVA_OPT="${JAVA_OPT} -Djetty.host=${HOST} -Djetty.port=${CHUKWA_HICC_PORT} -Djava.net.preferIPv4Stack=true"
elif [ "$COMMAND" = "hroll" ]; then
APP='hroll'
CLASS='org.apache.hadoop.chukwa.extraction.demux.HourlyChukwaRecordRolling'
OPTS='rollInSequence true deleteRawdata true'
PID='HourlyChukwaRecordRolling'
elif [ "$COMMAND" = "droll" ]; then
APP='droll'
CLASS='org.apache.hadoop.chukwa.extraction.demux.DailyChukwaRecordRolling'
OPTS='rollInSequence true deleteRawdata true'
PID='DailyChukwaRecordRolling'
elif [ "$COMMAND" = "version" ]; then
echo `cat ${CHUKWA_HOME}/bin/VERSION`
exit 0
elif [ "$COMMAND" = "backfill" ]; then
APP='backfill'
CLASS='org.apache.hadoop.chukwa.tools.backfilling.BackfillingLoader'
elif [ "$COMMAND" = "dumpArchive" ]; then
APP='DumpArchive'
CLASS='org.apache.hadoop.chukwa.util.DumpArchive'
BACKGROUND="false"
elif [ "$COMMAND" = "dumpRecord" ]; then
APP='DumpRecord'
CLASS='org.apache.hadoop.chukwa.util.DumpRecord'
BACKGROUND="false"
elif [ "$COMMAND" = "dumpChunk" ]; then
APP='DumpChunk'
CLASS='org.apache.hadoop.chukwa.util.DumpChunks'
BACKGROUND="false"
elif [ "$COMMAND" = "tail" ]; then
if [ $# = 0 -o $# -gt 2 ]; then
echo "usage: startWatchingFile <filename> [datatype]"
exit 1
fi
filename=$1
if [ $# -ge 2 ]; then
datatype=$2
else
datatype=raw
fi
echo "tailing $datatype: $filename"
echo "add org.apache.hadoop.chukwa.datacollection.adaptor.filetailer.CharFileTailingAdaptorUTF8 $datatype 0 $filename 0" | nc localhost 9093
exit 0
fi
if [ "$1" = "stop" ]; then
kill -TERM `cat ${CHUKWA_PID_DIR}/$PID.pid`
else
# run command
if [ "$BACKGROUND" = "false" ]; then
${JAVA_HOME}/bin/java ${JAVA_OPT} -Djava.library.path=${JAVA_LIBRARY_PATH} -DCHUKWA_HOME=${CHUKWA_HOME} -DCHUKWA_CONF_DIR=${CHUKWA_CONF_DIR} -DCHUKWA_LOG_DIR=${CHUKWA_LOG_DIR} -DCHUKWA_DATA_DIR=${CHUKWA_DATA_DIR} -DAPP=${APP} -Dlog4j.configuration=chukwa-log4j.properties -classpath ${CHUKWA_CONF_DIR}:${CLASSPATH}:${CHUKWA_CLASSPATH}:${tools} ${CLASS} $OPTS $@
else
exec ${JAVA_HOME}/bin/java ${JAVA_OPT} -Djava.library.path=${JAVA_LIBRARY_PATH} -DCHUKWA_HOME=${CHUKWA_HOME} -DCHUKWA_CONF_DIR=${CHUKWA_CONF_DIR} -DCHUKWA_LOG_DIR=${CHUKWA_LOG_DIR} -DCHUKWA_DATA_DIR=${CHUKWA_DATA_DIR} -DAPP=${APP} -Dlog4j.configuration=chukwa-log4j.properties -classpath ${CHUKWA_CONF_DIR}:${CLASSPATH}:${CHUKWA_CLASSPATH}:${tools} ${CLASS} $OPTS $@ &
fi
fi