shell+钉钉机器人完成java程序中断后自启动和实时监控
java实时程序在运行过程中偶尔出现异常信息中断的情况,通过shell脚本即可完成自启动。
以下为监控一个实时的java程序的shell脚本。
通过每10秒检查一次java程序的进程,来判断程序是否处于运行中。如果未发现程序,则执行程序的启动脚本。
对于启动过程中的状态信息,会通过钉钉机器人实时发送到监控群中,让维护人员了解到程序的异常。
在脚本中通过maxRetry来设置最大尝试的次数。
#!/bin/sh #=============== java程序 begin ====================#
function callJavaProgram(){
nohup java -Djava.ext.dirs=lib com.Testjava >& &
}
#=============== java程序 end =======================# #=============== 发送钉钉的消息 begin ================#
# 注意: ${nowtime}对应的日期参数不能有空格
# 注意: ${programe}为执行的jar程序的主程序名
url='https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
programe=TestJava
server=192.168.0.101
content=''
logfile=testjava.log function sendDingtalk(){
java -Djava.ext.dirs=/home/hadoop/shell/robot/lib com.DingtalkRobot \
${} ${} ${} ${} ${}
}
#sendDingtalk ${url} ${programe} ${server} ${nowtime} ${content}
#=============== 发送钉钉的消息 end ==================# # 最大尝试次数
maxRetry=
# 尝试次数计数器
retryTimes= (
while true;
do
# 检测java程序执行的进程个数,如果小于1,则未启动
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 ]; then retryTimes=$[$retryTimes+] 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 #============== 这里执行java程序 =========================#
callJavaProgram
#============== 这里执行java程序 =========================# else
if [ $retryTimes -gt ]; then
content='程序【'${programe}'】启动成功......第'"${retryTimes}"'次'
echo ${content} >> ${logfile}
sendDingtalk ${url} ${programe} ${server} ${nowtime} ${content}
else
echo ${nowtime} '程序【'${programe}'】......正在运行中' >> ${logfile}
fi
let retryTimes=
fi sleep done
) & >> shell.log
脚本启动后:
可以查看到钉钉群中实时监控信息:

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

shell+钉钉机器人完成java程序中断后自启动和实时监控的更多相关文章
- Java实现Android,iOS设备实时监控
Java实现Android设备实时监控 设计思路: 第一,启动一个实时截图线程,负责实时截取Android设备屏幕,保存到本地路径. 第二,在JSP页面,定义一个img对象,实时更换img对象的src ...
- 运维利器:钉钉机器人脚本告警(Linux Shell 篇)
写在前面的话 目前换了几家公司,且最近几家都是以钉钉作为公司 OA 聊天工具,总的来说还是很不错的.最近去了新公司,由于公司以前没有运维,所以监控,做自动化等方面都没有实施,恰逢这个机会把最近做的关于 ...
- shell操作钉钉机器人实现告警提醒
我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看.随着手机APP的发展,很多告警开始发送到IM软件上去.目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉 ...
- 通知神器——java调用钉钉群自定义机器人
创建群自定义机器人 在指定钉钉群(或者随便拉两个人建个群,然后把别人T出去)的群设置里选择 群机器人 -> 自定义,如图: 然后,添加机器人,设置名字,添加成功时如下图: 其中webhook非常 ...
- java接入钉钉机器人(带源码)
前言 登录钉钉网页: https://im.dingtalk.com 登录说明文档地址,以备随时查询: https://ding-doc.dingtalk.com/doc#/serverapi2/qf ...
- Java项目中集成钉钉机器人推送消息提醒
前言: 项目中有一个需求,当有新订单产生的时候,希望能够及时通知到业务相关人员进行处理,整体考虑了一下,选用了钉钉机器人提醒功能(公司内部主要也是使用钉钉进行通讯). 操作: 主要分为两部分进行处理: ...
- python监控服务器应用日志,推送钉钉机器人,实时关注日志异常
生产环境多台服务器上部署了多个应用,日志出现报错时,无法及时反馈到开发人员.部署一个大型的运维监控应用,不但耗资源,而且配置也不简单. 简简单单写个python脚本来监控服务器日志就简单多了,废话不多 ...
- 钉钉自定义机器人配合SVN钩子事件进行消息的推送实践
目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考 ...
- Sentry快速开始并集成钉钉群机器人
Sentry(直译为:哨兵)是一个开源错误跟踪服务,帮助开发人员实时监控和修复崩溃 Sentry本质上是一种帮助您实时监控和修复崩溃的服务 1. 安装客户端SDK 这里我们安装Java平台的SDK, ...
随机推荐
- GIT 简单版
Git规范 by 程序亦非猿 2016.4.6 这又是一篇我在公司分享的,想制定一下Git的规范,有兴趣的可以看看~ 上一篇在这里 分支模型 每个项目必须要有master.develop分支. 每个开 ...
- 在Spring Boot中使用Spring-data-jpa实现分页查询(转)
在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式. 1.引入起步依赖 2.对thymeleaf和jpa进 ...
- haproxy 关闭ssl3
在使用的过程中,我们发现在用IE浏览器的时候 我们设置成 然后我们的网站会出现部分页面不出来 然后我们也发现在扫面网站链接的时候 所以当务之急是关闭ssl3 我这里的反向代理使用的是haproxy 版 ...
- 使用Method swizzling (也就是运行时交换两个方法的imp ,实现重写方法)
贴上资源.很简单 https://gist.github.com/rudyjahchan/2191796 http://itony.me/592.html http://stackoverflow.c ...
- mui封装做好的手机版网站为apk
BOSS提到的一个功能,就是把已经做好的手机网站http://xxx.com/m/home/index ,想着看起来应该蛮简单,一个html页面里就一个iframe就好了,然后宽度和高度都设置为100 ...
- lame,把ios录音转换为mp3格式
在ios设备中进行录音,录音文件的格式为caf.但这种格式在很多设备中没法播放.为了适应终端的播放功能,特将caf转换为mp3格式文件来使用. 在录制caf文件时,需要使用双通道,否则在转换为MP3格 ...
- vue-cli 工程中引入jquery
在vue-cli 生成的工程中引入了jquery,记录一下.(模板用的webpack) 首先在package.json里的dependencies加入"jquery" : &quo ...
- 淘宝分布式数据层TDDL
剖析淘宝 TDDL ( TAOBAO DISTRIBUTE DATA LAYER ) 注:原文:http://gao-xianglong.iteye.com/blog/1973591 前言 在开始 ...
- python(41):copy拷贝(深拷贝deepcopy与浅拷贝copy)
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1.copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2.copy.deepco ...
- 运行Virtualbox去安装系统时出错:Failed to open a session for the virtual machine,Unable to load R3 module xxxx/VBoxDD.DLL(VBoxDD)
貌似看到不少人(1,2,3),在使用Virtualbox去安装系统时,都遇到这个错误: 比如这里遇到的: 截图: 和另外这里的截图: 加文字描述: Failed to open a session f ...