supervisord使用

安装supervisor

#centos
yum install supervisor



配置目录地址
/etc/supervisord.d   #目录存放任务配置文件
/etc/supervisord.conf  #目录存放supervisor配置文件

运行supervisor服务

systemctl start supervisord

可以使用 supervisorctl命令在控制面板查看当前运行的任务

#  控制面板操作
supervisor> restart app   # 重启任务  app任务名, 任务文件.ini中设置的  [program:app]
supervisor> stop app   # 停止任务
supervisor> update app # 启动app
supervisor> status app  # 查看状态
supervisor> exit  # 退出
supervisor> help  # 一共这么多命令

default commands (type help <topic>):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update 
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

配置文件说明

[program:cat]                 # 名为cat的program配置如下
command=/bin/cat              # 程序启动时的命令
process_name=%(program_name)s # 进程名称
numprocs=1                    # 开几个进程处理
numprocs_start=0              # 用于计算 numprocs 开始的数字的整数偏移量
directory=/tmp                # 一个文件路径,表示在执行子代之前 supervisord 应暂时chdir的目录。
umask=022                     # 进程新建文件、目录的权限会受到umask的影响,umask表示要减掉的权限(default None)
priority=999                  # 程序在启动和关闭顺序中的相对优先级。
autostart=true                # 如果为true,则在启动supervisord时,此程序将自动启动,默认为true
autorestart=unexpected        # # 指定如果 supervisord 处于 RUNNING 状态时,如果它退出,则 supervisord 是否应自动重新启动该进程
startsecs=10                  # 启动后,程序需要保持运行以考虑启动成功(将进程从 STARTING 状态移动到 RUNNING 状态)的总秒数
startretries=3                # 在放弃并将过程置于 FATAL 状态之前,尝试启动程序时,supervisord 将允许的串行故障尝试次数
exitcodes=0,2                 # 与 autorestart 一起使用的此程序的“预期”退出代码列表。
stopsignal=TERM               # 请求停止时用于终止程序的信号
stopwaitsecs=10               # 在程序发送一个停止信号后等待操作系统将SIGCHLD返回到 supervisord 的秒数
stopasgroup=false             # 如果为真,则该标志使管理程序向整个进程组发送停止信号,并暗示 killasgroup 为真。
killasgroup=false             # 如果为true,当使用发送SIGKILL到程序终止它发送它到整个进程组,照顾它的孩子,以及有用的,例如使用 multiprocessing 的Python程序。  
user=chrism                   # 指示 supervisord 将此UNIX用户帐户用作运行程序的帐户。
redirect_stderr=false         # 如果为true,则导致进程的stderr输出在其stdout文件描述符上被发送回 supervisord  
stdout_logfile=/a/path        # 将进程stdout输出放在此文件中(如果redirect_stderr为true,还将stderr输出放在此文件中)
stdout_logfile_maxbytes=1MB   # stdout_logfile 在旋转之前可能消耗的最大字节数(可以在值中使用类似“KB”,“MB”和“GB”的后缀乘法器)。将此值设置为0表示无限日志大小
stdout_logfile_backups=10     # 由进程标准输出日志文件轮换产生的 stdout_logfile 备份的数量。如果设置为0,将不保留备份。
stdout_capture_maxbytes=1MB   # 当进程处于“stdout捕获模式”(见 捕获模式)时,写入捕获FIFO的最大字节数,为0,则过程捕获模式将关闭。
stdout_events_enabled=false   # 如果为true,则当进程写入其stdout文件描述符时,将发出PROCESS_LOG_STDOUT事件
stderr_logfile=/a/path        # 将过程stderr输出放在此文件中,除非 redirect_stderr 为true
stderr_logfile_maxbytes=1MB   # stderr_logfile 的日志文件轮换前的最大字节数
stderr_logfile_backups=10     # 由进程stderr日志文件轮换导致的备份数
stderr_capture_maxbytes=1MB   # 当进程处于“stderr捕获模式”(见 捕获模式)时,写入捕获FIFO的最大字节数
stderr_events_enabled=false   # 如果为true,则当进程写入其stderr文件描述符时,将发出PROCESS_LOG_STDERR事件
environment=A="1",B="2"       # 将被放置在子进程的环境中的 KEY="val",KEY2="val2" 形式的键/值对的列表。
serverurl=AUTO                # 在环境中传递到子进程进程的URL作为 SUPERVISOR_SERVER_URL

process_name

[program:cat] 
process_name=%(program_name)s		# 任务名为:cat		   关闭的命令为:supervisorctl stop cat
process_name=%(program_name)s-1		# 任务名为:cat:cat-1    关闭的命令为:supervisorctl stop cat:cat-1

numprocs

process_name=%(program_name)s
numprocs=1


#若numprocs > 1时,若  process_name=%(program_name)s  时报错。
Error: %(process_num) must be present within process_name when numprocs > 1
process_name=%(program_name)s_%(process_num)02d              ;当同一个脚本,希望启动多个守护进程时,多进程名称肯定不能相同,匹配多个
numprocs=4 

startsecs

;程序必须保持运行的秒数(def 1)
startsecs=1

#有些任务处理的较快,默认为程序必须保持1秒时,则会启动不起来。此时,可以将startsecs=0

redirect_stderr

#把stderr重定向到stdout(def false)
redirect_stderr=true

如果选false,则会使用stderr_logfile的日志文件记录

四、常用的事件类型
Event 解释
PROCESS_STATE 进程状态发生改变
PROCESS_STATE_STARTING 进程状态从其他状态转换为正在启动(Supervisord的配置项中有startsecs配置项,是指程序启动时需要程序至少稳定运行x秒才认为程序运行正常,在这x秒中程序状态为正在启动)
PROCESS_STATE_RUNNING 进程从正在启动状态转换为正在运行状态
PROCESS_STATE_BACKOFF 进程从正在启动状态转换为启动失败状态,Supervisor 正在重启该进程
PROCESS_STATE_STOPPING 进程从正在运行状态或正在启动状态转换为正在停止状态
PROCESS_STATE_EXITED 进程从正在运行状态转换为退出状态,expected 退出码,如果是 0 表示进程异常退出,1 表示进程正常退出。
PROCESS_STATE_STOPPED 进程从正在停止状态转换为已停止状态
PROCESS_STATE_FATAL 进程从启动失败状态(BACKOFF)转换为失败状态(FATAL). 意味着 startretries 尝试次数已达上限,Supervisor 已放弃重启该进程。
PROCESS_LOG 进程产生日志输出,被管理的进程需配置,stdout_events_enabled=true or stderr_events_enabled=true 这个事件通知才会生效。
PROCESS_LOG_STDOUT 进程产生标准输出,被管理的进程需配置,stdout_events_enabled=true
PROCESS_LOG_STDERR 进程产生错误输出,被管理的进程需配置,stderr_events_enabled=true

相关文章:

superviso配合laravel的使用:https://learnku.com/docs/laravel/5.8/queues/3923#supervisor-configuration

supervisor 安装使用详解:http://www.w3capi.com/cms/content/id/57/cid/26.html

Supervisor使用详解:https://www.jianshu.com/p/0b9054b33db3

Supervisor Event Listener 任务监控与告警:https://blog.youkuaiyun.com/weixin_45032957/article/details/100184735

supervisor详解-苏坡外泽:https://blog.youkuaiyun.com/weixin_37008947/article/details/108107216

Supervisor 管理进程服务重启报警:https://blog.youkuaiyun.com/fgf00/article/details/104579788

supervisor官方文档:http://supervisord.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值