前言
由于工作中很多项目需要java应用程序在后台执行任务,但是有些时候后台运行的java应用程序会莫名其妙的死掉,此时运维/运营人员无法及时发现宕机的应用程序,只能够通过业务流程不正常才能够发现宕机的应用,对业务有很大的影响,由于公司服务器资源比较有限,无法部署统一的监测系统,特采用shell脚本的方式来监测java的应用进程是否正常运行,无须在业务代码中嵌入监控代码,做到低耦合,高内聚。
监测原理
- 原理图
- java应用启动时,采用自定义脚本方式启动,然后将应用的当前进程号进行应用的根目录下生成pid.txt文件
- shell脚本执行的时候查找指定目录下的所有pid.txt文件,然后根据每个pid.txt中的进程号判断当前的进程是否存活
- 如果根据进程号没有找到指定的进程则认为进程死掉,主动发送告警(此处采用钉钉群机器人的方式告警)
监控脚本
-
java应用启动脚本
#!/bin/sh root_dir=$(dirname $(readlink -f "$0")) class_path=$root_dir/bin:$root_dir/lib/* pid_file=$root_dir/pid.txt console_file=$root_dir/logs/console.out er