shell+DingTalk機器人完成java程式中斷後自啟動和即時監控

來源:互聯網
上載者:User

標籤: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程式中斷後自啟動和即時監控

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.