您的位置:首页 > 其它

虚机停止、挂起、删除时,发送虚机异常消息

2016-12-12 15:03 453 查看
#!/bin/bash

#descrition:
#虚机停止、挂起、删除时,发送虚机异常消息
#The log output file:/var/log/docker_terminate_deploy.log
#
#precondition:mir envionment variables example
#LOGSTORE_ID=0672ac9c-c328-496a-bddc-47bb93c8bc12
#ONELOG_SERVER_IP=172.16.81.41
#ONELOG_SERVER_PORT=4564
#ENV_ETCD_SERVER=172.16.70.73:2379
#
#steps:

ETCD_SERVER_URL=$ENV_ETCD_SERVER_URL
EFFECTIVE_ETCD_SERVER_URL=""
VM_IP=""

#$1:$LINENO
#$2:ERROR/DEBUG/INFO
#$3:MSG
log(){
currentTimeStamp=`date "+%Y-%m-%d %H:%M:%S"`
#currentTimeStamp=`date -d "$Time" +%s`
#currentTimeStamp=`date +%s`
((LOG_SEQ_NUM=LOG_SEQ_NUM+1));
echo "$LOG_SEQ_NUM $currentTimeStamp sh:docker-terminate-deploy.sh $CD_DEPLOY_ID $CD_EVENT_ID lineNo:$1 $2::$3::" >> /var/log/docker_terminate_deploy.log
}

getVmIp() {
if [ "$SCALR_EXTERNAL_IP" != "" ]
then
VM_IP=$SCALR_EXTERNAL_IP
elif [ "$SCALR_INTERNAL_IP" != "" ]
then
VM_IP=$SCALR_INTERNAL_IP
fi
log "$LINENO" "DEBUG" "VM_IP is $VM_IP"

}

#校验ETCD SERVER是否可用
checkEtcdServer(){
arr=(${ETCD_SERVER_URL//,/ })
for ETCD_URL in ${arr[@]}
do
ETCD_VERSION=`curl -L $ETCD_URL/version`
if [ "$ETCD_VERSION" = "" ]
then
EXE_RES="1"
log "$LINENO" "ERROR" "$ETCD_URL unknow etcd server"
else
EFFECTIVE_ETCD_SERVER_URL=$ETCD_URL
fi
done
if [ "$EFFECTIVE_ETCD_SERVER_URL" = "" ]
then
EXE_RES="1"
log "$LINENO" "ERROR" "No etcd service available."
deploymentFailure
exit 1
fi
log "$LINENO" "DEBUG" "effective etcd server > $EFFECTIVE_ETCD_SERVER_URL"
}

sendCDPhaseLog(){
true > /var/log/etcd_event_msg_for_terninate.txt
echo "'$ETCD_CDEVENT_JSON'" | python -c "import json,base64,sys;obj=json.loads(base64.b64decode(sys.stdin.read()));obj['shellName']='docker-terminate-deploy.sh';obj['step']='$1';obj['stepStatus']='$2';obj['vmServerId']='$SCALR_SERVER_ID';obj['vmIp']='$VM_IP';print json.dumps(obj)" >> /var/log/etcd_event_msg_for_terninate.txt

#generateEventId
if [ "$ETCD_TTL" = "" ]
then
ETCD_TTL = 2592000
fi
LOG_MSG=`curl -L $EFFECTIVE_ETCD_SERVER_URL/v2/keys/$ETCD_CD_PHASE_LOG_DIR$CD_EVENT_ID/$VM_IP -XPUT -d ttl=$ETCD_TTL --data-urlencode value@/var/log/etcd_event_msg_for_terninate.txt`
log "$LINENO" "DEBUG" "send cd-phase-event[step:$1,stepStatus:$2]. event msg content > $LOG_MSG"
}

main(){

getVmIp

checkEtcdServer

sendCDPhaseLog "finish" "VMEXCEPTION"
}

main
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