开发者社区> 科技小先锋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux进程监控工具:Supervisor

简介:
+关注继续查看

前言

我们知道现在的APP后台服务,必须可靠的运行,我们希望如果SOA服务进程挂了,可以迅速重启,那么就需要进程的监控了,而在Linux下Supervisor是管理进程的利器。Supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。想一想,其实不仅仅是在SOA服务上可以进行监控,还可以对Nginx等提供服务的任何进程进行监控和管理。


安装Supervisor

如果采用离线安装的方式,涉及到诸多前置软件包的安装,而且还需要相应版本,比如Python2.7。如果python的版本比较低,还需要升级,并且最好采用链接的方式改动,而不是完全卸载低版本。


博主已经实践成功,如下:【忽略jdk以及git】

wKiom1eKIs2w1nuJAAAsK9bcxfc346.png

相应软件包直接利用python setup.py install进行安装即可。


注意,Supervisor被安装到了哪里?如果没有明确指定,其实是被安装到了python目录下,因为说白了就是python的一个模块而已,如下图所示:

wKiom1eKI8nyaWYAAAB0mp7ro-0908.png


在这里,我们看到了supervisord,supervisord命令,其实这就是在公司常用的2个基础命令。


安装完毕后,利用echo_supervisord_conf命令生成默认的基础配置,在/etc下存在supervisord.conf.


我们可以大概扫一眼,典型的分段式配置:

wKiom1eKJQHwXQYyAABrpooed2o473.png


实际上,一般在公司,我们是涉及到非常多的项目会利用到Supervisor,我们并不会将所有的配置写到一个文件里面,而是根据业务各自提供各自的配置,然后include即可。可以看个例子:

wKiom1eKJaWjqOG6AAAGSEsd-T4308.png



监控实践


第一,提供配置文件

我们可以在/supervisor/etc/test.conf中提供以下内容:

wKioL1eKJmiC4pehAAAWVdiN68w273.png

既然要交给Supervisor进行管理,那么自然要告诉她,你的脚本路径在哪里,是否随着Supervisor启动而启动,输出的日志路径在哪里等一些基本信息。

除此之外,Supervisor还可以一次性帮你启动多个进程,比如一台机器上启动多个SOA服务实例,统一进行管理。

上面的配置就是在告诉Supervisor启动3个进程实例,而这每一个实例的名称就是process_name。其中program_name其实就是helloworld。


第二,启动Supervisord服务

wKiom1eKKAPQM5mlAAAJ3UNz0YY364.png

告诉配置文件在哪里,然后利用supervisord启动即可,如果不提供配置文件路径,那么将按照默认的路径逐级查找。


我们可以利用ps来查看下,发生了什么?

wKioL1eKKPDjnbTRAABEzrK1yFw701.png


这里,我们清楚的看到了,Supervisord的服务进程,以及她为我们启动的3个实例进程。


我们再来看看/myshell/supervisor4test.sh的内容是什么?

wKioL1eKKcqCc1DOAAASG_O3S2Y035.png


我们来看看日志的输出:


wKioL1eKKjmTI_pFAAANjXpIsM8454.png


我们清楚的看到了,有3个进程同时在输出,验证了上面我们所提及的。


我们可以kill -9的方式挂掉这3个进程中的几个,你会发现,马上Supervisor将替我们重启!


第三:利用supervisorctl进行进程管理


wKiom1eKKt2zBBsoAABbRbzDWlA662.png


到这里,Supervisor的初步使用就介绍完毕了,下文贴出一些基本配置说明,供大家参考。


wKiom1eKK-Djhf6nAABQMBGDrss826.png


本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1827020,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
嵌入式Linux C多进程编程(五)——进程退出和进程的等待
嵌入式Linux C多进程编程(五)——进程退出和进程的等待
0 0
嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)
嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)
0 0
嵌入式Linux C多进程编程(二)——进程概述
嵌入式Linux C多进程编程(二)——进程概述
0 0
全网首发:LINUX给进程内容窗口改名的第二种方法
全网首发:LINUX给进程内容窗口改名的第二种方法
0 0
LINUX给进程内容窗口改名的代码
LINUX给进程内容窗口改名的代码
0 0
【Linux】进程控制 (万字详解)—— 进程创建 | 进程退出 | 进程等待 | 程序替换 | 实现简易shell(下)
【Linux】进程控制 (万字详解)—— 进程创建 | 进程退出 | 进程等待 | 程序替换 | 实现简易shell(下)
0 0
【Linux】进程控制 (万字详解)—— 进程创建 | 进程退出 | 进程等待 | 程序替换 | 实现简易shell(上)
【Linux】进程控制 (万字详解)—— 进程创建 | 进程退出 | 进程等待 | 程序替换 | 实现简易shell(上)
0 0
【Linux】进程虚拟地址空间
【Linux】进程虚拟地址空间
0 0
【Linux】进程概念(万字详解)—— 冯诺依曼体系结构 | 操作系统 | 进程
【Linux】进程概念(万字详解)—— 冯诺依曼体系结构 | 操作系统 | 进程
0 0
操作系统之Linux 进程管理中的进程的创建和实现一个简单的 shell(命令行解释器)
操作系统之Linux 进程管理中的进程的创建和实现一个简单的 shell(命令行解释器)
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Decian GNU/Linux安全合规之路
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
冬季实战营第二期:Linux操作系统实战入门
立即下载