Linux安装
yum install -y epel-release
yum install -y supervisor
启动服务:systemctl start supervisord.service
设置开启启动:systemctl enable supervisord
验证是否为开机启动:systemctl is-enabled supervisord
默认配置文件:/etc/supervisord.conf
进程管理配置文件放到:/etc/supervisord.d/目录下即可
配置文件中 /etc/supervisord.conf 注意include的文件夹以及后缀
[include]
files = supervisord.d/*.ini
指定配置启动服务
supervisord -c /etc/supervisord.conf
[start|stop|restart][program-name|all]
重启:systemctl restart supervisord
编辑/etc/supervisord.conf 开启界面
[inet_http_server] ; HTTP服务器,提供web管理界面
port=0.0.0.0:9001 ; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
username=user ; 登录管理后台的用户名
password=123 ; 登录管理后台的密码
开启密码后:
supervisorctl -c /etc/supervisord.conf -u user -p 123 restart
启动相关进程
supervisorctl start swws #启动swws进程
supervisorctl restart swws #重启
supervisorctl stop swws #停止
supervisor命令说明
supervisorctl status //查看所有进程的状态
supervisorctl -u user -p 123 status
supervisorctl stop <name>|all //停止<name>或all停止所有supervisor进程
supervisorctl start <name>|all //启动<name>或all启动所有supervisor进程,可用通配符*。es*表示es开头的supervisor进程
supervisorctl restart //重启
supervisorctl update //配置文件修改后使用该命令加载新的配置
supervisorctl reread //重载配置文件
supervisorctl reload //重新启动配置中的所有程序
supervisorctl -u user -p 123 reload
supervisorctl shutdown //关闭所有任务
安装邮件服务
yum install -y mailx
yum install -y sendmail
pip install superlance
启动服务:
systemctl restart sendmail.service
vim /etc/mail.rc #在末尾行插入参数
# 发件人邮箱
set from=595701048@qq.com
# smtp服务
set smtp=smtp.qq.com
# 用户名
set smtp-auth-user=595701048@qq.com
# 密码
set smtp-auth-password=XXXXXXXXXXXXX
set ssl-verify=login
测试:echo '邮件内容'| /usr/bin/mail -s '邮件标题' 595701048@qq.com
触发事件集合
#PROCESS_STATE 进程状态发生改变
#PROCESS_STATE_STARTING 进程状态从其他状态转换为正在启动(Supervisord的配置项中有startsecs配置项, 是指程序启动时需要程序至少稳定运行x秒才认为程序运行正常,在这x秒中程序状态为正在启动)
#PROCESS_STATE_RUNNING 进程状态由正在启动转换为正在运行
#PROCESS_STATE_BACKOFF 进程状态由正在启动转换为失败
#PROCESS_STATE_STOPPING 进程状态由正在运行转换为正在停止
#PROCESS_STATE_EXITED 进程状态由正在运行转换为退出
#PROCESS_STATE_STOPPED 进程状态由正在停止转换为已经停止(exited和stopped的区别是exited是程序自行退出,而stopped为人为控制其退出)
#PROCESS_STATE_FATAL 进程状态由正在运行转换为失败
#PROCESS_STATE_UNKNOWN 未知的进程状态
#REMOTE_COMMUNICATION 使用Supervisord的RPC接口与Supervisord进行通信
#PROCESS_LOG 进程产生日志输出,包括标准输出和标准错误输出
#PROCESS_LOG_STDOUT 进程产生标准输出
#PROCESS_LOG_STDERR 进程产生标准错误输出
#PROCESS_COMMUNICATION 进程的日志输出包含 和
#PROCESS_COMMUNICATION_STDOUT 进程的标准输出包含 和
#PROCESS_COMMUNICATION_STDERR 进程的标准错误输出包含 和
#SUPERVISOR_STATE_CHANGE_RUNNING Supervisord 启动
#SUPERVISOR_STATE_CHANGE_STOPPING Supervisord 停止
#TICK_5 每隔5秒触发
#TICK_60 每隔60秒触发
#TICK_3600 每隔3600触发
#PROCESS_GROUP Supervisord的进程组发生变化
#PROCESS_GROUP_ADDED 新增了Supervisord的进程组
#PROCESS_GROUP_REMOVED 删除了Supervisord的进程组
superlance的组件
superlance是一系列命令行工具的集合,其包括以下这些命令:
httpok
通过定时对一个HTTP接口进行GET请求,根据请求是否成功来判定一个进程是否处于正常状态,如果不正常则对进程进行重启。
crashmail
当一个进程意外退出时,发送邮件告警。
memmon
当一个进程的内存占用超过了设定阈值时,发送邮件告警。
crashmailbatch
类似于crashmail的告警,但是一段时间内的邮件将会被合成起来发送,以避免邮件轰炸。
fatalmailbatch
当一个进程没有成功启动多次后会进入FATAL状态,此时发送邮件告警。与crashmailbatch一样会进行合成报警。
crashsms
当一个进程意外退出时发送短信告警,这个短信也是通过email网关来发送的。
添加.ini文件
进入/etc/supervisord.d文件,添加.ini文件对进程配置
vim swws.ini
#项目名 (需要与文件名字一样)
[program:swws]
#脚本目录
directory=/home/wwwroot/swws
#脚本执行命令
command=php ws.php
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#是否在挂了之后重启,意外关闭后会重启,比如kill掉!
autorestart=true
#启动尝试次数
startretries=3
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
startsecs=1
#脚本运行的用户身份
user=root
#日志输出
stderr_logfile=/home/logs/swws.log
stdout_logfile=/home/logs/swws.log
#把stderr重定向到stdout,默认 false
redirect_stderr = true
#stdout日志文件大小,默认 20MB
stdout_logfile_maxbytes=20
#stdout日志文件备份数
stdout_logfile_backups=20
#邮件通知
[eventlistener:swws_monitor]
command=crashmail -p swws -s "echo 'swws crashed!!'| /usr/bin/mail -s 'swws服务宕机' 595701048@qq.com"
events=PROCESS_STATE_EXITED
redirect_stderr=false
-p:指定一个主管process_name。