Supervisor ---业务应用进程 进程管理工具

 

Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor 可谓运维利器,使用 Supervisor 来管理进程,可以提高系统的高可用特性。

 参考可见:

1、https://leehao.me/%E4%BD%BF%E7%94%A8-Supervisor-%E6%9D%A5%E7%AE%A1%E7%90%86-Redis-%E8%BF%9B%E7%A8%8B/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

2、http://www.linuxidc.com/Linux/2012-11/73832.htm

环境安装需求:

1、python环境(正常的centos系统都已经有了python环境)

2、python-meld3 扩展

 

具体安装过程:

1、到官网下载最新的supervisor安装包:
https://pypi.python.org/pypi/supervisor 

#新建一个目录
mkdir /home/supervisor

#下载源码包 
wget https://pypi.python.org/packages/31/7e/788fc6566211e77c395ea272058eb71299c65cc5e55b6214d479c6c2ec9a/supervisor-3.3.3.tar.gz

#解压
tar -zxvf supervisor-3.3.3.tar.gz

#执行安装
cd /home/supervisor/supervisor-3.3.3
python setup.py install

此时发现报错:

原因:没有安装python的管理工具

那就下载安装一个咯:

wget https://pypi.io/packages/source/s/setuptools/setuptools-33.1.1.zip

unzip setuptools-33.1.1.zip
cd setuptools-33.1.1
python setup.py install
#返回
supervisor-3.3.3
cd /home/supervisor/supervisor-3.3.3
python setup.py install
 

生成配置文件

cd /home/supervisor/supervisor-3.3.3
#生成配置文件
echo_supervisord_conf > /etc/supervisord.conf

#按需求修改配置文件


[inet_http_server]         ; inet (TCP) server disabled by default
port=192.168.96.26:9001        ; ip_address:port specifier, *:port for all iface
username=user              ; default is no username (open server)
password=123               ; default is no password (open server)


[include]
;files = relative/directory/*.ini
files = /home/supervisor/conf*.conf

#说明:目前我单独新建的配置文件放在/home/supervisor/conf目录下。

启动supervisor:

cd /home/supervisor/supervisor-3.3.3

supervisord -c /etc/supervisord.conf

验证是否安装成功

http://192.168.96.26:9001/

user/123

 

注意事项:

1、supervisor启动命令:---使用这个命令时,最后确保python相关进程已关闭

  supervisorctl -c /etc/supervisor/supervisord.conf

2、使用如下命令载入新的 工程配置:

  supervisorctl reload

3、supervisor 比较适合监控业务应用,且只能监控前台程序,php fork方式实现的daemon不能用它监控,否则supervisor> status 会提示:BACKOFF  Exited too quickly (process log may have details)

4、2.两个命令

supervisord : supervisor的服务器端部分,用于supervisor启动

supervisorctl:启动supervisor的命令行窗口,在该命令行中可执行start、stop、status、reload等操作。

如:

(1)重新加载:supervisorctl reload。

(2)停止进程:supervisorctl stop hello---hello为进程名(工程名不要后缀)

 

我的疑问:

1、如何监控一个java进程??????

2、如添加非本机的php进程监控?

遇到的问题:问题1 2 其实可解决可不解决。

1、添加了工程,重启supervisor,执行命令:supervisorctl -c /etc/supervisor/supervisord.conf:

提示:Unlinking stale socket /tmp/supervisor.sock

解决:这个时候需要安装python的功能组件python-meld3,安装的时候需要先停掉python进程,不然会安装失败

2、在问题1 之后,通过命令 yum install python-meld3时又发现:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again。

原因是:无法加载源(下不到python-meld3)。

解决:修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉,然后在重新执行安装命令

 

3、添加了配置文件:

[program:kmplatform-CustomerPalshipFind]
command=nohup /usr/local/php/bin/php -c /usr/local/php/lib/php.ini /usr/local/nginx/kmplatform/artisan Worker:CustomerPalshipFind ; the program (relative uses PATH, can take args)
process_name=%(program_name)s_%(process_num)02d ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; whether/when to restart (default: unexpected)

发现重启supervisor后,一直异常backoff,查看tail -f  日志显示的是“command  too  many aguments,expected agument ...”

网上一直搜不到原因。

自己怀疑是执行命令错误。于是尝试了下,单独执行命令:

nohup /usr/local/php/bin/php -c /usr/local/php/lib/php.ini /usr/local/nginx/kmplatform/artisan Worker:CustomerPalshipFind

然而并没有问题。

想想是不是命令行+注释太长了,于是把末尾的注释给去掉; the program (relative uses PATH, can take args)

结果,居然完美的解决了!!!

 5、问题及解决方案

http://blog.csdn.net/wawa8899/article/details/52743861

6、问题及解决方案

https://www.jianshu.com/p/3fe84e259ef9

 

posted @ 2017-09-10 18:23  平原少年  阅读(358)  评论(0编辑  收藏  举报