Re: logstash 1.4.0 debian package init script not working
Hi, same problem for me, I modified original script. Please try with this version: http://hastebin.com/uwiqasuyul.bash Il giorno venerdì 18 aprile 2014 06:36:51 UTC+2, OJ LaBoeuf ha scritto: > > The upstart job also doesn't seem to work, it just keeps dying over and > over again never logging anything to the logfile. > > If i manually start logstash everything works normally. > > On Thursday, April 17, 2014 6:12:38 PM UTC-7, OJ LaBoeuf wrote: >> >> Running Ubuntu 12.04 64bit, the logstash init script does not work. >> >> here's the script that came with logstash deb >> >> In particular I don't understand how the script is trying to parse >> something from the logstash pid, before it even starts the program..? >> >> log_daemon_msg "Starting $DESC" >> >> # Parse the actual JAVACMD from the process' environment, we don't >> care about errors. >> JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ >> 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) >> if start-stop-daemon --test --start --pidfile "$PID_FILE" \ >> --user "$LS_USER" --exec "$JAVA" \ >> >/dev/null; then >> # Prepare environment >> >> I checked and JAVA is empty at this location, so what the heck is this >> trying to do? >> >> >> running this bit: >> sudo start-stop-daemon --test --start --pidfile /var/run/logstash.pid >> --user "logstash" --exec "" >> >> results in the same message i get at the commandline when trying to >> /etc/init.d/logstash start >> start-stop-daemon: unable to stat (No such file or directory) >> >> >> Please advise. >> >> >> >> Full init script pasted below >> >> >> #!/bin/bash >> # >> # /etc/init.d/logstash -- startup script for LogStash. >> # >> ### BEGIN INIT INFO >> # Provides: logstash >> # Required-Start:$all >> # Required-Stop: $all >> # Default-Start: 2 3 4 5 >> # Default-Stop: 0 1 6 >> # Short-Description: Starts logstash >> # Description: Starts logstash using start-stop-daemon >> ### END INIT INFO >> >> set -e >> >> NAME=logstash >> DESC="Logstash Daemon" >> DEFAULT=/etc/default/$NAME >> >> if [ `id -u` -ne 0 ]; then >>echo "You need root privileges to run this script" >>exit 1 >> fi >> >> . /lib/lsb/init-functions >> >> if [ -r /etc/default/rcS ]; then >>. /etc/default/rcS >> fi >> >> # The following variables can be overwritten in $DEFAULT >> PATH=/bin:/usr/bin:/sbin:/usr/sbin >> >> # See contents of file named in $DEFAULT for comments >> LS_USER=logstash >> LS_GROUP=logstash >> LS_HOME=/var/lib/logstash >> LS_HEAP_SIZE="500m" >> LS_JAVA_OPTS="-Djava.io.tmpdir=${LS_HOME}" >> LS_LOG_FILE=/var/log/logstash/$NAME.log >> LS_CONF_DIR=/etc/logstash/conf.d >> LS_OPEN_FILES=16384 >> LS_NICE=19 >> LS_OPTS="" >> LS_PIDFILE=/var/run/$NAME.pid >> >> # End of variables that can be overwritten in $DEFAULT >> >> # overwrite settings from default file >> if [ -f "$DEFAULT" ]; then >>. "$DEFAULT" >> fi >> >> # Define other required variables >> PID_FILE=${LS_PIDFILE} >> DAEMON=/opt/logstash/bin/logstash >> DAEMON_OPTS="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}" >> >> # Check DAEMON exists >> if ! test -e $DAEMON; then >>log_failure_msg "Script $DAEMON doesn't exist" >>exit 1 >> fi >> >> case "$1" in >>start) >> if [ -z "$DAEMON" ]; then >> log_failure_msg "no logstash script found - $DAEMON" >> exit 1 >> fi >> >> # Check if a config file exists >> if [ ! "$(ls -A $LS_CONF_DIR/*.conf 2> /dev/null)" ]; then >> log_failure_msg "There aren't any configuration files in >> $LS_CONF_DIR" >> exit 1 >> fi >> >> log_daemon_msg "Starting $DESC" >> >> # Parse the actual JAVACMD from the process' environment, we don't >> care about errors. >> JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ >> 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) >> if start-stop-daemon --test --start --pidfile "$PID_FILE" \ >> --user "$LS_USER" --exec "$JAVA" \ >> >/dev/null; then >> # Prepare environment >> HOME="${HOME:-$LS_HOME}" >> JAVA_OPTS="${LS_JAVA_OPTS}" >> ulimit -n ${LS_OPEN_FILES} >> cd "${LS_HOME}" >> export PATH HOME JAVACMD JAVA_OPTS LS_HEAP_SIZE LS_JAVA_OPTS >> LS_USE_GC_LOGGING >> >> # Start Daemon >> start-stop-daemon --start -b --user "$LS_USER" -c >> "$LS_USER":"$LS_GROUP" \ >>-d "$LS_HOME" --nicelevel "$LS_NICE" --pidfile "$PID_FILE" >> --make-pidfile \ >>--exec $DAEMON -- $DAEMON_OPTS >> >> sleep 1 >> >> # Parse the actual JAVACMD from the process' environment, we >> don't care about errors. >> JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ >> 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) >> if start-stop-daemon --test --start --pidfile "$PID_FILE" \ >> --user "$LS_USER" --exec "$JAVA" \ >> >/dev/null; then >> >> if [ -f "$
Re: logstash 1.4.0 debian package init script not working
Do you have check permission on /opt/logstash and /var/log/logstash /etc/logstash … same user than in the init script ? Solve this for me on debian but i can't get event when apache log is update. than if i run it in root (console way) all is working … Ho and i have add logstash user to adm group … Le vendredi 18 avril 2014 06:36:51 UTC+2, OJ LaBoeuf a écrit : > > The upstart job also doesn't seem to work, it just keeps dying over and > over again never logging anything to the logfile. > > If i manually start logstash everything works normally. > > On Thursday, April 17, 2014 6:12:38 PM UTC-7, OJ LaBoeuf wrote: >> >> Running Ubuntu 12.04 64bit, the logstash init script does not work. >> >> here's the script that came with logstash deb >> >> In particular I don't understand how the script is trying to parse >> something from the logstash pid, before it even starts the program..? >> >> log_daemon_msg "Starting $DESC" >> >> # Parse the actual JAVACMD from the process' environment, we don't >> care about errors. >> JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ >> 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) >> if start-stop-daemon --test --start --pidfile "$PID_FILE" \ >> --user "$LS_USER" --exec "$JAVA" \ >> >/dev/null; then >> # Prepare environment >> >> I checked and JAVA is empty at this location, so what the heck is this >> trying to do? >> >> >> running this bit: >> sudo start-stop-daemon --test --start --pidfile /var/run/logstash.pid >> --user "logstash" --exec "" >> >> results in the same message i get at the commandline when trying to >> /etc/init.d/logstash start >> start-stop-daemon: unable to stat (No such file or directory) >> >> >> Please advise. >> >> >> >> Full init script pasted below >> >> >> #!/bin/bash >> # >> # /etc/init.d/logstash -- startup script for LogStash. >> # >> ### BEGIN INIT INFO >> # Provides: logstash >> # Required-Start:$all >> # Required-Stop: $all >> # Default-Start: 2 3 4 5 >> # Default-Stop: 0 1 6 >> # Short-Description: Starts logstash >> # Description: Starts logstash using start-stop-daemon >> ### END INIT INFO >> >> set -e >> >> NAME=logstash >> DESC="Logstash Daemon" >> DEFAULT=/etc/default/$NAME >> >> if [ `id -u` -ne 0 ]; then >>echo "You need root privileges to run this script" >>exit 1 >> fi >> >> . /lib/lsb/init-functions >> >> if [ -r /etc/default/rcS ]; then >>. /etc/default/rcS >> fi >> >> # The following variables can be overwritten in $DEFAULT >> PATH=/bin:/usr/bin:/sbin:/usr/sbin >> >> # See contents of file named in $DEFAULT for comments >> LS_USER=logstash >> LS_GROUP=logstash >> LS_HOME=/var/lib/logstash >> LS_HEAP_SIZE="500m" >> LS_JAVA_OPTS="-Djava.io.tmpdir=${LS_HOME}" >> LS_LOG_FILE=/var/log/logstash/$NAME.log >> LS_CONF_DIR=/etc/logstash/conf.d >> LS_OPEN_FILES=16384 >> LS_NICE=19 >> LS_OPTS="" >> LS_PIDFILE=/var/run/$NAME.pid >> >> # End of variables that can be overwritten in $DEFAULT >> >> # overwrite settings from default file >> if [ -f "$DEFAULT" ]; then >>. "$DEFAULT" >> fi >> >> # Define other required variables >> PID_FILE=${LS_PIDFILE} >> DAEMON=/opt/logstash/bin/logstash >> DAEMON_OPTS="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}" >> >> # Check DAEMON exists >> if ! test -e $DAEMON; then >>log_failure_msg "Script $DAEMON doesn't exist" >>exit 1 >> fi >> >> case "$1" in >>start) >> if [ -z "$DAEMON" ]; then >> log_failure_msg "no logstash script found - $DAEMON" >> exit 1 >> fi >> >> # Check if a config file exists >> if [ ! "$(ls -A $LS_CONF_DIR/*.conf 2> /dev/null)" ]; then >> log_failure_msg "There aren't any configuration files in >> $LS_CONF_DIR" >> exit 1 >> fi >> >> log_daemon_msg "Starting $DESC" >> >> # Parse the actual JAVACMD from the process' environment, we don't >> care about errors. >> JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ >> 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) >> if start-stop-daemon --test --start --pidfile "$PID_FILE" \ >> --user "$LS_USER" --exec "$JAVA" \ >> >/dev/null; then >> # Prepare environment >> HOME="${HOME:-$LS_HOME}" >> JAVA_OPTS="${LS_JAVA_OPTS}" >> ulimit -n ${LS_OPEN_FILES} >> cd "${LS_HOME}" >> export PATH HOME JAVACMD JAVA_OPTS LS_HEAP_SIZE LS_JAVA_OPTS >> LS_USE_GC_LOGGING >> >> # Start Daemon >> start-stop-daemon --start -b --user "$LS_USER" -c >> "$LS_USER":"$LS_GROUP" \ >>-d "$LS_HOME" --nicelevel "$LS_NICE" --pidfile "$PID_FILE" >> --make-pidfile \ >>--exec $DAEMON -- $DAEMON_OPTS >> >> sleep 1 >> >> # Parse the actual JAVACMD from the process' environment, we >> don't care about errors. >> JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ >> 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) >>
Re: logstash 1.4.0 debian package init script not working
The upstart job also doesn't seem to work, it just keeps dying over and over again never logging anything to the logfile. If i manually start logstash everything works normally. On Thursday, April 17, 2014 6:12:38 PM UTC-7, OJ LaBoeuf wrote: > > Running Ubuntu 12.04 64bit, the logstash init script does not work. > > here's the script that came with logstash deb > > In particular I don't understand how the script is trying to parse > something from the logstash pid, before it even starts the program..? > > log_daemon_msg "Starting $DESC" > > # Parse the actual JAVACMD from the process' environment, we don't > care about errors. > JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ > 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) > if start-stop-daemon --test --start --pidfile "$PID_FILE" \ > --user "$LS_USER" --exec "$JAVA" \ > >/dev/null; then > # Prepare environment > > I checked and JAVA is empty at this location, so what the heck is this > trying to do? > > > running this bit: > sudo start-stop-daemon --test --start --pidfile /var/run/logstash.pid > --user "logstash" --exec "" > > results in the same message i get at the commandline when trying to > /etc/init.d/logstash start > start-stop-daemon: unable to stat (No such file or directory) > > > Please advise. > > > > Full init script pasted below > > > #!/bin/bash > # > # /etc/init.d/logstash -- startup script for LogStash. > # > ### BEGIN INIT INFO > # Provides: logstash > # Required-Start:$all > # Required-Stop: $all > # Default-Start: 2 3 4 5 > # Default-Stop: 0 1 6 > # Short-Description: Starts logstash > # Description: Starts logstash using start-stop-daemon > ### END INIT INFO > > set -e > > NAME=logstash > DESC="Logstash Daemon" > DEFAULT=/etc/default/$NAME > > if [ `id -u` -ne 0 ]; then >echo "You need root privileges to run this script" >exit 1 > fi > > . /lib/lsb/init-functions > > if [ -r /etc/default/rcS ]; then >. /etc/default/rcS > fi > > # The following variables can be overwritten in $DEFAULT > PATH=/bin:/usr/bin:/sbin:/usr/sbin > > # See contents of file named in $DEFAULT for comments > LS_USER=logstash > LS_GROUP=logstash > LS_HOME=/var/lib/logstash > LS_HEAP_SIZE="500m" > LS_JAVA_OPTS="-Djava.io.tmpdir=${LS_HOME}" > LS_LOG_FILE=/var/log/logstash/$NAME.log > LS_CONF_DIR=/etc/logstash/conf.d > LS_OPEN_FILES=16384 > LS_NICE=19 > LS_OPTS="" > LS_PIDFILE=/var/run/$NAME.pid > > # End of variables that can be overwritten in $DEFAULT > > # overwrite settings from default file > if [ -f "$DEFAULT" ]; then >. "$DEFAULT" > fi > > # Define other required variables > PID_FILE=${LS_PIDFILE} > DAEMON=/opt/logstash/bin/logstash > DAEMON_OPTS="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}" > > # Check DAEMON exists > if ! test -e $DAEMON; then >log_failure_msg "Script $DAEMON doesn't exist" >exit 1 > fi > > case "$1" in >start) > if [ -z "$DAEMON" ]; then > log_failure_msg "no logstash script found - $DAEMON" > exit 1 > fi > > # Check if a config file exists > if [ ! "$(ls -A $LS_CONF_DIR/*.conf 2> /dev/null)" ]; then > log_failure_msg "There aren't any configuration files in > $LS_CONF_DIR" > exit 1 > fi > > log_daemon_msg "Starting $DESC" > > # Parse the actual JAVACMD from the process' environment, we don't > care about errors. > JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ > 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) > if start-stop-daemon --test --start --pidfile "$PID_FILE" \ > --user "$LS_USER" --exec "$JAVA" \ > >/dev/null; then > # Prepare environment > HOME="${HOME:-$LS_HOME}" > JAVA_OPTS="${LS_JAVA_OPTS}" > ulimit -n ${LS_OPEN_FILES} > cd "${LS_HOME}" > export PATH HOME JAVACMD JAVA_OPTS LS_HEAP_SIZE LS_JAVA_OPTS > LS_USE_GC_LOGGING > > # Start Daemon > start-stop-daemon --start -b --user "$LS_USER" -c > "$LS_USER":"$LS_GROUP" \ >-d "$LS_HOME" --nicelevel "$LS_NICE" --pidfile "$PID_FILE" > --make-pidfile \ >--exec $DAEMON -- $DAEMON_OPTS > > sleep 1 > > # Parse the actual JAVACMD from the process' environment, we > don't care about errors. > JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ > 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) > if start-stop-daemon --test --start --pidfile "$PID_FILE" \ > --user "$LS_USER" --exec "$JAVA" \ > >/dev/null; then > > if [ -f "$PID_FILE" ]; then >rm -f "$PID_FILE" > fi > > log_end_msg 1 > else > log_end_msg 0 > fi > else > log_progress_msg "(already running)" > log_end_msg 0 > fi >;; >stop) > log_daemon_msg "Stopping $DESC" > > set +e > > if [ -f "$PID_FI
logstash 1.4.0 debian package init script not working
Running Ubuntu 12.04 64bit, the logstash init script does not work. here's the script that came with logstash deb In particular I don't understand how the script is trying to parse something from the logstash pid, before it even starts the program..? log_daemon_msg "Starting $DESC" # Parse the actual JAVACMD from the process' environment, we don't care about errors. JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) if start-stop-daemon --test --start --pidfile "$PID_FILE" \ --user "$LS_USER" --exec "$JAVA" \ >/dev/null; then # Prepare environment I checked and JAVA is empty at this location, so what the heck is this trying to do? running this bit: sudo start-stop-daemon --test --start --pidfile /var/run/logstash.pid --user "logstash" --exec "" results in the same message i get at the commandline when trying to /etc/init.d/logstash start start-stop-daemon: unable to stat (No such file or directory) Please advise. Full init script pasted below #!/bin/bash # # /etc/init.d/logstash -- startup script for LogStash. # ### BEGIN INIT INFO # Provides: logstash # Required-Start:$all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts logstash # Description: Starts logstash using start-stop-daemon ### END INIT INFO set -e NAME=logstash DESC="Logstash Daemon" DEFAULT=/etc/default/$NAME if [ `id -u` -ne 0 ]; then echo "You need root privileges to run this script" exit 1 fi . /lib/lsb/init-functions if [ -r /etc/default/rcS ]; then . /etc/default/rcS fi # The following variables can be overwritten in $DEFAULT PATH=/bin:/usr/bin:/sbin:/usr/sbin # See contents of file named in $DEFAULT for comments LS_USER=logstash LS_GROUP=logstash LS_HOME=/var/lib/logstash LS_HEAP_SIZE="500m" LS_JAVA_OPTS="-Djava.io.tmpdir=${LS_HOME}" LS_LOG_FILE=/var/log/logstash/$NAME.log LS_CONF_DIR=/etc/logstash/conf.d LS_OPEN_FILES=16384 LS_NICE=19 LS_OPTS="" LS_PIDFILE=/var/run/$NAME.pid # End of variables that can be overwritten in $DEFAULT # overwrite settings from default file if [ -f "$DEFAULT" ]; then . "$DEFAULT" fi # Define other required variables PID_FILE=${LS_PIDFILE} DAEMON=/opt/logstash/bin/logstash DAEMON_OPTS="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}" # Check DAEMON exists if ! test -e $DAEMON; then log_failure_msg "Script $DAEMON doesn't exist" exit 1 fi case "$1" in start) if [ -z "$DAEMON" ]; then log_failure_msg "no logstash script found - $DAEMON" exit 1 fi # Check if a config file exists if [ ! "$(ls -A $LS_CONF_DIR/*.conf 2> /dev/null)" ]; then log_failure_msg "There aren't any configuration files in $LS_CONF_DIR" exit 1 fi log_daemon_msg "Starting $DESC" # Parse the actual JAVACMD from the process' environment, we don't care about errors. JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) if start-stop-daemon --test --start --pidfile "$PID_FILE" \ --user "$LS_USER" --exec "$JAVA" \ >/dev/null; then # Prepare environment HOME="${HOME:-$LS_HOME}" JAVA_OPTS="${LS_JAVA_OPTS}" ulimit -n ${LS_OPEN_FILES} cd "${LS_HOME}" export PATH HOME JAVACMD JAVA_OPTS LS_HEAP_SIZE LS_JAVA_OPTS LS_USE_GC_LOGGING # Start Daemon start-stop-daemon --start -b --user "$LS_USER" -c "$LS_USER":"$LS_GROUP" \ -d "$LS_HOME" --nicelevel "$LS_NICE" --pidfile "$PID_FILE" --make-pidfile \ --exec $DAEMON -- $DAEMON_OPTS sleep 1 # Parse the actual JAVACMD from the process' environment, we don't care about errors. JAVA=$(cat /proc/$(cat "${PID_FILE}" 2>/dev/null)/environ 2>/dev/null | grep -z ^JAVACMD= | cut -d= -f2) if start-stop-daemon --test --start --pidfile "$PID_FILE" \ --user "$LS_USER" --exec "$JAVA" \ >/dev/null; then if [ -f "$PID_FILE" ]; then rm -f "$PID_FILE" fi log_end_msg 1 else log_end_msg 0 fi else log_progress_msg "(already running)" log_end_msg 0 fi ;; stop) log_daemon_msg "Stopping $DESC" set +e if [ -f "$PID_FILE" ]; then start-stop-daemon --stop --pidfile "$PID_FILE" \ --user "$LS_USER" \ --retry=TERM/20/KILL/5 >/dev/null if [ $? -eq 1 ]; then log_progress_msg "$DESC is not running but pid file exists, cleaning up" elif [ $? -eq 3 ]; then PID="`cat $PID_FILE`" log_failure_msg "Failed to stop $DESC (pid $PID)" exit 1 fi rm -f "$PID_FILE" else log_progress_msg "(not running)" fi log_end_msg 0 set -e