supervisor学习笔记

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

官方手册:http://www.supervisord.org/

 

安装 supervisor可以采用快捷的安装方式如下:

yum install python-setuptools -y

easy-install supervisor 或者pip install supervisor

 

 

下面是编译安装的步骤:

CentOS6.7为例,原始安装包存放在/home/tools/supervisor/src下。

 

下面是一个自动安装的脚本:

文件目录结构如下:

├── install.sh

└── src

    └── supervisor-3.3.1.tar.gz

install.sh内容如下:

#!/bin/bash

#auto install supervisor-3.3.1

 

yum install python-setuptools -y

tar xf src/supervisor-3.3.1.tar.gz  -C src/

cd src/supervisor-3.3.1

python setup.py install

echo_supervisord_conf > /etc/supervisord.conf

if[ $? = 0 ];then

    echo -e "---------- $(date +"%F%T") installed supervisor Success. --------------\n" | tee -a../../install.log

else

    echo -e "---------- $(date +"%F%T") installed supervisor Failed. --------------\n" | tee -a ../../install.log

fi

 

简单的配置supervisor

vim  /etc/supervisord.conf 在最后添加上如下的内容:

[program:redis]

;注意:使用supervisor 来监控redis自启动的话,必须设置为前台redis运行,不然会报错。

command=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

autorstart=true

autorestart=true

stdout_logfile=/tmp/supervisor.log

 

[inet_http_server]                                                                                                           

;warning:itis better add one iptables rule to deny others access 9001 port

port=*:9001

username=root

password=123456

 

 

执行 supervisord -c /etc/supervisord.conf 即可启动守护进程

 

执行:supervisorctl status 即可列出服务的状态。

redis             RUNNING   pid 19135, uptime 0:03:42

 

注意:

    supervisor 比较适合监控业务应用,且只能监控前台程序(进程必须以非daemon方式运行)php fork方式实现的daemon不能用它监控,

    否则supervisor> status 会提示:BACKOFF  Exited too quickly(process log may have details)

    经过适当的修改后,redisnginxmysqltomcat都可以使用supervisor来监控。

 

注意:

    每次修改完/etc/supervisord.conf ,需要执行supervisorctl reload来重启supervisord进程,不然修改的配置无法生效。

 

 

    启动supervisord

       supervisord -c /etc/supervisord.conf

   

    关闭supervisord

       supervisorctl shutdown

   

    重新载入配置

       supervisorctl reload

 

supervisor组件说明:

    supervisord

       supervisordsupervisor的服务端程序。

       干的活:启动supervisor程序自身,启动supervisor管理的子进程,响应来自clients的请求,重启闪退或异常退出的子进程,把子进程的stderrstdout记录到日志文件中,生成和处理Event

   

    supervisorctl

       这东西还是有点用的,如果说supervisordsupervisor的服务端程序,那么supervisorctl就是client端程序了。

       supervisorctl有一个类型shell的命令行界面,我们可以利用它来查看子进程状态,启动/停止/重启子进程,获取running子进程的列表等等。。。

       最牛逼的一点是,supervisorctl不仅可以连接到本机上的supervisord,还可以连接到远程的supervisord,当然在本机上面是通过UNIX socket连接的。

       supervisorctlsupervisord之间的通信,是通过xml_rpc完成的,远程是通过TCP socket连接的。

       supervisorctlsupervisord之间的通信,是通过xml_rpc完成的。相应的配置在[supervisorctl]块里面

   

    Web Server

       Web Server主要可以在界面上管理进程,Web Server其实是通过XML_RPC来实现的,可以向supervisor请求数据,也可以控制supervisor及子进程。配置在[inet_http_server]块里面

   

    XML_RPC接口

       这个就是远程调用的,上面的supervisorctlWeb Server就是它弄的



#####下面是几个测试没问题的样例,自己测试supervisor启动 redis mysqld nginx tomcat都没问题。

[inet_http_server]

;注意:需要配置防火墙只允许公司的IP访问9001端口

port=*:9001

username=sup_admin

password=flzxsqc@!@#$

 

[program:redis]

;注意:使用 supervisor 来监控redis自启动的话,必须设置daemonize no,不然会报错。

command=/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.conf

autorstart=true

autorestart=true

stdout_logfile=/tmp/supervisor_redis.log

 

[program:mariadb]

