2016-09-06 12 views
0

私は、サービスとしてelastalertを起動する起動スクリプトを作成しようとしています。 elastalertのpythonを使用し、次のように起動します:ElastAlert BashスタートアップスクリプトCentOS 7

python -m elastalert --verbose --rule rules_folder/frequency.yaml --config config.yaml 

私はそれが次のように動作するようにしようとしてきた:

#!/bin/bash 
# elastalert startup script for elastalert 
# pidfile:   /var/run/elastalert.pid 
# chkconfig: 2345 99 01 

NAME=elastalert 
PIDFILE=/var/run/$NAME.pid 
ELASTALERT_DIR=/elastalert/elastalert 
ELASTALERT_USER=elastalert 
CONFIG_FILE=$ELASTALERT_DIR/config.yaml 
ELASTALERT=$ELASTALERT_DIR/$NAME 

. /etc/rc.d/init.d/functions 

case $1 in 
    start) 
     echo -n $"Starting $NAME: " 
     cd $ELASTALERT_DIR 
     daemon --pidfile="$PIDFILE" "$ELASTALERT --rule rules_folder/frequency.yaml --config $CONFIG_FILE &" 
     RETVAL=$? 
     pid=`ps -ef | grep python | grep elastalert | awk '{print $2}'` 
     if [ -n "$pid" ]; then 
     echo $pid > "$PIDFILE" 
     fi 
    ;; 
     stop) 
     echo -n $"Stopping $NAME: " 
     killproc -p "$PIDFILE" -d 10 "$ELASTALERT" 
     RETVAL="$?" 
     echo 
     [ $RETVAL = 0 ] && rm -f "$PIDFILE" 
    ;; 
    *) 
     echo "Usage: /etc/init.d/elastalert {start|stop}" ;; 
esac 
exit 0 

私は、スクリプトを実行しようとすると、私は次のエラーを取得する:

virtualenvelastalert) [[email protected] scripts]# elastalert Traceback (most recent call last): File "/virtualenvelastalert/bin/elastalert", line 11, in load_entry_point('elastalert==0.0.95', 'console_scripts', 'elastalert')() File "/virtualenvelastalert/lib/python2.7/site-packages/elastalert-0.0.95-py2.7.egg/elastalert/elastalert.py", line 1426, in main client = ElastAlerter(args) File "/virtualenvelastalert/lib/python2.7/site-packages/elastalert-0.0.95-py2.7.egg/elastalert/elastalert.py", line 94, in init self.conf = load_rules(self.args) File "/virtualenvelastalert/lib/python2.7/site-packages/elastalert-0.0.95-py2.7.egg/elastalert/config.py", line 373, in load_rules conf = yaml_loader(filename) File "/virtualenvelastalert/lib/python2.7/site-packages/staticconf/loader.py", line 161, in yaml_loader with open(filename) as fh: IOError: [Errno 2] No such file or directory: 'config.yaml'

答えて

0

間違ったディレクトリからElastAlertを起動しようとすると、このエラーメッセージが表示されます。 config.yamlが標準の場所にある限り、その場所を渡す必要はありません。あなたが定義したディレクトリが正しいと仮定して、設定フラグとパスを設定せずに実行してください:

--config $CONFIG_FILE 
0

サービスユニットで試してみてください。実行するコマンドと共にExecセクションを書く必要があります。