天天看点

supervisor 重启_使用supervisor管理Linux的应用服务安装启动主配置文件程序配置实例管理

supervisor 重启_使用supervisor管理Linux的应用服务安装启动主配置文件程序配置实例管理

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

supervisor 是一个Python程序,采用守护进程的方式,对单台机器上的程序进行启停管理、自动重启等。如果你想保证的的程序异常推出后能够自动启动,supervisor就是你的一个选择

安装

pip install supervisor
           

安装后会产生两个可执行程序

  • supervisortd:守护进程服务
  • supervisorctl:客户端,用于命令行交互

启动

建议通过指定配置文件的方式进行启动

supervisord -c /etc/supervisord/supervisord.conf
           

主配置文件

[unix_http_server]file=/var/run/supervisor.sock ; (the path to the socket file)chmod=0700 ; sockef file mode (default 0700)[supervisord]logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)environment=SPAN_STORAGE_TYPE="elasticsearch"[supervisorctl]serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket[include]files = /etc/supervisord/conf.d/*.conf[inet_http_server]port = 127.0.0.1:9001[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
           

我们会将启动管理的程序放在/etc/supervisord/conf.d/*.conf目录下(可自定义)

environment 可以追加一些启动环境的环境变量

注意下面的inet_http_server一定要加上,否则,你的客户端控制程序就需要链接socket文件进行启动,而不是默认的端口。

程序配置实例

上面的配置文件只是为了控制supervioed的行为,为了管理我们的程序,还需要创建一批配置文件。每一个配置文件,对应一个外部程序的管理。

例子:

[[email protected] conf.d]# cat agent.conf[program:agent]command = /root/jaeger-1.5.0-linux-amd64/jaeger-agent --collector.host-port=192.168.3.237:14267 --discovery.min-peers=1 --log-level=debugdirectory = /root/jaeger-1.5.0-linux-amd64user = rootstartsecs = 3redirect_stderr = truestdout_logfile_maxbytes = 50MBstdout_logfile_backups = 10stdout_logfile = agent.log
           

注意日志终端是直接阻塞在supervisor上的,所以不需要使用nohup之类的语句

管理

直接运行supervisorctl即可

[[email protected] conf.d]# supervisorctlagent RUNNING pid 1656, uptime 7 days, 1:28:47collect RUNNING pid 2663, uptime 7 days, 0:35:11doc RUNNING pid 1657, uptime 7 days, 1:28:47query RUNNING pid 2595, uptime 7 days, 1:24:32
           

可以看到提供了丰富的指令

supervisor> helpdefault commands (type help ):=====================================add exit open reload restart start tailavail fg pid remove shutdown status updateclear maintail quit reread signal stop versionsupervisor>
           
注意:supervisor的启动要和应用程序使用相同的用户和权限(程序自己控制的除外),否则会产生死锁问题。遇到这种情况,需要手动kill进程,修正权限后使用。
作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,​进一步交流。​
supervisor 重启_使用supervisor管理Linux的应用服务安装启动主配置文件程序配置实例管理