Supervisor安装与使用

一、简介

1、supervisor是什么

superviosr是一个Linux/Unix系统上进程监控和管理的工具,它由python编写,可以用pip安装。supervisor能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

2、为什么要使用supervisor

supervisor可以实现单个或成组地控制进程,它可以把web服务的进程组当作自己的子进程,在子进程挂掉时重启。对一组进程进行统一管理是linux没有的功能

3、supervisor组件

supervisord是管理其他进程的主进程
supervisorctl是supervisor客户端的命令行工具

二、安装与配置

#安装
yum install python-setuptools -y
easy_install supervisor

#生成一个配置文件
echo_supervisord_conf > /usr/local/supervisord.conf

#修改[inet_http_server]配置,来启用WEB管理界面
[inet_http_server]         ; inet (TCP) server disabled by default
port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface
username=root              ; default is no username (open server)
password=123456               ; default is no password (open server)

[include]
files = /usr/local/supervisor_conf/*.ini   ;配置文件存放地址

  

三、使用

#进程测试脚本
[root@localhost~]#cat /usr/local/scripts/t.sh 
#!/bin/bash
while true;do
    date "+%Y-%m-%d %T" >>/tmp/t1.txt
    sleep 1
done

[root@localhost~]chmod +x  /usr/local/scripts/t.sh 


#创建监控配置目录
mkdir  /usr/local/supervisor_conf/

#创建配置文件
[root@localhost~]#cat  /usr/local/supervisor_conf/test_t.ini
[program:test_t1]
command=/bin/bash /usr/local/scripts/t.sh  ;启动命令
autostart=true	; 在supervisord启动的时候也自动启动
autorestart=true	; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startsecs=10	; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
priority=2	; 进程启动优先级,默认999,值小的优先启动
stdout_logfile=/tmp/test_t1.log ;日志文件



#启动Supervisor服务
[root@localhostscripts]#supervisord  -c /usr/local/supervisord.conf 


#查看与测试
[root@localhostscripts]#tailf  /tmp/t1.txt  #有文本一直写入

[root@localhostscripts]#ps -ef|grep bash |grep t.sh
root      12588  12587  0 09:45 ?        00:00:00 /bin/bash /usr/local/scripts/t.sh

#提前监控,测试杀掉进程
[root@localhost~]#ps -ef|grep bash |grep t.sh
root      12588  12587  0 09:45 ?        00:00:00 /bin/bash /usr/local/scripts/t.sh
[root@localhost~]kill 12588
[root@localhost~]#ps -ef|grep bash |grep t.sh
root      13112  12587  0 09:49 ?        00:00:00 /bin/bash /usr/local/scripts/t.sh

  

4、交互终端

supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

[root@localhostscripts]#supervisorctl 
Server requires authentication
Username:root
Password:

test_t1                          RUNNING   pid 13262, uptime 0:02:13
supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

supervisor> stop all
supervisor> start  all

  

五、web管理

#修改监听端口
vim  /usr/local/supervisord.conf 
[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; ip_address:port specifier, *:port for all iface
#重启
[root@localhost~]#ps -ef|grep supervisord
root      13261      1  0 09:50 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
root      14051  12337  0 09:56 pts/7    00:00:00 grep --color=auto supervisord
[root@localhost~]#kill 13261
[root@localhost~]supervisord -c /usr/local/supervisord.conf  

浏览器访问

六、Supervisor配置systemctl服务

vim  /usr/lib/systemd/system/supervisor.service
[Unit]
Description=supervisor
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /usr/local/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

##干掉原先的supervisor进程
[root@localhost~]#ps -ef|grep super
root      14065      1  0 09:57 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
[root@localhost~]#kill 14065
#使用systemctl启动
[root@localhost~]#systemctl start supervisor.service
[root@localhost~]#systemctl status supervisor.service
● supervisor.service - supervisor
   Loaded: loaded (/usr/lib/systemd/system/supervisor.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2019-04-28 10:03:34 CST; 1s ago
  Process: 14931 ExecStart=/usr/bin/supervisord -c /usr/local/supervisord.conf (code=exited, status=0/SUCCESS)
 Main PID: 14934 (supervisord)
   CGroup: /system.slice/supervisor.service
           ├─14934 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
           ├─14935 /bin/bash /usr/local/scripts/t.sh
           └─14937 sleep 1

4月 28 10:03:34 localhost.localdomain systemd[1]: Starting supervisor...
4月 28 10:03:34 localhost.localdomain systemd[1]: Started supervisor.
#开机自启
[root@localhost~]systemctl enable supervisor.service
Created symlink from /etc/systemd/system/multi-user.target.wants/supervisor.service to /usr/lib/systemd/system/supervisor.service.

  

原文地址:https://www.cnblogs.com/zhangb8042/p/10782381.html