supervisor 安裝配置實戰

1·Supervisor介紹
Supervisor是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它可以很方便的監聽、啓動、停止、重啓一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。
這個工具主要就兩個命令:

    supervisord : supervisor的服務器端部分,啓動supervisor就是運行這個命令

    supervisorctl:啓動supervisor的命令行窗口。

2·安裝
centos 平臺可以直接使用yum源安裝
yum install supervisor
添加服務自啓動
chkconfig supervisord on

3·服務器啓停
/etc/init.d/supervisord {start|stop|status|restart|reload|force-reload|condrestart}

4·主配置文件

vim /etc/supervisord.conf
包含如下幾個可配置部分
[unix_http_server]
[inet_http_server]
[supervisord]
[supervisorctl]
[program:x]
[include]
[group:x]
[fcgi-program:x]
[eventlistener:x]
[rpcinterface:x]
需要重點關注的是以下兩部分
[program:x]中配置要監控的進程
[group:x] 將要監控的進程分組
這裏列出常用的參數解釋:
[unix_http_server]
file=/tmp/supervisor.sock ;UNIX socket 文件,supervisorctl 會使用
;chmod=0700 ;socket文件的mode,默認是0700
;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid

;[inet_http_server] ;HTTP服務器,提供web管理界面
;port=127.0.0.1:9001 ;Web管理後臺運行的IP和端口,如果開放到公網,需要注意安全性
;username=user ;登錄管理後臺的用戶名
;password=123 ;登錄管理後臺的密碼

[supervisord]
logfile=/tmp/supervisord.log ;日誌文件,默認是 $CWD/supervisord.log
logfile_maxbytes=50MB ;日誌文件大小,超出會rotate,默認 50MB,如果設成0,表示不限制大小
logfile_backups=10 ;日誌文件保留備份數量默認10,設爲0表示不備份
loglevel=info ;日誌級別,默認info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ;pid 文件
nodaemon=false ;是否在前臺啓動,默認是false,即以 daemon 的方式啓動
minfds=1024 ;可以打開的文件描述符的最小值,默認 1024
minprocs=200 ;可以打開的進程數的最小值,默認 200

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ;通過UNIX socket連接supervisord,路徑與unix_http_server部分的file一致

一般使用是將管理的程序的配置文件寫在子文件夾中,字文件夾中寫你需要具體管理的程序的配置信息
包含其它配置文件
[include]
files = /etc/supervisord.d/*.ini;可以指定一個或多個以.ini結束的配置文件

5·子配置文件(具體服務管理的文件)
cd /etc/supervisord.d/

#program:後面寫的是管理的服務的名稱
[program:saas-tomcat]
#啓動的命令
command=/usr/local/apache-tomcat-7.0.64/bin/catalina.sh run
#supervisord的環境變量
environment=JAVA_HOME="/usr/local/jdk/",JAVA_BIN="/usr/local/jdk/bin"
#是否有多進程,有多進程,需要額外添加一個參數去定義,爲1是沒有多進程
numprocs=1
#發送停止的信號
stopsignal=INT
#程序的目錄
directory=/usr/local/apache-tomcat-7.0.64/
#用戶
user=www-data
#是否重定向錯誤輸出到stdout,一般會配置此項目,這樣當查看程序日誌的時候就不需要看兩個日誌文件,只需要看一個日誌即可
redirect_stderr=true
#服務日誌存放的路徑
stdout_logfile=/data/log/tomcat/catalina-supervisor.out
#日誌大小限制,爲0代表不限制可以無限增長
stdout_logfile_maxbytes=0
#備份30天的日誌,
stdout_logfile_backups=30
#當服務停止的時候要不要停止所管理的服務,下面兩個都是這個意思
stopasgroup=true
killasgroup=true

注意:上面的日誌是無限增長的,不會切割,代表日誌會一直變大,而且會放在一個文件中,所以一般會結合logrotate,對日誌每天進行切割
下面貼上logrotate的配置:
cat /etc/logrotate.d/tomcat
/data/log/tomcat/*.out {
daily #每天進行切割
compress #是否採用gzip進行壓縮
copytruncate #用於還在打開中的日誌文件,把當前日誌備份並截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日誌數據
notifempty #當日志文件爲空時,不進行輪轉
rotate 15 #保留15天的日誌
missingok # 表示如果找不到log文件也OK
}

6、日常運維命令
配置文件更改之後,需要執行這個命令才能生效
supervisorctl update

查看服務的狀態
supervisorctl status

啓動停止服務的命令
supervisorctl (start|stop|restart)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章