ElastAlert Bash Startup Script Centos 7

时间:2016-09-06 15:14:11

标签: python bash shell elasticsearch elastalert

我正在尝试编写一个启动elastalert作为服务的启动脚本。 elastalert使用python并按如下方式开始:

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)[root @mplinux脚本] #elastalert   Traceback(最近一次调用最后一次):     文件" / virtualenvelastalert / bin / elastalert",第11行,in       load_entry_point(' elastalert == 0.0.95',' console_scripts',' elastalert')()     文件" /virtualenvelastalert/lib/python2.7/site-packages/elastalert-0.0.95-py2.7.egg/elastalert/elastalert.py" ;,第1426行,主要       client = ElastAlerter(args)     文件" /virtualenvelastalert/lib/python2.7/site-packages/elastalert-0.0.95-py2.7.egg/elastalert/elastalert.py",第94行, init       self.conf = load_rules(self.args)     文件" /virtualenvelastalert/lib/python2.7/site-packages/elastalert-0.0.95-py2.7.egg/elastalert/config.py",第373行,在load_rules中       conf = yaml_loader(filename)     文件" /virtualenvelastalert/lib/python2.7/site-packages/staticconf/loader.py" ;,第161行,在yaml_loader中       使用open(filename)作为fh:   IOError:[Errno 2]没有这样的文件或目录:' config.yaml'

2 个答案:

答案 0 :(得分:0)

尝试从错误的目录启动ElastAlert时收到该错误消息。只要它位于标准位置,您就不需要传入config.yaml的位置。假设您定义的目录是正确的,请尝试在没有config标志和config的路径的情况下执行:

--config $CONFIG_FILE

答案 1 :(得分:0)

请与服务单位一起试用吗?在那里你必须用你想要执行的命令编写Exec部分