Supervisor 是由 Python 语言编写、基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等。
Cloud Insight 是一款次世代监控工具兼数据管理平台。使用 StatsD 采集性能指标,在 HBase 存储之上,使用 OpenTSDB 来对性能指标进行聚合、分组、过滤。
使用 Supervisor 的原因
- 如果你有很多进程在跑,不时还需要 start/stop/restart 一下进程
- 如果哪天由于某种原因,进程挂了,你需要重启进程或定时执行脚本
- 如果有多个进程,有些是同一项目,尽量可以同时启动/停止等
如果你有以上任意一种情况,那用 Supervisor 管理进程无疑再合适不过了,把你所有 *nix 进程都配置进 ini 文件中,这样所有的进程就变成了 Supervisor 的子进程。对于子进程,Supervisor 可以做到准确管理(有 web 界面),可以进行分组,一组组的 或者授权非 root 用户。
Supervisor 管理进程, Cloud Insight 监控进程
Supervisor 只能管理进程,对进程进行操作,但不能监控进程,虽然有 web 界面可以显示/管理的进程,但不具备一般意义上的监控。例如实时展示进程数据,出现问题有相应报警邮件。
Cloud Insight 可以监控 Supervisor 管理的进程数量和运行情况,也可以单独监控进程,也就是说进程无论是否被 Supervisor 管理,Cloud Insight 都可以监控。
像上面图片这样,监控所有进程的 IO 读写,内存,CPU,打开文件等等,也可以配置单个某一个进程的上述指标,查看正常情况下进程的资源消耗,如果出现异常邮件报警。例如假死等情况发生的时候,进程也没挂,但资源消耗会有异常,这些通过告警通通提前知道。
Cloud Insight 支持监控 Supervisor
Cloud Insight 不仅可以监控进程相关的数据,同样支持监控 Supervisor。Supervisor 管理进程的启动/停止/重启,如果 Supervisor 本身出问题了,那前面那些进程操作也就执行不了,虽然 Supervisor 本身不会出现什么问题,但这也不是万无一失的,所以监控上还是好的。
监控进程,设置告警
如果有一个进程挂了,或者假死,怎么能够及时知道?
配置上图这样的报警策略:
- 选择性能指标:指标任意选一个
process
的指标,over
选定特定进程,例如process:python
就是监控 Python 进程数据的。 - 设置报警条件:设置一个阈值,达到阈值时会触发报警;此外还可以配置设置数据丢失(进程挂了自然也就不会再发送数据)时,直接发送报警邮件。
- 再下面,就是命名报警和设置通知用户。
总之,如果你关心你的应用进程情况,或者在使用 Supervisor,不妨试试 Cloud Insight,永久免费版等你来用!
本文转自 OneAPM 官方博客
参考文档: