暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux守护进程管理神器-supervisor

大侠之运维 2022-08-24
856

点击上方蓝字  关注大侠之运维


supervisor是python写的一款进程管理的程序,通过服务端supervisord去控制子进程,支持子进程的启动,关闭,重启,查看.


这款进程管理软件可以web页面查看进程状态,可以在页面上控制启停.


先来看张图,对服务器上的一些agent进行管理,也可以对一些web服务进程进行管理,可以查看一些简单的启动日志.




♦️

安装

安装的话,也比较简单,因为是python写的,可以直接pip安装

 

    pip install supervisor

     

    如果是centos系统,可以直接yum安装,也建议这种方式安装

    可以对服务端开启开机启动,上述方式还需要自行配置

      yum install supervisor

      #开启开机启动,主机异常宕机后,可快速恢复服务

        systemctl enable supervisord

        ♦️

        配置


        然后就是配置了,分为服务端配置以及子进程配置文件

         

        服务端配置文件,下面是一些默认的配置文件,web服务默认是关闭的,我这里打开了,建议内网服务可以开启.


          [root@test-3 supervisord.d]# cat etc/supervisord.conf |grep -v '^;'|grep -v '^$'
          [unix_http_server]
          file=/var/run/supervisor/supervisor.sock ; (the path to the socket file)
          [inet_http_server] ; inet (TCP) server disabled by default
          port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface)
          username=user ; (default is no username (open server))
          password=123 ; (default is no password (open server))
          [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)
          nodaemon=false ; (start in foreground if true;default false)
          minfds=1024 ; (min. avail startup file descriptors;default 1024)
          minprocs=200 ; (min. avail process descriptors;default 200)
          [rpcinterface:supervisor]
          supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
          [supervisorctl]
          serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
          [include]
          files = supervisord.d/*.ini

          比较关心的其实是子进程的配置文件了,默认是在这个目录下/etc/supervisord.d/*.ini

           

          看一个node_exporter的配置


            [root@test-3 supervisord.d]# cat node_exporter.ini
            [program:nodeexporter]
            command=/opt/node_exporter/node_exporter
            directory=/opt/node_exporter
            stdout_logfile=/opt/node_exporter/node_exporter.log
            autostart=true
            autorestart=true
            redirect_stderr=true
            user=root
            startsecs=3

            部分如需要添加环境变量的,可以这样添加

              environment=JAVA_HOME="/data/jdk-1.8",JAVA_BIN="/data/jdk-1.8/bin"

               

              更多其它配置,可以到如下地址去查看:

              http://supervisord.org/

               

              ♦️

              命令相关


              学习linux不管是那个命令吧,建议先执行 --help 查看对应的一些信息

              我们更多的是对子进程的一个操作,主要是supervisorctl命令


              下面是一些常用的到的指令


                supervisorctl status        //查看所有进程的状态
                supervisorctl stop redis //停止redis
                supervisorctl start redis //启动redis
                supervisorctl restart redis //重启redis
                supervisorctl update //配置文件修改后使用该命令加载新的配置
                supervisorctl reload //重新启动配置中的所有程序


                也可以直接执行supervisorctl命令进入交互页面





                👆点击查看更多内容👆


                推荐阅读

                生产elasticsearch 8.0部署文档

                elastalert2-ELK日志关键字监控实践

                kubernetes安装参考这篇就好了!!


                记得星标记一下,下次更容易找到我

                       



                文章转载自大侠之运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论