
由于应用稳定性或者服务器资源限制等问题,应用就会出现自动挂掉的情况,此时就需要自动拉起应用。
生产环境,为了防止因为意外宕机造成服务长时间中断,一般都会设置服务进程监控拉起机制。
Monit 是 Unix 系统上的服务监控工具。可以用来监控和管理进程、程序、文件、目录和设备等。
优点
缺点
命令格式: monit [options]+ [command]
yum 安装后的默认配置文件如下:
全局参数配置文件 : /etc/monitrc
服务监控配置文件目录:/etc/monit.d
日志文件: /var/log/monit.log
web 控制台地址:http://10.0.0.2:2812/
主页面:
监控运行信息:
系统监控信息:
进程监控信息:
你的系统运行状态很不正常,怀疑可能跟你的某个程序有关,可能在不停启动进程。当前系统进程有3万多,实在是太多了。我猜图中两个进程cm_agent和om_monitor是你的主要应用进程。不知道它们是否会自动拉起新的进程,例如定时执行shell脚本。有可能因为脚本卡住了,导致进程大量吊死。
你可以用ps -ef|grep “你要统计的进程名”| wc -l看下某个进程的数量。然后找到是那个程序拉起的,杀掉那个进程。如果被拉起的进程不能自动退出,则需要写脚本批量杀掉那些进程。
我遇到过因为磁盘问题导致某个文件系统异常,df命令卡壳,进而导致系统积累大量脚本进程不能退出。
需要进一步帮助可以私信联系。
supervisor 是用 Python 开发的一个 C/S 服务。是 Linux/Unix 系统下的进程管理工具。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
supervisor 只能用在Unix系统中,Windows用不了
服务端进程为supervisord,主要负责启动自身及其监控的子进程,响应客户端命令,重启异常退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在配置文件中配置相关参数,包括supervisor自身的状态,其管理的各个子进程的相关属性等。
supervisor的客户端为supervisorctl,它提供了一个类shell的接口(即命令行)来 *** 作supervisor服务端。通过supervisorctl,可以连接到supervisord服务进程,获得服务进程监控的子进程状态,启动和停止子进程,获得正在运行的进程列表。
yum install supervisor
apt install supervisor
pip install supervisor
参考
https://blog.csdn.net/wc1695040842/article/details/103988813
https://blog.csdn.net/BLUE5945/article/details/80119248
https://blog.csdn.net/weixin_43810267/article/details/122826513
若用的yum安装的supervisor,所以supervisord已经为系统服务
systemctl enable supervisord
systemctl start supervisord
若pip安装
supervisord -c /xxx/supervisord.conf
supervisord -c /etc/supervisor/supervisord.conf 后台启动
supervisord -n -c /etc/supervisor/supervisord.conf 前台启动
supervisorctl stop program_name 停止某个进程
supervisorctl start program_name 启动某个进程
supervisorctl restart program_name 重启某个进程
supervisorctl stop all 停止全部进程
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)