#!/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
虚机停止、挂起、删除时,发送虚机异常消息
最新推荐文章于 2022-09-07 12:07:07 发布