supervisor添加进程,进程守护 supervisor

  supervisor添加进程,进程守护 supervisor

  主管介绍

  Supervisor是一套用Python开发的通用进程管理程序,可以把一个普通的命令行进程变成后台守护进程,监控进程状态,异常退出时自动重启。它通过fork/exec的方式将这些被管理的进程作为supervisor的子进程启动,所以只要将被管理的进程的可执行文件的路径写入supervisor的配置文件中。它还实现了当子进程挂起时,父进程可以准确获取子进程挂起的信息,并可以自行选择是否启动和报警。

  http://supervisord.org/installing.html官方网站

  最后,pip可以在Python3下正常安装。

  由于Supervisor是用Python开发的程序,请在安装之前确保系统上安装了Python。

  PIP supervisor安装后会生成三个执行程序:supervisortd、supervisorctl、e cho_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于与守护进程通信和发送管理进程的指令)和生成初始配置文件的程序。

  生成配置文件:

  市场总监主管

  cd主管/

  echo _ supervisor d _ conf supervisor d . conf配置文件:

  [UNIX http服务器]

  file=/tmp/supervisor . sock;UNIX套接字文件,supervisorctl将使用该文件与supervisord进行通信.

  ;chmod=0700套接字文件的模式默认为0700。

  ;chown=nobody:no group;套接字文件的所有者,格式:uid:gid

  ;[inet _ http _ server];HTTP服务器,提供web管理接口

  ;端口=127 . 0 . 0 . 1:9001;管理在后台运行的Web的IP和端口。如果是对公网开放,需要注意安全。

  ;用户名=用户;登录后台的用户名。

  ;密码=123;登录后台的密码。

  [超级管理员]

  log file=/tmp/supervisord . log;日志文件,默认为$ $ CWD/super visor . log

  logfile _ maxbytes=50MB默认情况下,超过will rotate的日志文件大小为50MB。如果设置为0,则表示没有大小限制。

  logfile _ backups=10日志备份的默认数量是10,将其设置为0表示没有备份。

  loglevel=info日志级别、默认信息、其他:调试、警告、跟踪

  PID file=/tmp/supervisord . PID;Pid文件

  nodaemon=false是否在前台启动,默认为false,即以守护模式启动。

  minfds=1024可以打开的文件描述符的最小值,默认值是1024。

  minprocs=200默认情况下,可以打开的最小进程数是200。

  [监督员]

  server URL=UNIX:///tmp/supervisor . sock;通过UNIX socket连接supervisord,路径与unix_http_server段中的文件一致。

  ;server URL=http://127 . 0 . 0 . 1:9001;通过HTTP连接到supervisord

  ;[program:xx]是被管理进程的配置参数,xx是进程的名称。

  [程序:xx]

  command=/opt/Apache-Tomcat-8 . 0 . 35/bin/catalina . sh运行;程序开始命令

  autostart=true当supervisord启动时,它也会自动启动。

  startsecs=10如果启动10秒后没有异常退出,说明进程正常启动,默认值为1秒。

  autorestart=true程序退出后会自动重启。可选值:[意外,真,假]。默认值是意外的,这意味着进程在被意外终止后将重新启动。

  开始重试次数=3;默认情况下,失败的自动重试次数为3。

  user=tomcat哪个用户启动该进程,默认为root。

  优先级=999;启动优先级,默认为999,较小的先启动。

  redirect _ stderr=true将stderr重定向到stdout,默认为false

  stdout _ logfile _ maxbytes=20MB标准输出日志文件大小,默认为50MB

  stdout _ logfile _ backups=20stdout日志文件的备份数量,默认值为10。

  ;Stdout日志文件,请注意,指定目录不存在时无法正常启动,需要手动创建目录(supervisord会自动创建日志文件)

  stdout _ log file=/opt/Apache-Tomcat-8 . 0 . 35/logs/catalina . out

  stopasgroup=false默认值为false,表示当一个进程被终止时,是否向该进程组(包括子进程)发送停止信号。

  killasgroup=false默认值为false,kill信号被发送到进程组,包括子进程。

  ;包括其他配置文件。

  ;[包括]

  ;files=相对/目录/*。ini可以指定一个或多个以结尾的配置文件。ini。

  示例配置:

  [程序:花]

  command=/root/python _ envs/celery _ project/bin/celery-A celery _ task。芹菜花-地址=0。0 .0 .0-port=5555-basic _ auth=admin:zxing。112233;程序(相对用路径,可以带参数)

  process _ name=%(program _ name)s;进程名表达式(默认为%(程序名)s)

  num procs=1;要启动的进程副本数(定义1)

  directory=/root/python-projects/test-project/celery _ project;高级管理人员之前粗木质残体到的目录(定义无cwd)

  优先级=999;相对启动优先级(默认为999)

  自动启动=真从超级用户开始(默认值:真)

  启动ECS=1;程序必须保持运行的秒数(定义。1)

  开始重试次数=3;启动时串行启动失败的最大次数(默认为3)

  自动重启=意外;如果运行后退出,何时重新启动(定义:意外)

  退出代码=0;与自动重启一起使用的"预期"退出代码(默认值为0)

  重定向_ stderr=false将过程标准错误重定向到标准输出(默认为假)

  stdout _ log file=/etc/supervisor/logs/flower _ stdout。日志;标准输出日志路径,无对无。默认自动

  标准输出日志文件最大字节数=10MB最大日志文件字节数b4循环(默认为50MB)

  标准输出日志文件备份=10st输出日志文件备份的数量(0表示无,默认为10)

  标准输出捕获最大字节数=1MB "捕获模式"中的字节数(默认值为0)

  标准输出事件启用=假在标准输出写入时发出事件(默认为假)

  stdout _ syslog=false将带有进程名称的标准输出发送到系统日志(默认为假)

  stderr _ log file=/etc/supervisor/logs/flower _ stderr。日志;标准错误日志路径,无对无。默认自动

  stderr _ logfile _ maxbytes=10MB最大日志文件字节数b4循环(默认为50MB)

  stderr _ logfile _ backups=10stderr日志文件备份的数量(0表示无,默认为10)

  stderr _ capture _ maxbytes=1MB捕获模式"中的字节数(默认值为0)

  标准错误_系统日志=假将标准错误与进程名称一起发送到系统日志(默认为假)

  用户=根

  配置管理进程进程管理配置参数,不建议全都写在s upervisord.conf文件中,建议每个进程写一个配置文件,并放在包括配置块中文件指定的目录下,通过我包括包含进supervisord.conf文件中。

  修改配置文件:

  (it nest)root @ PxeCtrlSys:/home/user/it nest/Supervisor # vim supervisord。主配置文件

  # 最后加上

  [包括]

  ;文件=相对/目录/*。初始化设置文件的后缀名

  files=/home/user/it nest/Supervisor/* .初始化设置文件的后缀名

  # 注意点:一定开启包括

  启动监督者服务(it nest)root @ px ctrl sys:/home/user/it nest/Supervisor # supervisord-c supervisord。主配置文件

  (it nest)root @ px ctrl sys:/home/user/it nest/Supervisor # tail/tmp/web socket。原木管理用户进程交互终端超级监管者启动成功后,通过监督员客户端来管理用户进程:启动、停止、重启。运行监督员命令,会进入监督者客户端的交互终端,并会列出当前所管理的所有进程。

  输入救命啊,可以查看命令列表。如果想看某个命令的作用,运行"救命命令名称",如帮助阻止达芙妮表示停止达芙妮进程,全部停止表示停止所有进程

  监督员管理:

  命令

  说明

  救命啊

  打印可用操作的列表

  帮助操作

  打印帮助行为

  添加姓名[.]

  激活进程/组配置中的任何更新

  删除姓名[.]

  从活动配置中删除进程/组

  更新

  重新加载配置和添加/删除必要的,并将重新启动受影响的程序

  全部更新

  重新加载配置和添加/删除必要的,并将重新启动受影响的程序

  更新名称[.]

  更新特定的组,并将重新启动受影响的程序

  清除名称

  清除进程的日志文件

  清除名称名称

  清除多个进程的日志文件

  全部清除

  清除所有进程的日志文件

  细粒过程

  连接到前台模式下的进程,按拷贝退出前台

  pid

  得到主控制器的PID

  pid名称

  按名称获取单个子进程的PID

  pid全部

  获取每个子进程的PID,每行一个

  重新加载

  重新启动远程监控程序

  重读

  重新加载守护进程的配置文件,无需添加/删除(无需重新启动)

  重启名称

  重启进程,注意:重新启动不会重新读取配置文件。对此,请参阅重读和更新

  重新启动gname :*

  重启组内所有进程,注意:重新启动不会重新读取配置文件。对此,请参阅重读和更新

  重启名称名称

  重新启动多个进程或组,注意:重新启动不会重新读取配置文件。对此,请参阅重读和更新

  全部重启

  重启所有进程,注意:重新启动不会重新读取配置文件。对此,请参阅重读和更新

  信号

  开始名称

  启动进程

  开始gname :*

  在一个组中启动所有进程

  开始名称名称

  启动多个进程或组

  全部开始

  开始所有进程

  状态

  获取所有进程状态信息

  状态名称

  按名称获取单个进程的状态

  状态名称名称

  获取多个已命名进程的状态

  停止名称

  停止一个进程

  停止咬牙切齿:*

  停止组中的所有进程

  停止名称名称

  停止多个进程或组

  全部停止

  停止所有进程

  ` tail [-f] name [stdout

  stderr](默认标准输出)`

  输出进程日志的最后一部分,例如:尾部-f名称按Ctrl-C退出尾数-100名称最后100个字节的进程

  非交互命令操作:

  (it nest)root @ PxeCtrlSys:/home/user/it nest/Supervisor # supervisorctl-c supervisord。会议重启

  错误:重新启动需要一个进程名

  重启重启一个进程

  重新启动:*重新启动组中的所有进程

  重启重启多个进程或组

  重启所有重启所有进程

  注意:重新启动不会重新读取配置文件。为此,请参见重新读取和更新。

  (it nest)root @ PxeCtrlSys:/home/user/it nest/Supervisor # Supervisor CTL-c Supervisor/Supervisor or。会议重启全部

  停止了

  开始了

  (it nest)root @ px ctrl sys:/home/user/it nest/Supervisor # supervisorctl-c supervisord。确认停止

  (it nest)root @ px ctrl sys:/home/user/it nest/Supervisor # supervisorctl-c supervisord。会议开始重启超级监管者服务:

  监督控制重新加载网管理界面

  出于安全考虑,默认配置没有开启网管理界面,需要修改supervisord.conf配置文件,以打开超文本传送协议(超文本传输协议的缩写)访权限。

  修改配置将下面的配置

  ;[inet _ http _ server];默认情况下inet (TCP)服务器被禁用

  ;端口=127 .0 .0 .1:9001;ip地址:端口说明符,*:所有接口的端口

  ;用户名=用户;默认为无用户名(开放服务器)

  ;密码=123;默认为无密码(开放服务器)修改为:

  [inet _ http _ server];默认情况下inet (TCP)服务器被禁用

  端口=0 .0 .0 .0:9001;ip地址:端口说明符,*:所有接口的端口

  用户名=用户;默认为无用户名(开放服务器)

  password=user@user.com;默认为无密码(开放服务器)浏览器访问IP:9001

  重启监督者服务

  (it nest)root @ PxeCtrlSys:/home/user/it nest/Supervisor # Supervisor CTL关闭

  停工

  (it nest)root @ px ctrl sys:/home/user/it nest/Supervisor # supervisord-c supervisord。主配置文件

  一键搞定:管理员控制重新加载

  设置开机启动

  启动脚本守护程序-重新加载#重新加载启动脚本配置

  启动脚本启用supervisord.service #设置开机启动

  启动脚本禁用supervisord.service #禁止开机启动

  系统CTL是-活动管理程序。服务编号(仅显示是否活动)

  系统CTL列表-单位-类型=服务编号显示所有已启动的服务

  启动脚本已启用supervisord.service验证一下是否为开机启动

  问题:

  1.

  服务器需要验证

  错误:类" xmlrpc.client.ProtocolError ",127.0.0.1的协议错误/RPC 2:401未经授权:file:/data/python _ envs/es-service/lib/python 3.7/site-packages/supervisor/xmlr

  pc.py行:545

  场景:执行命令:监控关闭之后

  这是因为开启了权限验证导致,可以通过执行监督员回车输入用户名密码进入之后进行关机操作

  2.

  http://本地主机:9001拒绝连接启动方式:

  超级监管者。主配置文件服务加入系统:

  添加服务配置vim/lib/systemd/system/supervisor。服务

  [单位]

  描述=主管

  After=network.target

  [服务]

  类型=分叉

  ExecStart=/data/python _ envs/es-service/bin/supervisord-c/data/Supervisor/supervisord。主配置文件

  ExecStop=/data/python _ envs/es-service/bin/supervisor CTL $ OPTIONS关闭

  exec reload=/data/python _ envs/es-service/bin/supervisor CTL $ OPTIONS reload

  KillMode=进程

  重启=开-失败

  重启秒=42秒

  [安装]

  WantedBy=多用户。目标设置文件权限:chmod 766 supservisor.service

  3 .为创建调度程序时出现未知错误

  原因是日志文件权限问题,指定具体输出文件并设置对应的日志权限即可

  4.unix:///tmp/supervisor.sock没有这样的文件的问题

  今天使用监督员命令,报出以上的错误信息,这是由于Linux操作系统操作系统会定期清理/tmp目录下的文件导致

  解决:

  1)修改配置文件

  vim /etc/supervisord.conf

  这里把所有的/tmp路径改掉,

  /tmp/supervisor.sock改成/var/run/supervisor.sock,

  /tmp/supervisord.log改成/var/log/supervisor.log,

  /tmp/supervisord.pid改成/var/run/supervisor.pid 2)修改权限

  chmod 777/运行

  chmod 777 /var/log 3)创建主管。袜子

  touch /var/run/supervisor.sock

  chmod 777/var/run/supervisor。袜子4)启动超级坏蛋,注意停止之前的实例或杀死进程

  超级遮阳板d-c/etc/超级遮阳板d . conf

  5.

  错误:无法打开超文本传送协议服务器:套接字。报告的错误错误号ENOENT (2)启动超级监管者服务的时候出现的错误

  原因:这是因为默认配置中的目录不存在(我的之前配置的是var/run下的一个超级监管者目录下的文件,由于服务重启目录被删除,所以需要首先创建该目录),配置【unix_http_server】文件配置项

  mkdir -p /var/run/supervisord

  然后执行启动服务启动命令即可

  超级遮阳板d-c/etc/超级遮阳板d/超级遮阳板d . conf

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: