mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 22:57:16 -04:00
Factor out functions into bin/logstash.lib.sh to keep bin/logstash a bit
cleaner.
This commit is contained in:
parent
43570b6778
commit
b43600f823
2 changed files with 88 additions and 46 deletions
53
bin/logstash
53
bin/logstash
|
@ -15,56 +15,18 @@
|
|||
# in your environment and this script will download and use
|
||||
# a release of JRuby for you.
|
||||
|
||||
# Defaults you can override with environment variables
|
||||
LS_HEAP_SIZE="${LS_HEAP_SIZE:=500m}"
|
||||
|
||||
basedir=$(cd `dirname $0`/..; pwd)
|
||||
export RUBYLIB="$basedir/lib"
|
||||
|
||||
setup_ruby() {
|
||||
# Verify ruby works
|
||||
if ! ruby -e 'puts "HURRAY"' 2> /dev/null | grep -q "HURRAY" ; then
|
||||
echo "No ruby program found. Cannot start."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eval $(ruby -rrbconfig -e 'puts "RUBYVER=#{RbConfig::CONFIG["ruby_version"]}"; puts "RUBY=#{RUBY_ENGINE}"')
|
||||
RUBYCMD="ruby"
|
||||
}
|
||||
|
||||
setup_vendored_jruby() {
|
||||
RUBYVER=1.9
|
||||
RUBY=jruby
|
||||
|
||||
# Attempt faster startup; this should be for interactive or "a human is
|
||||
# watching" execution.
|
||||
# TODO(sissel): Add 'server' operation with good flags for that situation.
|
||||
JAVA_OPTS="$JAVA_OPTS -client -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Djruby.compile.mode=OFF"
|
||||
JAVA_OPTS="$JAVA_OPTS -Xmx500m"
|
||||
|
||||
RUBYCMD="java $JAVA_OPTS -jar $basedir/vendor/jar/jruby-complete-*.jar"
|
||||
}
|
||||
|
||||
setup() {
|
||||
if [ -d "$basedir/.git" -o ! -z "$USE_RUBY" ] ; then
|
||||
setup_ruby
|
||||
else
|
||||
setup_vendored_jruby
|
||||
fi
|
||||
export GEM_HOME="$basedir/vendor/bundle/${RUBY}/${RUBYVER}"
|
||||
export GEM_PATH=
|
||||
}
|
||||
. ${basedir}/bin/logstash.lib.sh
|
||||
|
||||
setup
|
||||
|
||||
case $1 in
|
||||
deps)
|
||||
if [ -f "$basedir/logstash.gemspec" ] ; then
|
||||
program="$basedir/gembag.rb"
|
||||
set -- "$basedir/logstash.gemspec"
|
||||
exec $RUBYCMD "$basedir/gembag.rb" "$@"
|
||||
else
|
||||
echo "Cannot install dependencies; missing logstash.gemspec. This 'deps' command only works from a logstash git clone."
|
||||
fi
|
||||
;;
|
||||
-*)
|
||||
deps) install_deps ;;
|
||||
-*)
|
||||
# is the first argument a flag? If so, assume 'agent'
|
||||
program="$basedir/lib/logstash/runner.rb"
|
||||
exec $RUBYCMD "$program" agent "$@"
|
||||
;;
|
||||
|
@ -73,4 +35,3 @@ case $1 in
|
|||
exec $RUBYCMD "$program" "$@"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
81
bin/logstash.lib.sh
Normal file
81
bin/logstash.lib.sh
Normal file
|
@ -0,0 +1,81 @@
|
|||
basedir=$(cd `dirname $0`/..; pwd)
|
||||
|
||||
setup_ruby() {
|
||||
# Verify ruby works
|
||||
if ! ruby -e 'puts "HURRAY"' 2> /dev/null | grep -q "HURRAY" ; then
|
||||
echo "No ruby program found. Cannot start."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eval $(ruby -rrbconfig -e 'puts "RUBYVER=#{RbConfig::CONFIG["ruby_version"]}"; puts "RUBY=#{RUBY_ENGINE}"')
|
||||
RUBYCMD="ruby"
|
||||
}
|
||||
|
||||
setup_java() {
|
||||
if [ -z "$JAVA_HOME/bin/java" ] ; then
|
||||
JAVA="$JAVA_HOME/bin/java"
|
||||
else
|
||||
JAVA=$(which java)
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVA" ] ; then
|
||||
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS -Xmx${LS_HEAP_SIZE}"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
|
||||
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
|
||||
|
||||
# Reduce per-thread stack size
|
||||
JAVA_OPTS="$JAVA_OPTS -Xss256k"
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
|
||||
|
||||
if [ ! -z "$LS_USE_GC_LOGGING" ] ; then
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintClassHistogram"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime"
|
||||
JAVA_OPTS="$JAVA_OPTS -Xloggc:./logstash-gc.log"
|
||||
echo "Writing garbage collection logs to ./logstash-gc.log"
|
||||
fi
|
||||
}
|
||||
|
||||
setup_vendored_jruby() {
|
||||
RUBYVER=1.9
|
||||
RUBY=jruby
|
||||
|
||||
setup_java
|
||||
|
||||
RUBYCMD="$JAVA $JAVA_OPTS -jar $basedir/vendor/jar/jruby-complete-*.jar"
|
||||
}
|
||||
|
||||
setup() {
|
||||
if [ -z "$USE_JRUBY" -a \( -d "$basedir/.git" -o ! -z "$USE_RUBY" \) ] ; then
|
||||
setup_ruby
|
||||
if [ "$RUBY" = "jruby" ] ; then
|
||||
setup_java
|
||||
export JAVA_OPTS
|
||||
fi
|
||||
else
|
||||
setup_vendored_jruby
|
||||
fi
|
||||
export GEM_HOME="$basedir/vendor/bundle/${RUBY}/${RUBYVER}"
|
||||
export GEM_PATH=
|
||||
export RUBYLIB="$basedir/lib"
|
||||
}
|
||||
|
||||
install_deps() {
|
||||
if [ -f "$basedir/logstash.gemspec" ] ; then
|
||||
program="$basedir/gembag.rb"
|
||||
set -- "$basedir/logstash.gemspec"
|
||||
exec $RUBYCMD "$basedir/gembag.rb" "$@"
|
||||
else
|
||||
echo "Cannot install dependencies; missing logstash.gemspec. This 'deps' command only works from a logstash git clone."
|
||||
fi
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue