Debian系统上监控进程并自动重启

Last modified date

最近产品已经开始跑测试了,但是处于测试期可能会不稳定,我需要在服务器添加专门的监控进程功能和自动重启进程。
由于每日日志较多,并进行日常更新,还需要添加自动重启的功能。

整理一下我的需求:
1.凌晨自动重启服务器。
2.监控服务端进程,如果崩溃就自动重启
3.完成自动重启之后通过短信告知。

一:自动重启
自动重启的软件有很多,我这里仅采用了系统自带的crontab这个定时任务服务。
corntab -e
0 5 * * * /data/cap_server/autoreboot.sh # 每天凌晨5点自动重启服务端程序

autoboot.sh是自己写的shell脚本,主要功能是:
关闭服务器;打包所有日志和性能文件;更新服务端程序和配置;启动服务端程序;发送短信通知

二:监控服务端进程
1.服务端程序启动时候会在当前目录创建一个 server_name.pid 的文件,文件中写入了进程ID,所以在定时监控脚本中,我仅仅是读取了该PID,然后调用ps 命令查询进程是否存活。
2.服务端程序在退出时候会删除该文件并创建 stop_monitor文件,监控脚本如果检测到该文件(stop_monitor)会跳过监控,避免和自动重启冲突。
3.如果进程不存在,将自动调用autoreboot.sh脚本重启服务端程序。
4.监控进程也是采用crontab的定时服务,每分钟执行一次。

三:短信通知
这里是最简单的,采用了阿里云的云短信和对应的Python API接口,在autoreboot.sh脚本的最后调用即可。

基本上整个监控和自动重启逻辑就是这样,目前跑了一段时间测试服务端没有发现什么问题,后续在正式上线的时候将再做一次优化,我们下次见。

淋雨