Untitled

 avatar
unknown
plain_text
2 years ago
3.8 kB
5
Indexable
#!/bin/bash
host="localhost"
port=11400
webserver_status=0
scheduler_status=0 
timestamp=$(date +%Y%m%d%H%M%S)
airflow_home=$AIRFLOW_HOME
if ps -ef | grep webserver | grep -v grep > /dev/null; then
  webserver_status=1
  echo "Webserver is Up"
else
  webserver_status=0
  echo "Webserver is Down"
fi
if ps -ef | grep scheduler | grep -v grep > /dev/null; then
  scheduler_status=1
  echo "scheduler is Up"
else
  scheduler_status=0
  echo "scheduler is Down"
fi
#file names for backup
scheduler.err="airflow-scheduler.err"
scheduler.log="airflow-scheduler.log"
scheduler.out="airflow-scheduler.out"
webserver.err="airflow-webserver.err"
webserver.log="airflow-webserver.log"
webserver.out="airflow-webserver.out"
if [ $webserver_status -eq 1 ] && [ $scheduler_status -eq 1 ]; then
  echo "Both webserver and scheduler are up...killing processes and restarting both services"
  pkill airflow
  airflow webserver -D
  airflow scheduler -D
fi
if [ $webserver_status -eq 0 ] && [ $scheduler_status -eq 0 ]; then
  echo "Both webserver and scheduler are down...starting both webserver and scheduler"
  if [ -f "$airflow_home/airflow-scheduler.err" ]; then
    cp "$scheduler.err" "${scheduler.err}_${timestamp}.bak"
  else
    echo "$scheduler.err file not found"
  fi
  if [ -f "$airflow_home/airflow-scheduler.log" ]; then
    cp "$scheduler.log" "${scheduler.log}_${timestamp}.bak"
  else
    echo "$scheduler.log file not found"
  fi
  if [ -f "$airflow_home/airflow-scheduler.out" ]; then
    cp "$scheduler.out" "${scheduler.out}_${timestamp}.bak"
  else
    echo "$scheduler.out file not found"
  fi
  if [ -f "$airflow_home/airflow-webserver.err" ]; then
    cp "$webserver.err" "${webserver.err}_${timestamp}.bak"
  else
    echo "$webserver.err file not found"
  fi
  if [ -f "$airflow_home/airflow-webserver.log" ]; then
    cp "$webserver.log" "${webserver.log}_${timestamp}.bak"
  else
    echo "$webserver.log file not found"
  fi
  if [ -f "$airflow_home/airflow-webserver.out" ]; then
    cp "$webserver.out" "${webserver.out}_${timestamp}.bak"
  else
    echo "$webserver.out file not found"
  fi
  airflow webserver -D
  airflow scheduler -D
fi
if [ $webserver_status -eq 1 ] && [ $scheduler_status -eq 0 ]; then
  echo "Webserver is up and scheduler is down...starting scheduler"
  if [ -f "$airflow_home/airflow-scheduler.err" ]; then
    cp "$scheduler.err" "${scheduler.err}_${timestamp}.bak"
  else
    echo "$scheduler.err file not found"
  fi
  if [ -f "$airflow_home/airflow-scheduler.log" ]; then
    cp "$scheduler.log" "${scheduler.log}_${timestamp}.bak"
  else
    echo "$scheduler.log file not found"
  fi
  if [ -f "$airflow_home/airflow-scheduler.out" ]; then
    cp "$scheduler.out" "${scheduler.out}_${timestamp}.bak"
  else
    echo "$scheduler.out file not found"
  fi
  airflow scheduler -D
fi
if [ $webserver_status -eq 0 ] && [ $scheduler_status -eq 1 ]; then
  echo "Webserver is down and scheduler is up...starting webserver"
  if [ -f "$airflow_home/airflow-webserver.err" ]; then
    cp "$webserver.err" "${webserver.err}_${timestamp}.bak"
  else
    echo "$webserver.err file not found"
  fi
  if [ -f "$airflow_home/airflow-webserver.log" ]; then
    cp "$webserver.log" "${webserver.log}_${timestamp}.bak"
  else
    echo "$webserver.log file not found"
  fi
  if [ -f "$airflow_home/airflow-webserver.out" ]; then
    cp "$webserver.out" "${webserver.out}_${timestamp}.bak"
  else
    echo "$webserver.out file not found"
  fi
  airflow webserver -D
  sleep 10
  errors = $(cat $airflow_home/airflow_webserver.err)
  if [ -z "$errors" ]; then
  echo "Webserver has errors. Exiting..."
  fi
  exit 1
fi
Editor is loading...