简介
supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径配置到启动文件中即可管理进程。
官网文档:http://supervisord.org/
这里以centos7为例。
安装
1、通过yum安装
yum install epel-release
yum install -y supervisor
2、通过apt安装
apt-get install supervisor
3、通过pip安装
pip install supervisor
4、通过easy_install安装
easy_install supervisor
配置
安装完成后,运行echo_supervisord_conf,会打印一个“示例”监控程序配置文件
重新调用命令echo_supervisord_conf > /etc/supervisor/supervisord.conf。将会创建一个默认的配置文件。
supervisor配置文件:/etc/supervisor/supervisord.conf
注:supervisor的配置文件默认是不全的,不过在大部分默认的情况下,上面说的基本功能已经满足。
子进程配置文件路径:/etc/supervisord.d/
注:默认子进程配置文件为ini格式,可在supervisor主配置文件中修改。
进程配置格式示例:
[program:logstash-nginxaccesslog20]
command=/home/logstash-6.5.4/bin/logstash -f /home/logstash-6.5.4/config/logstash.conf
numprocs=1
autostart=true
autorestart=true
user=root
directory=/home/logstash-6.5.4
启动
启动命令参数配置
-c, --configuration | |
---|---|
指定配置文件位置 (默认 /etc/supervisord.conf) | |
-h, --help | 打印使用信息并退出 |
-i, --interactive | |
执行命令后启动交互式shell | |
-s, --serverurl URL | |
supervisor服务监听地址 (默认 “http://localhost:9001”). | |
-u, --username | 服务启动用户名,默认'user' |
-p, --password | 服务启动密码,默认'123' |
将supervisor加入开机启动项
sudo systemctl enable supervisord
启动supervisor并加载默认配置文件
sudo systemctl start supervisord
关于supervisor服务登录的用户名和密码默认已经配置在supervisord.conf文件中,可以在此文件中根据需要修改
[inet_http_server]
port = 127.0.0.1:9001
username = user
password = 123
若修改supervisord.service后,需要重新启动,否则会报错:
sudo systemctl daemon-reload
sudo systemctl restart supervisord
查看是否已经启动(enable为正常启动状态)
systemctl is-enabled supervisord
关闭supervisor服务
systemctl stop supervisord.service