是否经常会遇到服务器的某个进程挂了而导致停止服务?是否遇到自己写的监控工具工作也并非稳定?
好了,可以试试supervisor这款由python编写的监控神器。
此款神器可以配置的服务、进程进行监控,当被监控的进程挂掉之后,supervisor可以迅速将进程拉起,从而使得服务可以继续提供。而且,将supervisor设置为开机启动之后,supervisor也可以在开始后,自动启动配置的监控项。
环境:
Centos7
一、安装supervisor
由于supervisor使用Python编写,所以需要先安装python环境,方法不再赘述。
1、通过源安装
yum install epel-release -y yum install supervisor
2、通过python包管理安装
easy_install supervisor
二、配置supervisor
1、生成配置文件
$ echo_supervisord_conf > /etc/supervisord.conf
2、编译配置文件
vim /etc/supervisord.conf
修改末尾如下:
[include] files = /etc/supervisor/conf.d/*.ini
supervisor会扫描/etc/supervisor/conf.d/目录下的*.ini配置文件
3、添加被监测项
[program:druid_historical] command=java -V directory=/ user=root autostart=true # 在 supervisord 启动的时候也自动启动 autorestart=true # 启动 5 秒后没有异常退出,就当作已经正常启动了 stopsignal=KILL killasgroup=true stopasgroup=true # logfile=/var/log/supervisor/druid.log # log_stderr=true # redirect_stderr=true # stdout_logfile=/var/log/supervisor/druid.log # stdout_logfile_maxbytes=5MB # stdout_logfile_backups=3
program:后为被检测项的名称
command后为被监控项的启动命令
4、应用配置文件
supervisord -c /etc/supervisord.conf systemctl enable supervisord
5、启动supervisor
supervisorctl restart all
6、更新supervisor被监控项
supervisorctl update
7、更多命令,请看supervisor官方文档
$supervisorctl shutdown $supervisorctl reload
三、问题
1、unix:///tmp/supervisor.sock no such file问题
执行supervisorctl时提示unix:///tmp/supervisor.sock no such file错误,后经排查后发现,是supervisor程序为执行。
执行,下面命令解决:
supervisord -c /etc/supervisord.conf systemctl enable supervisord systemctl start supervisord
2、莫名奇妙无法运行问题
请配置日志,从日志文件找出原因。
3、各种命令找不到问题
建议使用find命令,搜索该命令完整路径。