zoukankan      html  css  js  c++  java
  • Supervisor

    简介

        Supervisor官网地址:http://supervisord.org/

        Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

        supervisor管理这些进程是把他们当做自己的子进程来管理,supervisor不能管理以daemon形式运行的进程,supervisor只能管理前台运行的进程。

    Supervisor组件

    Supervisord

    主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。。该服务的配置文件在/etc/supervisor/supervisord.conf。

    Supervisorctl

    客户端的命令行工具,提供一个类似shell的操作接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序,命令通过UNIX socket或者TCP来和服务通讯。用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。服务端也可以要求客户端提供身份验证之后才能进行操作。

    Web Server

    Superviosr提供了web server功能,可通过web控制进程(需要设置[inethttpserver]配置项)

    XML-RPC Interface

    XML-RPC接口, 就像HTTP提供WEB UI一样,用来控制supervisor和由它运行的程序。

     Supervisor应用

    安装 Supervisor

    yum install epel-*
    yum install supervisor -y
    systemctl start supervisord
    systemctl enable supervisord
    

      

    配置文件

     1 # 默认配置
     2 [root@devops ~]# sed -e '/^;/d' -e '/^$/d' /etc/supervisord.conf
     3 [unix_http_server]
     4 file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
     5 [supervisord]
     6 logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
     7 logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
     8 logfile_backups=10          ; (num of main logfile rotation backups;default 10)
     9 loglevel=info               ; (log level;default info; others: debug,warn,trace)
    10 pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    11 nodaemon=false              ; (start in foreground if true;default false)
    12 minfds=1024                 ; (min. avail startup file descriptors;default 1024)
    13 minprocs=200                ; (min. avail process descriptors;default 200)
    14 [rpcinterface:supervisor]
    15 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    16 [supervisorctl]
    17 serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
    18 [include]
    19 files = supervisord.d/*.ini

     启动文件 demo

     1 [root@devops supervisord.d]#  cat nginx.ini 
     2 [program:nginx]                                        # 定义名称
     3 directory=/usr/local/nginx/sbin                        # 工作目录
     4 command=/usr/local/nginx/sbin/nginx -g 'daemon off;'   # 启动参数
     5 autostart=true                                         # 是否自动启动
     6 autorestart=true                            # 自动自愈
     7 stderr_logfile=/tmp/nginx_stderr.log                   # 错误日志
     8 stdout_logfile=/tmp/nginx_stdout.log                   # 输出日志
     9 user=root                                              # 启动用户
    10 stopsignal=INT                                         # 进程停止信号, 可以为 TERM, HUP,INT,QUIT,KILL,USR1等 默认为TERM
    11 startsecs=10                                           # 启动多少秒后进行判定, 如果结果不是 running 则再次重启, 默认1
    12 startretries=5                                         # 如果 启动五次失败后不在重启.
    13 stopasgroup=true                           # 如果管理的服务器也是分为主进程子进程, 设置为 true 则 supervisor 会把真个进程杀掉, false 则只杀掉 master 进程.默认为 false



    作者:闫世成

    出处:http://cnblogs.com/yanshicheng

    联系:yans121@sina.com

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。
  • 相关阅读:
    安全意识第二期丨小失误酿大祸,上班族请注意啦
    安全意识第一期丨网购退款失败,导致财、物两空?
    CTF挑战赛丨网络内生安全试验场第一季答题赛火热开启
    挑战世界级“人机大战”,更有万元奖金等你来拿
    【Web安全入门】三个技巧教你玩转XSS漏洞
    【新手篇】搭建DCN漏洞靶机及简单的SQL手工注入
    想入门Web安全,这些基础知识都学会了吗?
    CTF必备技能丨Linux Pwn入门教程——PIE与bypass思路
    大学生网络安全竞赛开始报名啦
    「黑客必备技能」Python正则表达式详解
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/14839508.html
Copyright © 2011-2022 走看看