美文网首页
Supervisor简介

Supervisor简介

作者: 魔曦帝天 | 来源:发表于2019-11-08 21:33 被阅读0次

    Supervisor

    Supervisord 是用 Python 实现的一款的进程管理工具,supervisord 要求管理的程序是非 daemon 程序,supervisord 会帮你把它转成 daemon 程序,因此如果用 supervisord 来管理进程,进程需要以非daemon的方式启动。

    例如:管理nginx 的话,必须在 nginx 的配置文件里添加一行设置 daemon off 让 nginx 以非 daemon 方式启动

    Supervisor的配置

    使用yum install -y supervisor的命令安装
    会生成默认配置/etc/supervisord.conf和目录/etc/supervisord.d
    如果没有则自行创建。

    /etc/supervisord.d的目录下创建conflog两个目录,conf用于存放管理进程的配置,log用于存放管理进程的日志。

    cd /etc/supervisord.d
    mkdir conf log
    

    修改/etc/supervisord.conf的[include]部分,即载入/etc/supervisord.d/conf目录下的所有配置

    vi /etc/supervisord.conf
    ...
    [include]
    files = supervisord.d/conf/*.conf
    ...
    

    修改supervisor应用日志的目录,默认日志路径

    vi /etc/supervisord.conf
    ...
    [supervisord]
    logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
    logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
    logfile_backups=10          ; (num of main logfile rotation backups;default 10)
    loglevel=info               ; (log level;default info; others: debug,warn,trace)
    pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    ...
    

    管理应用的配置

    进入到/etc/supervisord.d/conf目录,创建管理应用的配置,可以创建多个应用配置。
    例如,创建confd.conf配置。

    [program:confd]
    directory = /usr/local/bin ; 程序的启动目录
    command = /usr/local/bin/confd -config-file /etc/confd/confd.toml ; 启动命令,与命令行启动的命令是一样的
    autostart = true     ; 在 supervisord 启动的时候也自动启动
    startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
    autorestart = true   ; 程序异常退出后自动重启
    startretries = 3     ; 启动失败自动重试次数,默认是 3
    user = root          ; 用哪个用户启动
    redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
    stdout_logfile_backups = 20     ; stdout 日志文件备份数
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile = /etc/supervisord.d/log/confd.log  ;日志统一放在log目录下
    ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
    ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
    

    Surpervisor的启动

    supervisord二进制启动

    #
    supervisord -c /etc/supervisord.conf
    # 检查进程
    ps aux | grep supervisord
    

    或者以systemd的方式管理

    cd /etc/rc.d/init.d/supervisord
    
    #!/bin/sh
    #
    # /etc/rc.d/init.d/supervisord
    #
    # Supervisor is a client/server system that
    # allows its users to monitor and control a
    # number of processes on UNIX-like operating
    # systems.
    #
    # chkconfig: - 64 36
    # description: Supervisor Server
    # processname: supervisord
    
    # Source init functions
    . /etc/rc.d/init.d/functions
    
    prog="supervisord"
    
    prefix="/usr"
    exec_prefix="${prefix}"
    prog_bin="${exec_prefix}/bin/supervisord"
    PIDFILE="/var/run/$prog.pid"
    
    start()
    {
           echo -n $"Starting $prog: "
           daemon $prog_bin --pidfile $PIDFILE -c /etc/supervisord.conf
           [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
           echo
    }
    
    stop()
    {
           echo -n $"Shutting down $prog: "
           [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
           echo
    }
    
    case "$1" in
    
     start)
       start
     ;;
    
     stop)
       stop
     ;;
    
     status)
           status $prog
     ;;
    
     restart)
       stop
       start
     ;;
    
     *)
       echo "Usage: $0 {start|stop|restart|status}"
     ;;
    
    esac
    

    添加权限利用system管理

    chmod +x /etc/rc.d/init.d/supervisord
    chkconfig --add supervisord
    chkconfig supervisord on
    service supervisord start
    

    相关文章

      网友评论

          本文标题:Supervisor简介

          本文链接:https://www.haomeiwen.com/subject/hiowbctx.html