前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux spervisor监控进程,设置守护

linux spervisor监控进程,设置守护

作者头像
Tim在路上
发布2020-08-05 00:24:55
2.6K0
发布2020-08-05 00:24:55
举报

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

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

为每个流程实例编写rc.d脚本通常很不方便。 rc.d脚本是进程初始化/自动启动/管理的最低通用分母形式,但编写和维护可能会很痛苦。此外,rc.d脚本无法自动重新启动崩溃的进程,并且许多程序在崩溃时无法正常重新启动。Supervisord将进程作为其子进程启动,并且可以配置为在崩溃时自动重新启动它们。它还可以自动配置为在自己的调用上启动进程。

Supervisord将进程作为子进程启动,因此它始终知道其子进程的真正上/下状态,并且可以方便地查询此数据。

流程通常需要分组启动和停止,有时甚至是“优先顺序”。通常很难向人们解释如何做到这一点。Supervisor允许您为进程分配优先级,并允许用户通过supervisorctl客户端发出命令,如“start all”和“restart all”,以预先分配的优先级顺序启动它们。此外,可以将流程分组为“流程组”,并且可以停止一组逻辑相关流程并将其作为一个单元启动。主管为您提供一个启动,停止和监控流程的位置。流程可以单独控制,也可以成组控制。您可以将Supervisor配置为提供本地或远程命令行和Web界面。

supervisord

服务器主管名为supervisord。它负责在自己的调用中启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录其子进程stdout和stderr 输出,以及生成和处理与子进程生命周期中的点相对应的“事件”。

服务器进程使用配置文件。这通常位于/etc/supervisord.conf中。此配置文件是“Windows-INI”样式配置文件。通过适当的文件系统权限保持此文件的安全非常重要,因为它可能包含未加密的用户名和密码。

supervisorctl

主管的命令行客户端部分名为 supervisorctl。它为supervisord提供的功能提供了类似shell的界面。从 supervisorctl,用户可以连接到不同的 supervisord进程(一次一个),获取由子进程控制的状态,停止和启动子进程,并获取supervisord的运行进程列表。

命令行客户端通过UNIX域套接字或Internet(TCP)套接字与服务器通信。在允许客户端执行命令之前,服务器可以断言客户端的用户应该提供身份验证凭据。客户端进程通常使用与服务器相同的配置文件,但其中包含[supervisorctl]部分的任何配置文件都可以使用。

网络服务器

与功能媲美A(稀疏)的Web用户界面 supervisorctl可以通过浏览器,如果你开始访问 supervisord对互联网插座。在激活配置文件的[inet_http_server]部分后,访问服务器URL(例如http:// localhost:9001 /)以通过Web界面查看和控制进程状态。

cd /usr/local/src

wget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.2.tar.gz

tar -zxvf supervisor-3.3.2.tar.gz

cd supervisor-3.3.2

python setup.py install #本地python版本为python2.7

# python2.7 setup.py install #本地python版本为python3以上

二,配置

1.生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

2.启动

supervisord -c /etc/supervisord.conf

查看supervisord是否在运行:

ps aux | grep supervisord

3.配置

打开配置文件

vim /etc/supervisord.conf

在配置文件底部,配置包括:

[include]

files=/etc/supervisor/*.conf #若你本地无/etc/supervisor目录,请自建

用主管管理进程,配置如下:

cd /etc/supervisor

vim ossfs.conf # 这里的文件名称自定义

加入以下内容:

; 设置进程的名称,使用 supervisorctl 来管理进程时需要使用该进程名

[program:your_program_name]

command=python server.py --port=9000

;numprocs=1 ; 默认为1

;process_name=%(program_name)s ; 默认为 %(program_name)s,即 [program:x] 中的 x

directory=/home/python/tornado_server ; 执行 command 之前,先切换到工作目录

user=oxygen ; 使用 oxygen 用户来启动该进程

; 程序崩溃时自动重启,重启次数是有限制的,默认为3次

autorestart=true

redirect_stderr=true ; 重定向输出的日志

stdout_logfile = /var/log/supervisord/tornado_server.log

loglevel=info

这里是启动要配置的参数,请根据自己的项目自定义添加

更改了主管配置文件,需要重启,运行以下指令:

supervisorctl reload

4.supervisorctl的用法

supervisord : 启动supervisor

supervisorctl reload :修改完配置文件后重新启动supervisor

supervisorctl status :查看supervisor监管的进程状态

supervisorctl start 进程名 :启动XXX进程

supervisorctl stop 进程名 :停止XXX进程

supervisorctl stop all:停止全部进程,注:start、restart、stop都不会载入最新的配置文件。

supervisorctl update:根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

5.若不使用控制台来管理进程,用浏览器来管理,该如何配置?

打开配置文件

vim /etc/supervisord.conf

配置inet_http_server

[inet_http_server]

port=127.0.0.1:9001 ; 服务器ip

username=xxx ;自定义

password=xxx ;自定义

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档