1

我正在尝试使用 monit 启动 logstash。我有一个目录,其中有 /home/slee/PROJECT/logstash。

首先,我创建了一个 bash 脚本(包装器)来按照 monit 站点中的建议运行 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 运行它。它就像一个魅力,但如果我将它添加到监控中:

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: Unknown job: logstash

我不知道logstash 配置有什么问题,因为我将目录更改为我自己的。请帮忙。

最好的问候,史蒂文森李

4

2 回答 2

1

根据我的经验,让 monit 启动 java 进程的唯一方法是使用Java Service Wrapper. 我见过一些例子,显示 monit 直接启动 java,但它们对我不起作用。

ElasticSearch 描述了Java 服务包装器

于 2012-09-04T19:21:30.913 回答
1

结帐https://logstash.jira.com/browse/LOGSTASH-458

我在启动脚本中添加了一个 HOME 变量,现在它通过 monit 启动

于 2012-09-06T18:10:34.877 回答