我正在尝试使用monit启动logstash。 我有一个目录,我有logstash在/ home / slee / PROJECT / logstash。
首先,我按照monit站点的建议创建一个bash脚本(包装器)来运行logstash。 我创造了这个:
#!/bin/bash
export JAVA_HOME=/usr/local/java/
#CLASSPATH=/root/lo2/logstash/logstash-1.1.0-monolithic.jar
#CONFIG=/root/lo2/logstash/stag_conf.conf
CLASSPATH=/home/slee/PROJECT/logstash/logstash-1.1.0-monolithic.jar
CONFIG=/home/slee/PROJECT/logstash/local.conf
case $1 in
start)
echo $$ > /var/run/logstash.pid;
#exec 2>&1 java -jar $CLASSPATH agent -f $CONFIG -- web --backend elasticsearch:///?local 1> /var/log/apache2/logstash.log
exec java -jar $CLASSPATH agent -f $CONFIG --log /var/log/logstash-indexer.out -- web --log /var/log/logstash-web.out --backend elasticsearch://localhost/
;;
stop)
kill `cat /var/run/logstash.pid` ;;
*)
echo "usage: logstash {start|stop}" ;;
esac
exit 0
如果我用./logstash start运行它。它就像一个魅力,但如果我把它添加到monit:
check process logstash with pidfile /var/run/logstash.pid
group system
start program = "/bin/bash /home/slee/PROJECT/twyxt/logstash/logstash.sh"
stop program = "/bin/bash /home/slee/PROJECT/twyxt/logstash/logstash.sh"
if failed host localhost port 9292
protocol http then restart
if 5 restarts within 5 cycles then timeout
它根本不会启动logstash。谁能告诉我为什么?或者给我一个如何解决这个问题的想法。
我向logstash小组发送了一封电子邮件,他们给了我这个链接http://cookbook.logstash.net/recipes/using-upstart/#upstart%20logstash%20config
我尝试了但是我一直在努力 slee @ ubuntu:〜/ PROJECT / logstash / upstart / backup $ sudo initctl start logstash initctl:未知作业:logstash
我不知道logstash配置有什么问题,因为我将目录更改为我自己的目录。请帮忙。
最诚挚的问候, 史蒂文森李
答案 0 :(得分:1)
根据我的经验,让monit启动java进程的唯一方法是使用Java Service Wrapper
。我已经看过直接启动java的monit示例,但它们对我不起作用。
ElasticSearch描述了Java Service Wrapper。
答案 1 :(得分:1)
结帐https://logstash.jira.com/browse/LOGSTASH-458
我在我的启动脚本中添加了一个HOME变量,现在它通过monit
启动