首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用supervisor管理Linux的应用服务

使用supervisor管理Linux的应用服务

作者头像
xjjdog
发布2019-09-24 17:16:33
6620
发布2019-09-24 17:16:33
举报
文章被收录于专栏:架构专题架构专题架构专题

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的行为,为了管理我们的程序,还需要创建一批配置文件。每一个配置文件,对应一个外部程序的管理。

例子:

[root@s17 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=debug
directory   = /root/jaeger-1.5.0-linux-amd64
user        = root
startsecs   = 3redirect_stderr         = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups  = 10
stdout_logfile          = agent.log

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


管理

直接运行supervisorctl即可

[root@s17 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 <topic>):
=====================================
add    exit      open  reload  restart   start   tail
avail  fg        pid   remove  shutdown  status  update
clear  maintail  quit  reread  signal    stop    versionsupervisor>

注意:supervisor的启动要和应用程序使用相同的用户和权限(程序自己控制的除外),否则会产生死锁问题。遇到这种情况,需要手动kill进程,修正权限后使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小姐姐味道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 启动
  • 主配置文件
  • 程序配置实例
  • 管理
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档