优势: html
1.功能强大python
2.使用方便linux
缺点:spring
1.体系庞大,很是复杂shell
2.与操做系统的其余部分强耦合网络
优势:运维
1.进程守护工具
2.纯净的进程状态spa
3.可靠的日志记录工具操作系统
4.系统快速启停
5.可移植、封装友好、轻量
缺点:
1.配置相对繁琐
2.国内使用的人少比较冷门,网上相关介绍很少
优势:
1.易于安装、轻量级(500KB)、高可用、依赖少、安装方便,配置简单易读
2.基本功能完善,支持系统,文件,进程(带pid),文件系统,目录,设备,远程主机,网络,用户自定义shell扩展9种类型的监控,邮件报警
3.可监控前台进程和非前台进程
4.被监控的进程能够设置依赖,控制启动顺序
5.Web UI
缺点:
1.经过pidfile或进程名匹配进行监控,不然无效
2.对进程监控的状态告知有延时(轮训)
优势:
1.使用简单方便,统一配置管理,功能丰富,社区活跃,使用者多
2.对被监控进程的状态获取迅速且精确——经过子进程管理(实时)
3.Web UI
缺点:
1.服务必须从supervisor启动且非守护方式(被监控进程必须运行在前台)
2.没法控制服务启动前后顺序
3.没法管理被监控进程建立的子进程
部分特性对比:
特性 |
systemd |
runit |
monit |
supervisord |
大小 |
重量级 |
轻量级 |
轻量级 |
轻量级 |
部署配置复杂性 |
复杂(系统级) |
复杂 |
简单 |
简单 |
社区活跃度 |
活跃 |
不活跃 |
活跃 |
很是活跃 |
可视化管理Web UI |
不支持 |
不支持 |
支持 |
支持 |
日志记录 |
欠缺 |
完善 |
完善 |
完善 |
由上特性对比排除使用systemd、runit,下面对monit和supervisord详细对比
特性 |
Monit |
Supervisord |
编写语言 |
C |
Python |
缺点 |
|
|
优势 |
|
|
以上工具均支持进程守护,便可根据配置监控进程意外宕掉时自动重启守护,各方面对比并结合如今应用场景,最终选用supervisord。
至于spring自带健康检查接口防止进程假死的守护有两种方案,方案一是运维本身写脚本目前项鸣正是使用的此方案;方案二是使用supervisord自带特性实现,目前调研结果是eventlistener或许能实现(待验证)。
参考:
Monit官方文档:https://mmonit.com/monit/documentation/monit.html#
Supervisor官方文档:http://www.supervisord.org/configuration.html
http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html
https://blog.csdn.net/u010039418/article/details/83784195
https://www.cnblogs.com/alesic/p/9315867.html