1. 程式人生 > >Linux配置Supervisor管理程序

Linux配置Supervisor管理程序

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的許可權