diff options
Diffstat (limited to 'integration/src/main/assembly/monitor.sh')
-rw-r--r-- | integration/src/main/assembly/monitor.sh | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/integration/src/main/assembly/monitor.sh b/integration/src/main/assembly/monitor.sh new file mode 100644 index 0000000..9cac87a --- /dev/null +++ b/integration/src/main/assembly/monitor.sh @@ -0,0 +1,75 @@ +#!/bin/bash +DIRNAME=`dirname $0` +RUNHOME=`cd $DIRNAME/; pwd` +LOG_DIR=${RUNHOME}/tomcat/logs + +RETRY=$1 +CURL_RETRY_COUNT=1 +SLEEP_SECONDS_IN_MONITOR=2 + +if [ x"$HTTP_OVERWRITE_PORT" == x"" ]; then + apds_port=80 +else + apds_port=$HTTP_OVERWRITE_PORT +fi + +##################################### +echo @RUNHOME@ $RUNHOME +echo @LOG_DIR@ $LOG_DIR +echo @apds_port@ $apds_port +##################################### + +print_log() { + LOG_DATE=`date "+%Y-%m-%d %H:%M:%S"` + LOG_FILENAME="$LOG_DIR/apds-monitor-`date "+%Y-%m-%d"`.log" + ######[$$]:进程id + ###### $n 传递给脚本或函数的参数, $1为函数名称,默认为FUNCNAME[0] $2为日志输出内容 + ###### $? 函数的返回值 + ###### FUNCNAME[@]: 函数调用栈, + ###### {} 第一个空格后在写脚本 + { echo -e $LOG_DATE "[$$]===${FUNCNAME[@]}=== $2 "; } >> $LOG_FILENAME +} + +apds_monitor() { + print_log ${FUNCNAME[0]} "Starting health check. ==$1=="; + if [ "$1" == "with-retry" ]; then + CURL_RETRY_COUNT=5 + fi + + for i in `seq $CURL_RETRY_COUNT` + do + success=0 + response=$(curl -m 2 -sL 127.0.0.1:$apds_port/blueprint/readme.txt -w %{http_code} -o /dev/null) + rc=$? + if [ $rc -eq 0 ];then + print_log "${FUNCNAME[0]}" "Info: Curl to health check endpoint succeeded."; + success=1 + break + else + print_log "${FUNCNAME[0]}" "Warn: Curl to health check endpoint failed $i time(s)."; + if [ "$1" == "with-retry" ]; then + sleep $SLEEP_SECONDS_IN_MONITOR + fi + fi + done + + if [ $success -eq 0 ];then + print_log "${FUNCNAME[0]}" "Failed: health check Endpoint is unreachable."; + return 1 + fi + + if [ $response -eq 200 ]; then + print_log "${FUNCNAME[0]}" "health check succeed."; + return 0 + fi + + print_log "${FUNCNAME[0]}" "Failed:health check return non 200 but is : $response "; + return 1 +} + +if [ ! -d "$LOG_DIR" ]; then + echo there is no $LOG_DIR but will be created, You can ignore this message! + mkdir -p "$LOG_DIR" +fi + +apds_monitor $RETRY |