shell+钉钉机器人完成java程序中断后自启动和实时监控

java实时程序在运行过程中偶尔出现异常信息中断的情况,通过shell脚本即可完成自启动。

以下为监控一个实时的java程序的shell脚本。

通过每10秒检查一次java程序的进程,来判断程序是否处于运行中。如果未发现程序,则执行程序的启动脚本。

对于启动过程中的状态信息,会通过钉钉机器人实时发送到监控群中,让维护人员了解到程序的异常。

在脚本中通过maxRetry来设置最大尝试的次数。

#!/bin/sh

# 最大尝试次数
maxRetry=3

# 尝试次数计数器
retryTimes=0

# 消费者参数
consumer_bootstrap_server=192.168.0.1:9092
consumerGroup=bigdata
consumerTopic=test1
consumerAutoOffsetReset=earliest
# 生产者参数
producer_bootstrap_server=10.10.10.10:9092
producerTopic=test2

# log
logfile=programe.log

# 发送钉钉的消息参数
# 注意: ${nowtime}对应的日期参数不能有空格
# 注意: ${programe}为执行的jar程序的主程序名
url=‘https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx‘
programe=xxxxxprograme
server=192.168.0.1
content=‘‘

# 发送钉钉的调用函数
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 10

done
) & >> shell.log

脚本启动后:

可以查看到钉钉群中实时监控信息:

程序启动成功后,提示以下信息:

原文地址:https://www.cnblogs.com/30go/p/9078309.html

时间: 2024-09-30 15:37:30

shell+钉钉机器人完成java程序中断后自启动和实时监控的相关文章

shell 操作钉钉机器人实现告警提醒

我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看.随着手机APP的发展,很多告警开始发送到IM软件上去.目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉上.群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步.借助钉钉机器人,通过官方提供的API,可以很方便的post数据到相应的接收人 .群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警通过自定义机器人聚合到钉钉群实现提醒功

Shell中通过机器人发送钉钉群消息

场景:在平时的工作中,经常需要执行一些定时任务,并且当定时任务执行失败后需要告警出来到钉钉群,使用[钉钉机器人]可以简单快速的帮我们完成这件事情. 简单使用 curl 'https://oapi.dingtalk.com/robot/send?access_token=9e2549f6a0bb28767bdexxxxxxxxxxxxxxxxxx81975c981005abbd'    -H 'Content-Type: application/json'    -d '   {"msgtype&

通知神器——java调用钉钉群自定义机器人

创建群自定义机器人 在指定钉钉群(或者随便拉两个人建个群,然后把别人T出去)的群设置里选择 群机器人 -> 自定义,如图: 然后,添加机器人,设置名字,添加成功时如下图: 其中webhook非常重要,下文详述.点击设置说明可以看相关使用文档,文档链接见本文末尾. 使用HTTP POST请求发送消息 直接向上文所述的webhook链接发送POST请求已达到自定义机器人向群内发消息的功能 按照文档中所属的参数格式直接向链接发送请求即可,我使用Postman发送请求如下: 效果如下: 发送其他格式(如

java接入钉钉机器人(带源码)

前言 登录钉钉网页: https://im.dingtalk.com 登录说明文档地址,以备随时查询: https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq 首先新建一个群聊 然后添加一个机器人 随意设置一个 复制 https://oapi.dingtalk.com/robot/send?access_token=229ae977ddb23ac6bdce257ef2cb8938942d254f1a7a9e5397dc1afa47e4b9ad 欢

自动化执行 - 钉钉机器人通知

背景 公司内部用钉钉来办公,钉钉支持机器人提醒,有各种各样的机器人提供选择,可以根据需求来定制机器人,达到提醒功能,如提醒某人请下午茶,233 思路 1. 添加机器人到群组中,这次将的是“自定义”机器人: 2. 添加后会发现有一个webhook的链接,可以点击“设置说明”查看详情 3. 可以通过post请求网这个webhook发送信息,机器人就可以在群里展示信息,文档里有定义不同的请求body: 文档地址:https://open-doc.dingtalk.com/docs/doc.htm?sp

Jenkins与钉钉机器人实现手机端获取当前服务日志

马上要过年了,各位运维们除了因为买不到回家的火车票而嚎嚎大哭之外也开始扩容服务器和提前调整监控值,目的就是为了过一个消停的春节.可是这毕竟十天左右不在公司,要是模块真出了什么意外肯定没法第一找到日志分析问题,毕竟这几天都在串门拜年和醉生梦死中度过,走到哪都要再背一个笔记本实在太不方便了. 那么这个时候,我就琢磨使用手机端来启动服务器里脚本,让这个脚本可以去获取当前的日志,然后再把结果返回到手机端.这样就不用到哪里都带那个一看就很扫兴的公司笔记本电脑了. 使用手机端启动服务器里脚本?我又不会开发a

钉钉自定义机器人配合SVN钩子事件进行消息的推送实践

目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考勤.日志.审批等都是挂载的我们公司内部的系统,很方便,之后钉钉推出了钉钉机器人,一开始觉得没用,也就一直没关注,但是最近我看了钉钉自定义机器人,觉得这个可以好好利用起来,看到网上也有这方面的应用说明,看着很简单,但是按照流程操作起来各种坑,而且相关知识过于碎片化,今天我在这里进行一下简单的整合,梳理

钉钉机器人SDK 封装预警消息发送工具

1 群机器人 ????(1) 引言 ????钉钉聊天群内支持的群机器人, 类似QQ 群机器人, 可以发天气, 讲笑话那样; ????钉钉群机器人支持自定义机器人, 允许开发者管理机器人做预警消息通知; ????(2) 限制 6 个机器人/每群, 20条消息/每分钟 不支持应答模式, 仅做群消息通知 ????(3) 消息格式 ????支持普通文本消息, 链接消息, markdown 格式(注意仅部分语法支持)文本, 图片及链接, 支持FeedCard, ActionCard 等消息 ????(4)

jenkins 集成钉钉机器人

最早做Jenkins发布完成以后通过邮件发送信息通知相关的联系人,发现邮件会受限于大家接收的设置,导致不能及时的看到相关的发布内容,公司使用钉钉做为公司内部的通讯工具,所以想通过Jenkins发布完成以后通过钉钉来通知大家,研究发现钉钉提供机器人,所以我把机器人集成进来通知相关人员. 1.创建通知人群组,添加机器人(钉钉默认自带了配置好的机器人,但是没有Jenkins机器人): 注意:钉钉机器人的配置需要在PC端完成: 2.获取自定义机器人webhook 3.jenkins 安装"Dingdin