Centos7下supervisor浅入浅出-以kafka为例

部署运行你感兴趣的模型镜像

前言

supervisor是一个Linux/Unix系统上的进程监控工具,supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。不过同daemontools一样,它不能监控daemon进程它不能监控daemon进程,,它不能监控daemon进程。

有时候程序老是挂(例如kafka,莫名其妙就自杀,日志还只有一个timeout),通过supervisor来检测进程状态,自启动进程

安装

yum -y install supervisor

配置文件详细

[program:aa]
command=python /root/temp/test_http.py 9999    ; 被监控的进程路径
directory=/root/temp                ; 执行前要不要先cd到目录去,一般不用可以注释
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启。。当然要选上了
startsecs                     ; 程序启动后等待多长时间后才认为程序启动成功
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

启动

#查看当前supervisord是否正常运行
ps -ef|grep supervisord
#若未启动,通过手动启动即可
supervisord -c /etc/supervisord.conf 

命令

#查看所有进程状态
supervisorctl status
#停止program aa
supervisorctl stop aa
#启动program aa
supervisorctl start aa
#重启program aa
supervisorctl restart aa
#重载修改后的配置文件
supervisorctl update
#重新启动配置中的所有program(如果你有通过supervisoer守护的程序正在运行的时候,请慎重执行重启命令,否则会导致当前业务暂时中断)
supervisorctl reload

案例

以kafka为例,启动完成后不启动zookeeper和kafka

Centos7下kafka安装

配置supervisor-zookeeper.conf

vim /etc/supervisord.d/zookeeper.conf

[program:zookeeper]
command =/data/kafka/bin/zookeeper-server-start.sh /data/kafka/config/zookeeper.properties
autostart = true
startsecs = 15
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /data/kafka/supervisor-zk.log

保存退出

配置supervisor-kafka.conf

vim /etc/supervisord.d/kafka.conf

[program:kafka]
command =/data/kafka/bin/kafka-server-start.sh /data/kafka/config/server.properties
autostart = true
startsecs = 15
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /data/kafka/supervisor-kafka.log

保存退出

重载supervisor

#重载配置(一般到这一步已经会自动启动了)

supervisorctl update

#重新启动配置中的所有program(如果你有通过supervisoer守护的程序正在运行的时候,请慎重执行重启命令,否则会导致当前业务暂时中断)

supervisorctl reload

问题整理

问题①

如果之前通过daemon启动了配置中的进程的话,请先手动kill,否则supervisoer会在重载配置 重新启动的时候报错。

问题②

yum 安装的supervisor启动报错

/usr/lib/python2.7/site-packages/supervisor/options.py:383: PkgResourcesDeprecationWarning: Parameters to load are deprecated.  Call .resolve and .require separately.
  return pkg_resources.EntryPoint.parse("x="+spec).load(False)
Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h

我是这么解决的

yum remove -r supervisor
easy_install supervisor
echo_supervisord_conf > /etc/supervisord.conf
vim /etc/supervisord.conf
取消注释
[include]
;files = relative/directory/*.ini
files = /etc/supervisord.d/*.conf

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大锅霍皮久

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值