command=/usr/local/mariadb/bin/mysqld --basedir=/usr/local/mariadb --datadir=/data/ mysql--plugin-dir=/usr/local/mariadb/lib/plugin --user=mariadb --log-error=/data/mysql/mariadb.err --pid-file=/data/mysql/mariadb.pid --socket=/tmp/mysql.sock --port=3306

autostart=true

autorestart=true

stdout_logfile=/tmp/supervisor_mariadb.log

 

[program:nginx]

;注意:使用 supervisor 来监控nginx自启动的话,必须修改nginx.conf 在前几行添加上daemon off;

command=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

autostart=true

autorestart=true

sutdout_logfile=/tmp/supervisor_nginx.log

 

[program:tomcat7]

command=/usr/local/tomcat/bin/catalina.sh run

autorstart=true

user=webserver

autorestart=true

stdout_logfile=/tmp/supervisor_tomcat7.log



做到这里,还要给supervisor添加个开机自启动啊。

各种自启动脚本的地址:https://github.com/Supervisor/initscripts


下面是一个自己写的功能简陋的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
# chkconfig: 345 83 04
# description: Supervisor start stop script
start() {
/usr/bin/supervisord  -c  /etc/supervisord .conf
}
stop() {
/usr/bin/supervisorctl  shutdown
}
restart() {
stop
start
}
reload() {
/usr/bin/supervisorctl  reload
}
case  "$1"  in
     start)
         start
         ;;
     stop)
         stop
         ;;
     restart)
         restart
         ;;
     reload)
             reload
             ;;
     *)
         echo  $ "Usage: $0 {start|stop|restart|reload}"
esac


其它的可以参考下面2篇文章:

http://lixcto.blog.51cto.com/4834175/1539136 

http://www.phpddt.com/php/supervisor.html











本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1857179,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
数据安全/隐私保护 UED 异构计算
【大模型私有化部署要花多少钱?】一张图看懂你的钱用在哪
本文探讨了高性价比实现DeepSeek大模型私有化部署的方法,分为两部分: 一是定义大模型性能指标,包括系统级(吞吐量、并发数)与用户体验级(首token生成时间、单token生成时间)指标,并通过roofline模型分析性能瓶颈; 二是评估私有化部署成本,对比不同硬件(如H20和4090)及模型选择,结合业务需求优化资源配置。适合关注数据安全与成本效益的企业参考。
【大模型私有化部署要花多少钱?】一张图看懂你的钱用在哪
|
自然语言处理 开发者 Python
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
|
JavaScript 小程序 前端开发
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
611 0
|
jenkins 持续交付 开发工具
gitlab远程库代码版本回滚方法
gitlab远程库代码版本回滚方法
873 1
ASCII编码字符数量
ASCII编码字符数量
1466 2
|
JSON 前端开发 Java
深入解析SpringBoot的请求响应机制
深入解析SpringBoot的请求响应机制
1103 1
|
机器学习/深度学习 传感器 算法
智慧交通day03-车道线检测实现02-2:张氏标定法+双目标定
该方法介于传统标定法和自标定法之间,既克服了传统标定法需要的高精度三维标定物的缺点,又解决了自标定法鲁棒性差的难题。标定过程不需要特殊的标定物,只需使用一张打印出来的棋盘格,并从不同方向拍摄几组图片即可,不仅实用灵活方便,而且精度很高,鲁棒性好。因此很快被全世界广泛采用,极大的促进了三维计算机视觉从实验室走向真实世界的进程。
864 0
|
Cloud Native Dubbo Java
Spring Cloud Alibaba遇到的版本兼容问题
Spring Cloud Alibaba遇到的版本兼容问题
1242 0
|
自然语言处理 前端开发 Java
Spring Boot MVC请求参数通用校验及国际化支持
目录 一、Validation及国际化配置 1、添加依赖 2、校验失败提示消息国际化配置 3、application.properties 4、国际化资源文件 二、代码演示 1、全局异常处理 2、MessageUtils工具类 3、响应VO 2、测试Controller和请求DTO 3、多语言属性文件 4、测试用例 (1)简单对象UserReqDTO测试 (2)包含List集合对象的ChargeRuleReqDTO测试
Spring Boot MVC请求参数通用校验及国际化支持
十进制转二进制的方法 + 写代码实现[C/C++]
整数十进制转二进制转换方法 + 如何用代码实现为主要内容 方法1:除二取余法 十进制数除2得商取余法:对十进制进行除法运算,十进制除以2可以得到一个商和余数 方法2:按权相加法 ......
1394 1

热门文章

最新文章