supervisord linux进程管理程序

Supervisord 是用 Python 实现的一款非常实用的进程管理工具,supervisord 还要求管理的程序是非 daemon程序,supervisord 会帮你把它转成 daemon 程序,因此如果用 supervisord 来管理 nginx 的话,必须在nginx 的配置文件里添加一行设置 daemon off 让 nginx 以非 daemon 方式启动。

采用Supervisord管理java程序及微服务模块等蛮方便的,也可以查看java程序的日志,感觉还不错,总结一下。

1、安装:

yum install epel-release -y
yum install supervisor -y

  如果直接执行yum install supervisor找不到库,就先执行下yum install epel-release 试试

2、配置:

安装完成后找到配置文件:

/etc/supervisord.conf

 修改配置文件,默认web管理为关闭状态,取消注释开启Web管理,并配置用户名及密码:

 监听ip可以指定ip也可配置成所有(默认使用本机ip): *:9001 或 0.0.0.0:9001

 

 3、定义托管程序:

  进入目录:/etc/supervisord.d 新建六个ini文件(按照不同模块来算,有几个需要管理的模块就建立几个,我这里有六个微服务所以要建立六个配置文件)

 

 例如:service_cliqr_jar.ini 中的内容如下:这样编写启动脚本和日志输入路径

[program:quark_admin_jar]
command=java -Xms16m -Xmx64m -jar quark_admin_jar/quark-admin.jar
directory=/opt/bbsapp #执行命令的路径
user=root #  执行命令的用户
autorestart=true  # 出错后自动重启
redirect_stderr=true  # 错误日志重定向
stdout_logfile=/opt/bbsapp/Log/bbsapp.log  # 日志的路径,需要提前手动创建log目录
loglevel=info  # 日志的级别
 

  4、启动服务:

systemctl start supervisord

 服务启动后,你的程序也就启动了【默认是,也可以改成不启动】。

5、在Web页面上查看:

  在外网输入http://<访问ip>:9001即可进行Web端的程序管理,可以对相关服务进行刷新、重启、查看日志等,免去登录到服务器操作。直接在web上进行管理

 另附一篇配置文件说明:

 //设置HTTP服务器监听的UNIX domain socket
[unix_http_server]
//指向UNIX domain socket的位置,supervisorctl和supervisord通过这个socket文件进行通信
file=/opt/super/supervisor.sock   ; 

//侦听在TCP上的socket,WebServer和远程的supervisorctl都要用,默认不开启
[inet_http_server]  
//侦听的IP和端口,侦听所有IP用:9001或*:9001      
port=127.0.0.1:9001; 

//定义supervisord这个服务端进程的一些参数,不设置supervisor无法正常运行
[supervisord]
//supervisord进程日志文件,默认在当前目录下的supervisord.log中
logfile=/opt/super/supervisord.log 
//日志文件的最大值,如果超过阈值则重新创建一个日志文件,0表示不限制
logfile_maxbytes=50MB
//日志文件上限,超过则会覆盖旧的日志文件,0表示不限制        
logfile_backups=10
//日志等级,默认是INFO级别
loglevel=debug    
//suerpvisord的pid文件位置,默认为当前文件夹的supervisord.pid
pidfile=/opt/super/supervisord.pid 
//supervisord进程是否为守护进程,true则表示supervisord为前台进程,默认的false则表示进程为后台守护进程
nodaemon=false              
//最少系统空闲的文件描述符,低于这个值supervisor将不会启动
minfds=1024    
//最小可用的进程描述符,低于这个值supervisor也将不会正常启动
minprocs=200

//这个选项是给XML_RPC用的,当然你如果想使用supervisord或者webserver这
//个选项必须要开启的
[rpcinterface:supervisor]
//XML_RPC的接口工厂配置
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

//supervisorctl相关的一些配置文件
[supervisorctl]
//supervisorctl本地连接supervisord的时候,本地UNIX socket地址
serverurl=unix:///opt/super/supervisor.sock 
//这个是supervisorctl远程连接supervisord的时候,用到的TCPsocket路径
;serverurl=http://127.0.0.1:9001


//新建的子进程管理,进行进程的重启、停止等操作的维护,通过test-server来定位该配置信息并进行操作
[program:test-server]
//进程操作执行命令
command=java -Xmx900m -jar data-iPortal-server.jar
//进程执行前,会切换到这个目录下执行
directory=/opt/test-server/
//项目启动优先级,数字越大,优先级越高
priority=1
//启动的进程个数
numprocs=1
//自动启动,随着supervisord的启动而启动
autostart=true
//自动重启,当启动失败的时候自动重启
autorestart=true
//启动失败时重试次数上限
startretries=10
//杀死进程的信号量:kill -9:KILL; kill -2:INT; kill -15:TERM
stopsignal=INT
//停止进程的重试次数上限
stopwaitsecs=10
//重定向stderr到stdout,stderr的日志合并到stdout中,默认false
redirect_stderr=true
//子进程的stdout的日志路径,可以指定路径,AUTO,none等三个选项。
//设置为none的话,将没有日志产生。设置为AUTO的话,将随机找一个地方
//生成日志文件,而且当supervisord重新启动的时候,以前的日志文件会被
//清空。当redirect_stderr=true的时候,sterr也会写进这个日志文件
stdout_logfile=/opt/logs/test-server.out.log
//子进程的stderr日志路径,可以指定路径,AUTO,none等三个选项
stderr_logfile=/opt/logs/test-server.err.log

  

posted on 2019-09-20 13:46  OceanWang  阅读(295)  评论(0编辑  收藏  举报

导航