Supervisor 简单使用

发表于 2018-01-09   |   分类于 2018 , 随笔

最近在学习 Filebeats + Kibana 经常需要修改配置,调试,需要管理进程处理。所以寻找一种尽可能简洁,高效,易用的办法。找到了 Supervisor
Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程。它可以同时启动,关闭多个进程,使用起来特别的方便。

组成部分

supervisor 主要由两部分组成:

supervisord(server 部分):主要负责管理子进程,响应客户端命令以及日志的输出等;
supervisorctl(client 部分):命令行客户端,用户可以通过它与不同的 supervisord 进程联系,获取子进程的状态等。

安装

sudo pip install supervisor

其他安装方法,比如centos :

yum -y install supervisor

配置

安装完成之后,可以运行 echo_supervisord_conf 生成默认的配置文件:
echo_supervisord_conf > /etc/supervisord.conf

运行

supervisord -c /etc/supervisord.conf

查看 supervisord 是否在运行:

ps aux | grep supervisord

Program 配置

supervisrod 运行起来了,配置文件都放在 supervisord.conf 这个方法不推荐,一旦管理的进程过多,就很乱,控制起来不方便。参考 nginx 启用虚拟机一样的方法。 我们创建一个目录来专门放置进程的配置文件,然后通过 include 的方式来获取这些配置信息。比如:

配置目录:

/etc/supervisord/conf.d

配置文件

-rw-r--r-- 1 root root 500 1月   9 11:00 filebeat.conf
-rw-r--r-- 1 root root 483 1月   9 11:07 kibana.conf

修改配置

编辑 /etc/supervisord.conf 里 include 部分

[include]
files = /etc/supervisord/conf.d/*.conf
Program 主要配置信息:
[program:filebeats]
directory = /root/student/filebeat ;filebeat目录文件
command= sudo ./filebeat -e -c filebeat.yml ; 启动命令
stdout_logfile=/var/log/supervisor/filebets_out.log ; stdout 日志输出位置
需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
autostart=true ; 在 supervisord 启动的时候自动启动
autorestart=true ; 程序异常退出后自动重启
startsecs=10 ; 启动 10 秒后没有异常退出,就当作已经正常启动

supervisorctl 使用

$ supervisorctl status #查看程序状态
$ supervisorctl reread #最新的配置文件, 不重启添加的进程
$ supervisorctl update #启动最新的配置文件的程序
$ supervisorctl start filebeats #启动filebeat程序
$ supervisorctl restart filebeats #重启filebeat程序
所有用户赞赏通道:
© ICP: 浙ICP备17033011号-1