標籤:ogr ado 中斷 技術分享 訊息 http 檢測 boot date
java即時程式在運行過程中偶爾出現異常資訊中斷的情況,通過shell指令碼即可完成自啟動。
以下為監控一個即時的java程式的shell指令碼。
通過每10秒檢查一次java程式的進程,來判斷程式是否處於運行中。如果未發現程式,則執行程式的啟動指令碼。
對於啟動過程中的狀態資訊,會通過DingTalk機器人即時發送到監控群中,讓維護人員瞭解到程式的異常。
在指令碼中通過maxRetry來設定最大嘗試的次數。
#!/bin/sh# 最大嘗試次數maxRetry=3# 嘗試次數計數器retryTimes=0# 消費者參數consumer_bootstrap_server=192.168.0.1:9092consumerGroup=bigdataconsumerTopic=test1consumerAutoOffsetReset=earliest# 生產者參數producer_bootstrap_server=10.10.10.10:9092producerTopic=test2# loglogfile=programe.log# 發送DingTalk的訊息參數# 注意: ${nowtime}對應的日期參數不能有空格# 注意: ${programe}為執行的jar程式的主程式名url=‘https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx‘programe=xxxxxprogrameserver=192.168.0.1content=‘‘# 發送DingTalk的調用函數function sendDingtalk(){ java -Djava.ext.dirs=/home/hadoop/shell/robot/lib com.DingtalkRobot ${1} ${2} ${3} ${4} ${5}}#sendDingtalk ${url} ${programe} ${server} ${nowtime} ${content}(while true;do count=`ps -ef | grep ${programe} | grep -v grep|wc -l` #echo ‘進程個數:‘$count >> ${logfile} nowtime=`date --date=‘0 days ago‘ "+%Y-%m-%d_%H:%M:%S"` if [ ${count} -lt 1 ]; then retryTimes=$[$retryTimes+1] content=‘檢測到程式【‘${programe}‘】未啟動,正在嘗試啟動......第‘"${retryTimes}"‘次‘ echo ${nowtime} ${content} >> ${logfile} sendDingtalk ${url} ${programe} ${server} ${nowtime} ${content} if [ $retryTimes -ge $maxRetry ]; then content=‘檢測到程式【‘${programe}‘】異常,嘗試啟動‘"${maxRetry}"‘次失敗,程式退出,請手工解決‘ echo ${content} >> ${logfile} sendDingtalk ${url} ${programe} ${server} ${nowtime} ${content} break fi nohup java -Djava.ext.dirs=lib com.xxx.Programe ${consumer_bootstrap_server} ${consumerGroup} ${consumerTopic} ${consumerAutoOffsetReset} ${producer_bootstrap_server} ${producerTopic} 2>&1 & else if [ $retryTimes -gt 0 ]; then content=‘程式【‘${programe}‘】啟動成功......第‘"${retryTimes}"‘次‘ echo ${content} >> ${logfile} sendDingtalk ${url} ${programe} ${server} ${nowtime} ${content} else echo ${nowtime} ‘程式【‘${programe}‘】......正在運行中‘ >> ${logfile} fi let retryTimes=0 fi sleep 10done) & >> shell.log
指令碼啟動後:
可以查看到DingTalk群中即時監控資訊:
程式啟動成功後,提示以下資訊:
shell+DingTalk機器人完成java程式中斷後自啟動和即時監控