Linux配置Supervisor管理进程

版权声明:本文为博主原创文章,转载请 注上 http://blog.csdn.net/wzhwei1987 https://blog.csdn.net/wzhwei1987/article/details/83098718

Supervisor是由python语言编写,基于linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。

1、软件安装

supervisor

meld(python html模版引擎)

1、通过pip直接安装。[前提是已经安装了pip的python工具包]

pip2 install meld3

pip2 install supervisor

2、通过pypi官网下载:

meld3:

https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz#md5=3ccc78cd79cffd63a751ad7684c02c91

Supervisor:

https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz

下载解压,分别执行python setup.py install安装

2、配置

1、创建配置文件

echo_supervisord_conf > /etc/supervisord.conf

2、修改配置文件

# 增加web监控服务

[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))

3、启动监控

/usr/bin/supervisord -c /etc/supervisord.conf

访问浏览器ip:9001

4、配置supervisord的开机启动和管理脚本

 

首先关掉supervisord服务:

ps aux | grep supervisord

找到进程后kill -9 pid 否则一下配置脚本不生效。

vi /etc/init.d/supervisord

#!/bin/sh

#

# /etc/init.d/supervisord

#

# Supervisor is a client/server system that

# allows its users to monitor and control a

# number of processes on UNIX-like operating

# systems.

#

# chkconfig: - 64 36

# description: Supervisor Server

# processname: supervisord

 

# Source init functions

. /etc/rc.d/init.d/functions

 

prog="supervisord"

 

prefix="/usr"

exec_prefix="${prefix}"

prog_bin="${exec_prefix}/bin/supervisord"

PIDFILE="/var/run/$prog.pid"

 

start()

{

       echo -n $"Starting $prog: "

       ###注意下面这一行一定得有-c /etc/supervisord.conf   不然修改了配置文件根本不生效!

       daemon $prog_bin -c /etc/supervisord.conf --pidfile $PIDFILE

       [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"

       echo

}stop()

{

       echo -n $"Shutting down $prog: "

       [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"

       echo

}

case "$1" in

 start)

   start

 ;;

 

 stop)

   stop

 ;;

 

 status)

       status $prog

 ;;

 

 restart)

   stop

   start

 ;;

 

 *)

   echo "Usage: $0 {start|stop|restart|status}"

 ;;

 

esac

 

然后加入启动项

chmod +x /etc/init.d/supervisord

chkconfig --add supervisord

chkconfig supervisord on

service supervisord start

####

这样就可以通过service supervisord  start | stop |restart 来管理supervisord了。

5、监控服务

 

# 增加监控程序

[program:tail1]                                                                            

command=tail -f  /opt/access.log   ;常驻后台的命令

autostart=true                           ;是否随supervisor启动

autorestart=true                         ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!

startretries=3                           ;启动尝试次数

stderr_logfile=/tmp/tail1.err.log        ;标准输出的位置

stdout_logfile=/tmp/tail1.out.log        ;标准错误输出的位置

# 也可以监控目录下配置文件,监控/etc/supervisord.d/目录下conf后缀文件,conf中配置监控程序

[include]

files=/etc/supervisord.d/*.conf

 

​​​​​​​6、添加flume支持

在/etc/supervisord.conf里

添加:

[include]

files=/etc/supervisord.d/*.conf

 

mkdir /etc/supervisord.d

vi /etc/supervisord.d/flume.conf

 

[program:flume]

command=sh /opt/apache-flume/bin/flume-ng agent --conf /opt/apache-flume/conf/ -f /opt/apache-flume/conf/busi.conf -n busi

autostart=true                           ;是否随supervisor启动

autorestart=true                         ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!

startretries=3                           ;启动尝试次数

stderr_logfile=/tmp/flume.err.log        ;标准输出的位置

stdout_logfile=/tmp/flume.out.log        ;标准错误输出的位置

 

重启服务即可。

 

7、Kafka支持:

/etc/supervisord.d/kafka.conf

 

[program:kafka]

command=/bin/bash -c 'source /etc/profile && /home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties'

user=kafka

autostart=true

autorestart=true

startretries=3

directory=/home/kafka/kafka/

stderr_logfile=/home/kafka/kafka/kafka.err.log

stderr_logfile_maxbytes=1MB

stdout_logfile=/home/kafka/kafka/kafka.out.log

stdout_logfile_maxbytes=1MB

​​​​​​​8、supervisorctl管理程序进程

 

1、更新新的配置到supervisord    

supervisorctl update  

2、重新启动配置中的所有程序

supervisorctl reload  

3、启动某个进程(program_name=你配置中写的程序名称)

supervisorctl start program_name  

4、查看正在守候的进程

supervisorctl  

5、停止某一进程 (program_name=你配置中写的程序名称)

pervisorctl stop program_name  

6、重启某一进程 (program_name=你配置中写的程序名称)

supervisorctl restart program_name  

7、停止全部进程

supervisorctl stop all  

 

 

使用普通用户执行supervisorctl status会提示如下错误

error: <class 'socket.error'>, [Errno 13] Permission denied: file: /usr/local/lib/python2.7/socket.py line: 228

在Permession denied error when use supervisorctl #173里找到如下解决办法

[unix_http_server]

file=/tmp/supervisor.sock   ; (the path to the socket file)

chmod=0766                 ; socket file mode (default 0700)

就是修改sock的权限

猜你喜欢

转载自blog.csdn.net/wzhwei1987/article/details/83098718