注:-本工具属于“工具-自动化-应急”
-官方网站:http://www.supervisord.org/
1.有几种方法可以运行管理工具Linux的后台进程,如nohup、screen等。但是,如果它是一个服务程序,为了在后台可靠地运行,我们需要使它成为一个守护进程,最好监视进程状态,并在它意外结束时自动重新启动。Supervisor是Python开发的一套通用的进程管理程序,可以将一个普通的命令行进程变成后台守护进程,监控进程状态,异常退出时自动重启。
主管有两个主要组成部分:
-Supersord,运行supervisor时,启动一个process supervisord,负责启动托管流程,将托管流程作为自己的子流程启动,托管流程崩溃时自动重启。
-supervisorctl是一个命令行管理工具,可用于执行stop、start、restart和其他命令来管理这些子进程。
主管是所有流程的父流程,管理启动子流程。主管用子流程的PID管理子流程。当子进程异常退出时,主管可以接收到相应的信号量。
1)安装主管
安装主管
rpm-IVH supervisor-3.0-1 . gf . el6 . no arch . rpm
#在实际测量过程中,您还应该安装依赖包:
rpm-IVH python-meld 3-0 . 6 . 7-1 . El 6 . x86 _ 64 . rpm
服务命令:
服务监督站
服务监督启动
2)配置文件介绍创建个人资料
echo _ super super sord _ conf & gt。/etc/supervisord.conf
默认supervisord.conf配置文件将supervisord.pid和supervisor.sock放在/tmp目录下,Linux系统可能会删除,需要修改。
[unix_http_server]
;file =/tmp/supervisor . sock;(套接字文件的路径)
;将其修改到/var/run目录以避免被系统删除
file=/var/run/supervisor.sock
;chmod = 0700套接字文件模式(默认0700)
;chown = none:no group;套接字文件uid:gid所有者
;username = user(默认为无用户名(打开服务器))
;password = 123(默认为无密码(打开服务器))
;[inet _ http _ server];默认情况下禁用inet (TCP)服务器
;端口= 127 . 0 . 0 . 1:9001;(ip_address:端口说明符,*:的端口;所有iface)
;稍后将在远程可视化管理中使用它
username = calypso(默认为无用户名(打开服务器))
password = 123456(默认为无密码(打开服务器))
...
[super super sord]
;log file =/tmp/supervisord . log;(主日志文件;default $CWD/supervisord.log)
;将其修改到/var/log目录以避免被系统删除
log file =/var/log/supervisor/supervisord . log
logfile _ maxbytes = 50MB(最大主日志文件字节b4循环;默认50MB)
logfile _ backups = 10(主日志文件循环备份的数量;默认10)
loglevel = info(log level默认信息;其他:调试、警告、跟踪)
;PID file =/tmp/supervisord . PID;(supervisord pidfile默认supervisord.pid)
;将其修改到/var/run目录以避免被系统删除
PID file =/var/run/supervisord . PID;(supervisord pidfile默认supervisord.pid)
...
[supervisorctl]
;将其修改到/var/run目录以避免被系统删除
server URL = UNIX:///var/run/supervisor . sock;使用unix://网址作为unix套接字
;server URL = http://127 . 0 . 0 . 1:9001;使用http:// url指定inet套接字
;用户名= chris如果设置,应该与http_username相同
;password = 123如果设置,应该与http_password相同
[包括]
files = /etc/supervisord.d/*。ini对应于要管理的过程配置文件
;[event listener:the event listener name]
;它是一个由supervisor启动的子流程,订阅supervisord发送的事件,如报警等。,以后会写一篇关于发送事件报警的实用文章
;command =/bin/event listener;侦听器可执行文件的路径
;process _ name = %(program _ name)s;进程名,只有当下面有多个numprocs时才需要。
;num procs = 1;相同监听程序的数量开始
;events = EVENT事件的类型,指定的类型将被发送
;buffer _ size = 10这是事件队列缓存大小
;目录=/tmp;在进程执行之前,它会切换到这个目录。默认是不切换。。。没有必要
;umask = 022默认值为无
;优先级=-1;开始优先级,默认-1
;autostart = true是否从supervisord开始,默认为真
;autorestart =意外;是否自动重启可分为真、假、意外等。
;start secs = 1;同样如此。进程启动后,它会运行几秒钟,然后才被视为成功启动。默认值为1
;start retries = 3;失败尝试的最大次数,默认值为3
;exitcodes=0,2;预期或预期的进程退出代码,
;stopsignal = QUIT终止进程的信号,默认为TERM,比如设置为QUIT,那么如果QUIT来做这个进程,就认为是正常维护,退出代码也认为是预期的
;stopwaitsecs = 10等待b4 SIGKILL的最大秒数(默认为10)
;stopasgroup = false向UNIX进程组发送停止信号(默认为false)
;killasgroup = falseUNIX进程组(def false)
;user = chrism设置普通用户,可以用来管理监听器进程。默认值为空
;redirect _ stderr = true如果为真,stderr的日志将被合并到stdout的日志中,默认值为假
……
;[group:the groupname];程序分组
;programs=progname1,progname2组成员,用逗号分隔。这是一个必要的设置项目
;priority = 999优先级,相对于组之间的默认值999
过程配置文件
;设置进程的名称,在使用supervisorctl管理进程时需要使用该名称
[程序:calypso_api]
command =/calypso/envs/GFSCalypsoAdapters/API/s/GFS _ calypso _ API _ service . sh start
directory =/calypso/envs/GFSCalypsoAdapters/API/s/;在执行命令之前,请先切换到目录
num procs = 1;默认值为1
process _ name = %(program _ name)s;默认值为%(program_name)s,在[program:x]中为x
user = calypso使用calypso用户启动该过程
#autostart=true
autorestart = true当程序崩溃时,会自动重启。重启次数有限,默认为3次。有三种选择,假的,意料之外的,真的。如果为假,在任何情况下都不会重新启动。如果它是意外的,只有当进程的退出代码没有在下面的exitcodes中定义时。
environment = PATH = "/usr/Java/JDK 1 . 7 . 0 _ 21/bin:/usr/lib 64/Qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/Dell/Sr vadmin/bin:/opt/mqm/samp/bin ";设置环境变量
redirect_stderr=true
stdout _ log file =/var/log/calypso _ API _ stdout . log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr _ log file =/var/log/calypso _ API _ stderr . log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
3)引入3)监督命令
#停止某个进程,在[program:x]中program_name为x
supervisorctl停止程序名称
#开始一个过程
supervisorctl启动程序_名称
#重新启动进程
supervisorctl重新启动程序名称
#结束属于名为groupworker的组的所有进程(启动、重新启动是相同的)
supervisorctl stop groupworker:
#结束groupworker:name1的进程(启动,重启相同)
supervisor CTL stop group worker:name 1
#停止所有进程,注意:启动、重启和停止不会加载最新的配置文件
supervisorctl停止所有
#加载最新的配置文件,停止原始进程,并根据新的配置启动和管理所有进程
supervisorctl重新加载
#根据最新的配置文件,用新的配置或更改启动进程,用未更改的配置重新启动进程而不受影响
supervisorctl更新
4)注意事项 (坑)-supervisor更适合监控业务应用,只能监控前台程序。如果您的程序是在守护模式下启动的,execute: supervisor status将提示:太快退出现有(进程日志可能有详细信息)。
-注意设置环境变量:环境=A="1 ",B = " 2过程环境添加(定义无添加)
2.事件插件1)插件:https://github.com/ouqiang/supervisor-event-listener
主管-事件-监听器,主管事件通知,支持邮件,松弛,网络钩子
2)网上有一个事件例子(有例子)http://www.cnblogs.com/felixzh/p/6100000.html
过一段时间,我会写一篇关于这篇文章的特别文章
3.可视化工具默认工具只能管理一个流程。如果是在公司统一使用,那就要找一个可以统一管理所有流程的工具。官网推荐几个可视化工具:-CESI
一个用Python写的基于web的仪表盘。
django的Dashvisor
一个用Python写的基于web的仪表盘。需要Django 1.3或1.4。
- Nodervisor
一个用Node.js编写的基于web的仪表盘
-监督监视器
基于web的仪表盘是用PHP写的。
-主管
另一个用PHP写的基于web的仪表盘。
- supervisorclusterctl
命令行工具,用于使用Ansible控制多个主管实例。
- suponoff
用Python 3编写的基于web的仪表盘。需要Django版或更高版本。
-管理员
专为分布式应用而设计,用Python 2.7编写。包括扩展的XML-RPC API和基于web的仪表板。
实际测试和试用,其中CESI不错,推荐。节目来源:https://github.com/Gamegos/cesi
http://AE . koro Glu . org/central-supervisor-interface-cesi/
1.《supervisor linux应用服务管理工具(supervisor)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《supervisor linux应用服务管理工具(supervisor)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/853869.html