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

#!/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
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值